mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 27 Aug 2026

beads review

Beads is a command-line issue tracker designed to give coding agents persistent tasks, dependencies, decisions, and handoff context inside a project. It stores the working graph in Dolt, so agents can ask what is ready, claim work, record history, and sync the database across clones without relying on a long Markdown checklist.

+163stars / 7d
Verdict

Our Beads run installed 668 packages and built in 162 seconds, but 17 of 150 test groups failed after 464 seconds. Its dependency graph and agent integrations solve a real continuity problem, yet Dolt storage, schema coordination, and the current claim race make it an operational system rather than a fancy TODO file. Use it for long-running agent work only after pinning v1.2.2, testing backup and recovery, and adding arbitration around parallel claims.

We ran it

Lab card: what happened when we ran beadsScreenshot of beads (beads.gascity.com)
Install✓ · 117s668 packages
Build✓ · 162s
Tests✗ · 464s133 passed · 17 failed of 150 (go test)
Repo3635 files~837,819 lines of source · 36 MB · 18 CI workflows · tests dir

Answers from our run

Does beads build from source?

Dependencies installed in 117 seconds (668 packages), and the build succeeded in 162 seconds. We cloned commit 62d2119 into a clean Debian container with 3 CPUs and no project-specific setup.

Do beads's tests pass?

Not all of them: 133 of 150 passed and 17 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use beads?

Teams wanting a conventional web issue tracker with permissions and a polished shared UI: Beads is CLI-first and lists UIs as community tools.

What are the alternatives to beads?

GitHub Issues, Taskwarrior, Plane. Our Beads run installed 668 packages and built in 162 seconds, but 17 of 150 test groups failed after 464 seconds.

Setup3/5Release installs are easy; source and Dolt operations are heavier
Docs5/5Storage, sync, upgrade, recovery, and agent setup are detailed
Community4/526,631 stars and active work, with 796 issues and PRs
Maturity2/5Recovery release, claim race, and 17 failed test groups

Who it’s for

Developers running coding agents across sessions who lose task state in chat context.
Multi-agent operators who need dependency-aware work queues and explicit claims.
Teams comfortable keeping a Dolt-backed issue database beside source code.
Claude Code, Codex, Cursor, and MCP users who want agent-specific setup paths.

Who it’s NOT for

Teams wanting a conventional web issue tracker with permissions and a polished shared UI: Beads is CLI-first and lists UIs as community tools.
Parallel workers assuming bd ready --claim is exclusive: open issue 5998 reproduces two simultaneous callers receiving the same task.
Users who treat .beads/issues.jsonl as the database or normal sync channel: the docs call it an export and make Dolt the source of truth.
Operators who upgrade every machine independently: the upgrade guide assigns one clone to schema migration, and v1.2.2 exists to recover from accidental v1.2 releases.
Solo users unwilling to accept a database engine for local tasks: even embedded mode stores an in-process Dolt database.

Setup reality

Our sandbox installed 668 Go packages in 117 seconds and built in 162 seconds. Tests failed after 464 seconds: 133 passed and 17 failed of 150. The 36 MB checkout contained about 837,819 source lines.

Most users should install a release through Homebrew, npm, mise, or the checksum-verifying script rather than build this repository. bd init uses embedded Dolt for one writer; concurrent writers need server mode and a separate pinned Dolt server.

The failing log tail shows github.com/steveyegge/beads/issueops ended with build failed, followed by several passing packages and a final FAIL. It does not include the compiler diagnostic or explain the other 16 failed groups, so we cannot assign causes from that tail.

Beads keeps agent work in a dependency graph instead of a checklist

Beads gives coding agents a persistent issue model with statuses, priorities, dependencies, parent-child relationships, claims, comments, and audit history. bd ready finds work with no open blockers, bd update --claim assigns it, and bd close releases downstream tasks. bd prime prints workflow context and remembered decisions into a new agent session. Hash-based IDs reduce collisions when separate branches create tasks.

The model is useful when work lasts longer than one context window or moves between agents. It also asks the team to treat task state as structured data. Agents must update records consistently, humans need commands or a community UI to inspect them, and project instructions must tell every participant that Beads exists. bd init writes or updates AGENTS.md by default and can install Claude and Codex integrations unless users choose stealth or skip-agent options.

Embedded Dolt supports one writer, while fleets need a server

The default database runs Dolt inside the bd process and stores data under .beads/embeddeddolt/. It requires no separate service, but it permits one writer at a time. Server mode connects multiple clients to dolt sql-server and stores data in a different project directory. That is the intended route for orchestrators or several agents writing concurrently.

