STEVEY // FIELD MAP
← field map
AI ERA2025

Introducing Beads

Steve Yegge · Oct 13, 2025 · Medium
TL;DR — Coding agents have no memory between sessions, and a session only lasts about ten minutes before the context window compacts. Real engineering work spans dozens of those sessions, so agents forget where they were, lose the work they discovered, and declare victory early. Markdown plan files were the folk cure — until Yegge counted 605 of them rotting in one folder. Beads (bd) is his fix: a tiny, git-backed, JSON-first issue tracker built for agents, where dependencies are first-class and bd ready --json hands the agent its next unblocked task. Persistent external memory instead of lost context.

Most "agent memory" pitches reach for vector databases and clever retrieval. Yegge's move is more mundane and more convincing: give the agent a real issue tracker — dependency graph, git history, JSON queries — and let it manage its own work the way a disciplined engineer would.

The amnesia problem

The whole essay hangs on one uncomfortable fact about how agents actually run. A coding agent doesn't carry a project in its head; it carries a context window, and that window collapses every few minutes. Every compaction is a small stroke.

"The problem we all face with coding agents is that they have no memory between sessions — sessions that only last about ten minutes. It's the movie Memento in real life, or Fifty First Dates."Introducing Beads

Any task worth doing outlasts a single window. Tests, reviews, and cleanup drag a "small feature" across many sessions — and somewhere in the middle the agent forgets the plan, skips the follow-through, and cheerfully announces the system is done.

Why markdown plans don't scale

The community's first answer was to write the plan down: hand the agent a plan.md, let it check off steps, resume from the file next session. Yegge went all-in on this — a whole directory of plans under git — and watched it rot. Prose plans decay, contradict each other, and force the agent to re-read and mentally parse them every time just to figure out what's still blocked.

"By the time I finally found a solution that works — Beads — I discovered I had six hundred and five markdown plan files in varying stages of decay in my plans/ folder."Introducing Beads

605 files is the punchline, but the real diagnosis is underneath it: a plan written as prose is not a data structure. You can't query it, you can't reliably diff it, and an agent can't ask it "what's ready?" without re-reading the whole pile.

What Beads actually is

Beads is not a framework or an orchestrator — Yegge scrapped a heavyweight one on the way here. It's a small command-line issue tracker, bd, that stores issues as plain JSONL versioned in git (with Dolt underneath for real version-controlled sync). No server to run, no vector store to tend; it rides along in the repo the agent is already working in.

"Beads is an incredibly small-footprint, drop-in upgrade for your favorite coding agent."Introducing Beads

Because the store is JSONL in git, it inherits everything git already gives you: history, branching, review, and sync across machines and across parallel agent sessions. The memory isn't bolted onto the agent — it lives with the code.

Memory you can query

The difference between a plan and a tracker is that a tracker knows its own shape. Beads models issues with explicit parent/child and blocking relationships, so "what can I work on right now" is a query, not a reading-comprehension exercise. The agent asks bd ready --json and gets a definitive list of unblocked work back — machine-readable, no prose to parse.

"Dependencies are first-class, not prose."Introducing Beads

The second-order effect is the interesting one. When an agent notices something broken mid-task, it doesn't have to choose between derailing and forgetting — it files an issue, links it as discovered work, and keeps going. Work that used to evaporate at the next compaction now persists as a row someone (human or agent) will pick up later. It also makes shortcuts harder to hide: skipped steps become open issues, not silent gaps.

Does it actually work — and one caveat

Yegge's claim is blunt: the thing he'd been fighting for months mostly dissolved once the agent had a queryable external memory to plan against.

"Long-term planning — the dementia/amnesia problem we discussed — has been one their primary struggles, and this little specialized issue tracker solved it in seemingly the snap of a finger."Introducing Beads

Read it with the enthusiasm discounted. Beads is young, largely agent-built, and grew fast enough that hype outran hard data — "snap of a finger" is a testimonial, not a benchmark. The durable idea survives the hype anyway: agents don't need smarter recall so much as an external, structured, versioned place to put state — and an issue tracker with a real dependency graph is a remarkably boring, remarkably good place to put it.

Companion note: this field map's own workflow runs on Beads. Igor's igor2 repo tracks all work in bd — Dolt-backed, bd ready --json for ready work, discovered-from links for work found mid-task — which is exactly the "persistence you don't need beats lost context" bet Yegge is making here. See Steve Yegge on GitHub.