A shared work queue your coding-agent sessions pull from.
One item, one agent. Nothing done twice, nothing dropped.
August 2026 · Storage and issue graph by Beads
Ever had two agent sessions quietly redo each other’s work?
Or closed your laptop and lost whatever one of them was halfway through?
Neither of those throws an error. That’s the whole problem — every failure mode here is silent. You find out later, in the diff, or not at all.
Three or five sessions on one project. Each grabs a different piece. Nothing gets done twice.
Drop “search feels slow lately” in at midnight. A session picks it up tomorrow, specs it properly, works it.
An agent notices three other things wrong mid-fix — and files them, instead of quietly fixing them all or forgetting them.
A session waiting six hours on your answer keeps its claim. One that actually died gives its work back.
Every session asks the same question — “what should I work on?” — and each one gets a different answer. That property is the whole product.
The fix isn’t documentation telling agents to be careful. Every claim is one atomic call — there is no check-then-act path. Name a specific item or let the queue pick; either way exactly one agent wins, and the losers are told so.
Agents racing for the same item, using the two-step shape. Runs that produced a double-claim, across three batches:
In those runs, 2–3 agents each got exit code 0 on the same item. Only one was really the holder. The losers get no error — they go do real work on something they don’t own.
One call decides the winner. Everyone else is told plainly there’s nothing for them. There is no second step to get wrong, and no id-shaped door to walk through.
A session that works autonomously for hours and then sits waiting on your answer looks exactly like a healthy session — because it is one. A session whose process is gone stops renewing, and its work goes back so somebody else can pick it up.
A report and its engineering issue are linked objects, not two notes that happen to say similar things. Nobody has to remember who asked.
Steve Yegge’s Beads is a git-native issue tracker designed for AI agents. It does the storage and the issue-graph work — the hard, unglamorous parts that everything here rests on.
Git-native storage and the issue graph — the hard, unglamorous layer everything here sits on.
The agent-facing surface: atomic claiming, liveness-based custody, the feedback round trip — and a tool shape that makes the wrong move unreachable.
github.com/gastownhall/beads · thank you, genuinely
Each run: a brand-new container with nothing installed — no bd, no dolt, no CLI, no state — composing only the bundle. Each run exposed defects. Each was fixed. Raw storage-layer calls, per run:
| Run 1 | Run 2 | Run 3 | Run 4 | Run 5 | |
|---|---|---|---|---|---|
| Raw storage calls | 12 | 6 | 4 | 0 | 0 |
| Cost per run | $3.63 | $1.32 | $1.30 | $0.62 | $0.56 |
| Turns | 51 | 27 | 28 | 13 | 12 |
Then say to a session:
The session installs whatever it needs and sets itself up. That’s the whole onboarding — it’s what those five cold-start containers did, with nothing preinstalled.
August 2026. Feature status: Active. Repository: microsoft/amplifier-work-tracker (public, main green).
Contention figures come from deliberate races against the two-step claim shape. Cost, turn, and storage-call figures come from five cold-start container runs, each composing only the bundle from one generic prompt.
Every figure in this deck is reported exactly as measured — nothing rounded for effect, nothing extrapolated:
Double-claims: 5-of-6, 3-of-6, 2-of-8 trial runs, with 2–3 agents each receiving exit code 0. Atomic claim: clean in every trial. Custody: renewal every 120s against a 900s TTL. Storage calls: 12 → 6 → 4 → 0 → 0. Cost: $3.63 → $1.32 → $1.30 → $0.62 → $0.56. Turns: 51 → 27 → 28 → 13 → 12.
No commit counts, contributor breakdown, line counts, or adoption numbers are claimed here — those weren’t measured, so they aren’t shown. The five cold-start runs measure onboarding from zero; they are not a benchmark of sustained multi-week use.