Three agents, one codebase. Nobody starts from zero.
Claude starts a task, records a decision and a dead end, then runs out of context. Codex picks it up from a small context pack instead of re-reading the repo, finishes it, and Gemini reviews. Every command output below is what the daemon returned.
Loading the recording…
Tasks in shop
In the margin
What you just watched, and why it matters.
The why survives the handoff
Claude's decision and dead end were the first thing Codex received, anchored to pricing.py:line_total and pricing.py:total, and marked "changed since recorded" where the code had moved on.
Packs fit, deterministically
No LLM chooses the context. Seeds, a reference graph and a token budget do, so the same state always gives the same pack, and every pack has a receipt.
Agents can't trip over each other
One jj workspace per task, claims that fence off stale writers, approvals bound to a tested head, and main that only moves through merge.
Recorded – with scripts/demo-replay.py against a daemon on an empty database, on a toy repository. The captions are ours; each output is the daemon's, with host paths shortened and long packs trimmed. Semantic search was off for this run.