Best practices for organizing GitLab-maintained agents and flows
Problem Statement
We are actively building GitLab-maintained agents and flows for the Duo Agent Platform, but we lack documented standards for where these should live and how they should be organized. This creates several immediate problems:
Why this matters now:
-
Teams are blocked or making inconsistent decisions - Without clear guidance, different teams may choose different organizational structures, leading to:
- Inconsistent user experience when discovering/using GitLab-maintained content
- Difficulty maintaining and updating agents/flows across different locations
- Confusion for contributors about where to submit improvements
-
We risk technical debt - If we build agents/flows without a clear structure now, we'll face costly refactoring later when we need to:
- Migrate projects to a standardized location
- Restructure repositories and update all references
- Fix broken dependencies and catalog links
-
Community contribution is unclear - Without documented standards, potential contributors don't know:
- Where to find the source code for GitLab-maintained agents/flows
- How to fork or contribute improvements
- What the approval and ownership process looks like
-
Scalability concerns - As we add more agents and flows, an ad-hoc approach will become unmaintainable:
- No clear ownership model
- Inconsistent versioning and release processes
- Difficulty tracking what's officially maintained vs. experimental
-
Immediate permission challenges - Currently only @marin can enable agents/flows and is out of office until end of March, blocking progress
What we need to decide:
We need to establish and document clear standards before we scale up agent/flow creation, covering:
- Location: Which GitLab group(s)/project(s) should host GitLab-maintained agents and flows?
- Project structure: Should each agent/flow have a dedicated project, or can multiple agents/flows live in the same project?
- Naming conventions: How should projects/groups be named?
- Ownership and permissions: Who maintains these projects and what access controls should be in place?
- Versioning and releases: How should GitLab-maintained agents/flows be versioned and released?
Background
The AI Catalog (https://gitlab.com/explore/) is established as the centralized place for all GitLab catalogues, including the Agents and Workflow Catalogue. However, the underlying project structure and organization standards for GitLab-maintained content are not clearly documented.
Related context:
- #554595 mentions the AI Catalog as the north star location for discovery
- Navigation discussions in #550186 (closed) and #550927 (closed) address UI placement but not underlying structure
- Documentation shows the catalog as a discovery mechanism but doesn't specify source project organization
Proposal
Based on discussion with @amandarueda and learnings from the CI component contributor success model:
Location and Structure
Use the @components top-level group with a dedicated subgroup for agents and flows:
- Create
@components/agents-and-flowssubgroup to organize all GitLab-maintained agents and flows - Each agent/flow gets a dedicated project within this subgroup
- Leverage existing https://gitlab.com/components/ai-catalog infrastructure built by contributor success
Why this approach:
- Solves permission challenges: Uses the proven CI component model with built-in approval processes
- Separation of concerns: Dedicated projects allow independent CI, permissions, and configuration without juggling "other things" in the repo
- Leverages existing infrastructure: The
@componentsgroup already has:@gitlab-botautomations configured- Data consumption patterns for community contributions
- Established workflows and tooling
- Built-in benefits: Diffs, audit trails, and approval processes come for free
- Consistency: Aligns with how CI/CD components are already organized
Project Structure
- Dedicated project per agent/flow for:
- Independent versioning and release cycles
- Clear ownership boundaries
- Simpler CI/CD pipelines
- Easier forking and contribution
Next Steps
- Confirm approval from CI component maintainers to share the
@componentstop-level group - Create
@components/agents-and-flowssubgroup - Document standards and create templates
- Begin migrating/creating agents and flows following this structure
Questions to Answer
1. Where should GitLab-maintained agents and flows live?
Decision: @components/agents-and-flows subgroup
Options considered:
A singlegitlab-org/duo-agentsproject containing all agentsA singlegitlab-org/duo-flowsproject containing all flowsAgitlab-org/duo-cataloggroup with separate projects per agent/flowDistributed across relevant stage groups (e.g., security agents ingitlab-org/secure)
2. Should each agent/flow have a dedicated project?
Decision: Yes, dedicated project per agent/flow
Benefits:
✅ Independent versioning✅ Clear ownership✅ Simpler CI/CD✅ Easier to fork/contribute✅ Separate configuration and permissions
3. What naming conventions should we use?
To be documented based on @components group standards.
Examples to consider:
@components/agents-and-flows/code-review-agent@components/agents-and-flows/ci-pipeline-fix-flow
4. How should ownership and permissions be structured?
Leverage the existing @components group model:
- Use established approval processes from CI component workflow
- Configure
@gitlab-botautomations - Define maintainer roles per project
5. How should versioning and releases work?
To be documented based on CI component patterns:
- Semantic versioning for each agent/flow
- Independent release cycles per project
- Version pinning in the catalog
Success Criteria
- Clear documentation of where GitLab-maintained agents and flows should be created
- Established project structure standards (dedicated projects)
- Naming convention guidelines documented
- Ownership and permission model defined
- Versioning and release strategy documented
- Template projects or examples created for teams to follow
- Migration plan for any existing agents/flows that don't follow the standards
- Approval from CI component maintainers to use
@componentsgroup
Related Issues/Epics
- #554595 - Create Compatible Model / Platform Catalogue
- #550186 (closed) - AI Platform Navigation
- #550927 (closed) - Duo Agent Platform - Define navigation/IA for GA
- #584017 (closed)
- #587004
- #585428 (closed)
Additional Context
This decision will impact:
- Internal teams building GitLab-maintained agents and flows
- Community contributors who want to contribute to or fork GitLab-maintained content
- Users who consume these agents/flows from the AI Catalog
- The overall maintainability and scalability of the Agent Platform ecosystem
Reference: CI component infrastructure at https://gitlab.com/components/ai-catalog