Why Beads?
Flat issue trackers (GitHub Issues, Jira, etc.) show you a list of open items. You pick one. But if that item depends on something else that isn’t done yet, you’ve wasted time. Multiply this across a team of AI agents and humans, and you get thrashing. Beads tracks dependencies between issues and computes a ready queue — only items with no active blockers appear. Here’s the difference: Flat tracker (GitHub Issues):Installation
Installbd using the full installation guide (Homebrew, install script, npm, or go install).
Developing in a clone of this repository: use make install so the binary gets correct build metadata and a consistent install path. Avoid ad-hoc go build / go install without the Makefile unless you know what you are doing — see the repository README and AGENTS.md.
Initialize
First time in a repository:- Create
.beads/directory and embedded Dolt database - Prompt for your role (maintainer or contributor) unless a flag is provided
- Import existing issues from git (if any)
- Install git hooks (skip with
--skip-hooks)
- Dolt is the default (and only) storage backend. Data is stored in
.beads/embeddeddolt/. - By default, Dolt runs in embedded mode (in-process, no server needed).
- For multi-writer setups, use
bd init --serverto connect to adolt sql-serverinstead. - To import issues from an older installation, run
bd init --from-jsonl.
Role configuration
Duringbd init, you’ll be asked: “Contributing to someone else’s repo? [y/N]”
- Answer Y if you’re contributing to a fork (runs contributor wizard)
- Answer N if you’re the maintainer or have push access
git config beads.role which determines how beads routes issues:
| Role | Use case | Issue storage |
|---|---|---|
maintainer | Repo owner, team with push access | In-repo .beads/ |
contributor | Fork contributor, OSS contributor | Separate planning repo |
beads.role is not configured, beads falls back to URL-based detection (deprecated). Run bd doctor to check configuration status.
Your first issues
bd-a1b2, bd-f14c) to prevent collisions when multiple agents/branches work concurrently.
Hierarchical issues (epics)
For large features, use hierarchical IDs to organize work:Add dependencies
bd list shows blocking dependencies inline:
Find ready work
--explain to see the full graph reasoning:
bd ready is not the same as bd list --status open. The list command shows all open issues regardless of blockers. The ready command computes the dependency graph and only shows truly unblocked work.
Work the queue
Track progress
Team sync
Share issues with your team using Dolt remotes. Dolt stores data underrefs/dolt/data on the same Git remote, separate from standard Git refs. In repos with origin, bd init configures that Dolt remote automatically.
bd bootstrap auto-detects the existing database on refs/dolt/data, clones it, and wires origin for future bd dolt push / bd dolt pull.
See bd dolt for CLI details. For remote configuration, see Dolt architecture; for federation, see federation.
Optional: Notion sync
If you keep project issues in Notion, save an integration token first:NOTION_TOKEN. Directly setting notion.data_source_id remains available as an escape hatch for advanced setups.
Check which auth source is active and whether the target schema is ready:
Database location
By default (embedded mode), data is stored in.beads/embeddeddolt/ within your repository.
In server mode, data is managed by the external dolt sql-server.
Migrating databases
After upgrading bd, usebd migrate to check for and migrate old database files:
--inspect to analyze migration safety before running. The system verifies required config keys and data integrity invariants.
Database maintenance
As your project accumulates closed issues, the database grows. Manage size with these commands:- Database file > 10MB with many old closed issues
- After major project milestones when old issues are no longer relevant
- Before archiving a project phase
bd restore <id> (from the pre-compaction snapshot, with Dolt history as fallback).
Next steps
- Add labels:
bd create "Task" -l "backend,urgent" - Filter ready work:
bd ready --priority 1 - Explain the graph:
bd ready --explain - Check graph integrity:
bd graph check - Search issues:
bd list --status open - Detect cycles:
bd dep cycles - Gates for PR/CI sync:
bd gate - More sync scenarios:
bd dolt - Full command list: CLI Reference