Flows: Allow alternate container registry configuration for enterprise environments
# Problem Statement
Foundation flows (e.g., "Fix Pipeline") are **completely unusable** in enterprise environments that block external container registries. The flows are hardcoded to pull executor images from `registry.gitlab.com`, which is forbidden in many regulated enterprise networks.
## Customer Impact
**A major financial institution** (Ultimate, Self-Managed 18.5) reported on Dec 8, 2025:
> *"This feature is currently **unusable** in our environment."*
>
> *"The flow is pre-defined, and no way for us to change anything. When triggered, this flow tries to download the image from `registry.gitlab.com`, which is **forbidden** in our network. We provide users with our own custom built images, and would like that to be used."*
**Error observed:**
```
ERROR: Job failed: failed to pull image "registry.gitlab.com/gi..."
```
## Why This Is Critical
| Factor | Impact |
|--------|--------|
| **Complete Feature Blocker** | "Fix Pipeline" foundation flow is 100% unusable |
| **No Workaround Available** | Foundation flows are hardcoded - admins cannot override |
| **Enterprise Pattern** | Major banks/enterprises block external registries by default |
| **Air-gapped Networks** | Cannot reach `registry.gitlab.com` at all |
| **Compliance Requirements** | Only approved, internally-scanned images allowed |
| **Self-Managed Focus** | DAP for self-managed is a key differentiator - this breaks it |
## Affected Customers
- **Multiple enterprise customers** - Confirmed blocked (Dec 2025)
- **Likely affected**: Any enterprise with:
- Network egress restrictions
- Air-gapped or restricted network environments
- Security policies requiring internal container registries
- Compliance requirements for pre-approved images only
## Current Behavior
1. User triggers "Fix Pipeline" foundation flow
2. Flow attempts to pull executor image from `registry.gitlab.com`
3. Network policy blocks the request
4. Job fails with `failed to pull image` error
5. **No admin override possible** - flow definition is hardcoded
## Expected Behavior
Admins should be able to configure alternate container registries for foundation flow executors at:
1. **Instance level** - Default registry for all foundation flows
2. **Group/Project level** - Override for specific namespaces
3. **Flow-specific** - Override for individual foundation flows
## Chosen Solution
### Option A: Instance-Level Configuration (Minimum Viable, Chosen Solution)
Add admin setting under **Admin > Settings > CI/CD** or **Admin > Settings > Duo Agent Platform**:
```
Foundation Flow Executor Registry: [____________]
Default: registry.gitlab.com
```
## Alternative Solutions
### Option B: Hierarchical Configuration (Potential Follow up)
Allow configuration at multiple levels with inheritance:
| Level | Setting | Example |
|-------|---------|---------|
| Instance | `duo_agent_platform.foundation_flow_registry` | `internal-registry.example.com` |
| Group | Override instance default | `team-registry.example.com` |
| Project | Override group default | `project-specific-registry.example.com` |
### Option C: Mirror Documentation (Can be used as individual fallback for affected customers)
Document how enterprises can:
1. Mirror GitLab's foundation flow images to internal registry
2. Configure GitLab Runner to use registry mirrors
3. Use pull-through cache proxies
## Technical Considerations
- Foundation flow executor images need to be published with versioned tags
- Image digests should be documented for security scanning
- Consider Helm chart values for Kubernetes deployments
- Runner configuration may need `pull_policy` adjustments
## Acceptance Criteria
- [ ] Admin can configure alternate container registry for foundation flows
- [ ] Configuration works at instance level (minimum)
- [ ] Foundation flows use configured registry instead of `registry.gitlab.com`
- [ ] Documentation updated with enterprise deployment guidance
- [ ] Migration path documented for existing deployments
## Customer Request
> *"A way for admins to **predefine the foundation flows** would be a good feature for self-managed."*
> — Enterprise customer, Dec 2025
## Related Context
- This is part of broader enterprise readiness for DAP
- Similar patterns exist for GitLab Runner registry configuration
- Affects all foundation flows, not just "Fix Pipeline"
issue