Cross-machine sync uses bd dolt push and bd dolt pull against refs/dolt/data, separate from ordinary source branches. The JSONL file is an export for viewers, interchange, and migration. It cannot represent deletions reliably through upsert-only import and does not preserve Dolt branches, full history, working state, or non-issue tables. A backup uses bd backup, not a copied JSONL file.

What happened when we ran it

Our sandbox installed 668 Go packages in 117 seconds and built commit 62d2119 in 162 seconds. The checkout contained 3,635 files, roughly 837,819 lines of source, and occupied 36 MB. It had 18 CI workflow files and a tests directory. Our scan found no Dockerfile.

Tests ran for 464 seconds and exited with code 1. The harness recorded 133 passing and 17 failing groups out of 150. The supplied tail identifies github.com/steveyegge/beads/issueops as a build failure, then lists successful schema, scripts, migration, and documentation packages before the final failure. It does not show the compiler error or details for the remaining failed groups, so the measured conclusion is limited to an unclean suite.

The easiest install avoids the 668-package source build

Homebrew, npm, mise, and release scripts install the CLI without cloning the repository. The shell and PowerShell installers verify release checksums. Go installation has two distinct outputs: a no-CGO binary works only with an external Dolt server, while the CGO build includes embedded mode and needs a C compiler. Released Go modules retain the old github.com/steveyegge/beads path after the repository moved to gastownhall.

Claude Code can add a plugin with slash commands, while bd setup claude installs the normal CLI hooks. Codex setup writes a skill, AGENTS.md guidance, and native hooks. The MCP server is intended mainly for clients without shell access; the installation guide prefers the CLI for lower schema overhead and smaller context use. These paths can coexist, but most projects should pick one standard integration so agents receive the same instructions.

Version 1.2.2 is a rollback disguised as a forward release

The August 15, 2026 release is unusually candid. Versions 1.2.0 and 1.2.1 were published accidentally without release testing. Version 1.2.2 reissues tested 1.1.2 code under a higher number so package channels move forward. Features unique to the accidental line, including work leases, an event journal, sync federation, an HTTP API, and provenance events, are absent until they return through a tested release.

Running v1.2.1 once could migrate a local database from schema 53 to 65, leaving v1.2.2 unable to open it without recovery. The release directs users to roll back the schema cursor and warns that every machine must upgrade before recovery, or an old binary can silently migrate it again. That episode makes backups and coordinated upgrades mandatory for teams, not optional administration.

Parallel claim is not exclusive in the current server workflow

The README describes bd update --claim as atomic, but open issue 5998 reports a race in bd ready --claim. Two simultaneous v1.2.2 callers against one shared Dolt server both received the same bead, even though settled state later showed it claimed. The reporter uses a marker-comment arbitration workaround so only one worker proceeds.

That distinction matters for automated fleets. A database can end in one valid state while two agents already started the same expensive or conflicting work. Until a transactional compare-and-swap is verified, do not use the combined ready-and-claim command as the only dispatch lock. Add external arbitration, assign disjoint labels, or serialize dispatch. Also test failure recovery so a worker crash does not leave a task claimed forever.

Active development does not cancel the recovery cost

GitHub showed 26,631 stars, 796 combined issues and pull requests, and a last push on August 27, 2026. That is current activity, while the large queue reflects both scope and churn rather than 796 confirmed defects. Recent reports cover Windows backup URLs, empty-note replacement, concurrent claims, server status, and filesystem exhaustion.

Beads is appealing when agent continuity has become a larger problem than operating one more developer tool. The graph, readiness queries, audit trail, and session injection are better suited to long work than scattered Markdown. Our 17 failed groups and the recovery release argue for a controlled trial first. Pin binaries across machines, use a real Dolt backup, test a restore, and keep fleet dispatch guarded outside Beads until the claim race is closed.

Alternatives

ProjectWhat it isPick it when
GitHub IssuesA hosted issue tracker tied to repository accounts, permissions, discussions, and pull requests.pick this instead when human collaboration, web access, notifications, and repository permissions matter more than agent-local operation.
TaskwarriorA mature local command-line task manager with filters, priorities, and scripting support.pick this instead when one person needs a fast CLI task list without an agent-specific dependency graph or Dolt.
Plane gh↗A self-hostable web project-management system for issues, cycles, modules, and team workflows.pick this instead when a browser-based team workspace is more important than task state embedded in agent sessions.

What people are saying

  1. [github-trending] gastownhall/beads

Sources

  1. Beads README
  2. Beads v1.2.2 recovery release
  3. Beads installation guide
  4. Beads Dolt backend guide
  5. Concurrent claim race report

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →