Welcome
A SQLite-backed issue tracker for coordinating AI coding agents on a single machine.

clu is a small, fast, single-binary CLI for tracking work across multiple AI
coding agents running on the same project. It's backed by a local SQLite
database — no daemon, no server, no account, no network.
It exists for one reason: when you run more than one AI coding session against the same repo, they need a shared, durable place to:
- pick up work without stepping on each other (atomic claim),
- record what they tried, what worked, what didn't,
- gate risky steps behind human approval,
- surface what's unblocked vs. waiting on something else.
At a glance
| Single binary, pure Go | SQLite via modernc.org/sqlite — no CGo, no system libs. |
| Local-first | One file: .clu/data.sqlite. Commit config.yaml, gitignore the DB. |
| Atomic claim | UPDATE … RETURNING with subquery — racing agents get different issues. |
| Capability routing | Agents declare capabilities in config.yaml; cap:foo labels flow to matching agents. |
| Cascading cancel | clu cancel <id> walks the dep graph forward and cancels the whole tail. |
| Bulk graph instantiation | clu batch turns one JSON doc into a whole validated graph (thousands of issues + deps) in one transaction. |
| Workflow templates | YAML graphs of issues + deps with optional human-approval checkpoints. |
| JSON everywhere | Every command takes --json and emits exactly one JSON value to stdout. |
| No network | No telemetry, no sync, no cloud. Share a tracker? Copy the file. |
Next
- Install — get the binary.
- Quickstart — run the core loop.
- Multi-agent setup — declare agents, route work.
- Workflows — YAML templates for repeatable graphs.
- Importing & bulk graphs —
clu batch+ piping from Linear / Notion. - Recipes — common end-to-end patterns.
Not in scope
clu is deliberately small. It does not try to be:
- a cross-machine sync layer — copy the file or layer something on top
- a generic project-management tool — no sprints, OKRs
- a live bridge to GitHub / Linear / Jira — there's no two-way sync (though you can import from anything by piping a generated graph to
clu batch) - an agent runtime — you are the agent;
clujust gives you somewhere to put the work