How the AI Agent Pipeline Works
GitLab issues and comments are the entire interface. There is no separate dashboard or CLI: every action begins with an issue, a comment, or a merge request.
Trigger
- HumanGitLab: open issue (type::feature / type::bug / type::chore)
- GitLabOrchestrator: Issue webhook event
- OrchestratorOrchestrator: run pipeline (background)
- OrchestratorGitLab: open merge request
- Human to GitLab: open issue (type::feature / type::bug / type::chore)
- GitLab to Orchestrator: Issue webhook event
- Orchestrator to Orchestrator: run pipeline (background)
- Orchestrator to GitLab: open merge request
Retry
- HumanGitLab: comment "/retry" on the issue
- GitLabOrchestrator: Note webhook event
- OrchestratorOrchestrator: re-run pipeline, reuse existing branch
- OrchestratorGitLab: update existing MR
- Human to GitLab: comment "/retry" on the issue
- GitLab to Orchestrator: Note webhook event
- Orchestrator to Orchestrator: re-run pipeline, reuse existing branch
- Orchestrator to GitLab: update existing MR
Fix
- HumanGitLab: comment "/fix <feedback>" on the MR
- GitLabOrchestrator: Note webhook event
- OrchestratorOrchestrator: resolve issue via "Closes #N" in MR description
- OrchestratorOrchestrator: seed feedback as a failed review verdict
- OrchestratorGitLab: update existing MR
- Human to GitLab: comment "/fix <feedback>" on the MR
- GitLab to Orchestrator: Note webhook event
- Orchestrator to Orchestrator: resolve issue via "Closes #N" in MR description
- Orchestrator to Orchestrator: seed feedback as a failed review verdict
- Orchestrator to GitLab: update existing MR
Merge & close
- HumanGitLab: merge the MR
- GitLabOrchestrator: Merge request webhook event
- OrchestratorGitLab: set workflow::done, prune merged branch locally
- Human to GitLab: merge the MR
- GitLab to Orchestrator: Merge request webhook event
- Orchestrator to GitLab: set workflow::done, prune merged branch locally
The Pipeline
Drag any node to inspect the execution graph. It will return to its resting position when released.
Issue opened
or /retry · /fix comment
Prepare
clone target repo,
checkout issue branch
Planner Agent
LLM breaks the issue
into ordered sub-tasks
Development Agent
delegates to OpenCode —
the only agent that writes code
Review Agent
automated checks first (fast, free),
LLM judgment only if those pass
Supervisor
deterministic — no LLM
Git Agent
commit, push,
open/update MR
Blocked —
flagged for human review
Merge request ready
Agents never talk to each other directly. Every agent reads from and writes to one shared state object (graph/state.py); the orchestrator — not the agents — decides what happens next.