Tutti
A local coordinator for multiple coding agents, using GitHub Issues as the workflow surface.
- Status
- Working
- Year
- 2026
- Role
- Solo project
- Built with
- TypeScript, GitHub API, SQLite, LLM agents
The problem
Running one coding agent is easy. Running several is not. The moment you have more than one, the hard part stops being the model and becomes coordination: which agent runs next, in what order, what work blocks what, and when a human needs to step in before something risky lands.
The approach
Tutti is a local coordinator that makes one deliberate choice: it does not invent a new
control plane. Every unit of work is a GitHub Issue, and the state lives in labels
(state:*, role:*, type:*, priority:*, override:*). The coordinator polls, reads
the labels, and dispatches the right agent. A Dispatcher classifies fresh issues, then
specialised roles take turns: researcher, PM, engineer, QA, and a merger that lands the PR.
state:* labels are the workflow.Technical challenges
- Safe handoffs. Each role writes something durable and flips labels to pass work on, so the workflow is a state machine whose state I can actually see.
- Knowing when to stop. Dependency gates hold work until blockers clear, human-verification pauses wait for a person at the risky points, and retry and loop detection catch agents that get stuck spinning.
- Forcing past gates safely. Operator overrides are explicit labels, so bypassing a gate is always a deliberate, visible act.
Outcome
A working coordinator where the agents and I look at the same board. When something goes wrong I am debugging in GitHub, a tool I already know, instead of a bespoke dashboard I would otherwise have to build and maintain.
What I’d do differently
Generalise the issue backend earlier. It started GitHub-specific, and pulling the workflow logic away from the backing service is cleaner as an adapter from day one.