Beads/bd - Git-Native Issue Tracking
Table of Contents
1. Overview
"=cargo install beads=" is wrong. The =bd= binary installed on this machine (v1.1.2, build 20e493e5) is a stripped Go executable --- `file` reports "ELF 64-bit ... Go BuildID=..."; its dependencies include golang.org/x/sys and google.golang.org/grpc --- not a Rust crate, and there is no cargo package to install. Corrected to the methods the binary's own error output recommends when embedded-Dolt support is missing: =brew install beads=, =npm install -g @beads/bd=, or the installer script. Separately, github.com/aygp-dr/beads (linked below) resolves (HTTP 200) but GitHub's API reports it as a fork (=fork: true=, =parent: gastownhall/beads=); steveyegge/beads, the name used in the install script's own URL and in this install's bundled =.beads/README.md=, now 301-redirects to gastownhall/beads. The link is the user's own fork and still works, so left as-is; noted here for anyone trying to find the canonical upstream.
Beads (bd) is a git-native issue tracker that stores issues as JSONL files within the repository itself.
- Repository: github.com/aygp-dr/beads
- Install:
brew install beads,npm install -g @beads/bd, or the installer script (curl -fsSL .../install.sh | bash) —bdis a Go binary, not a Rust/cargo package
2. Usage Statistics
The type-distribution table is internally consistent --- 476+212+92+58+19 = 857, matching "857+ issues" exactly --- but this machine can't independently audit the full 20-repo aggregate behind it. The one figure checkable here, this repo's own count, has moved on since the 2025-12-24 snapshot: =.beads/issues.jsonl= now holds 306 records (150 open, 155 closed, 1 in_progress), not the "110 open" figure the Repositories section below attributes to www.wal.sh. That is drift, not a contradiction of the original claim --- left as a dated snapshot rather than rewritten to current numbers.
Current deployment across projects:
| Metric | Count |
|---|---|
| Repositories using beads | 20 |
| Total issues tracked | 857+ |
| Open issues | ~110 |
2.1. Issue Distribution by Type
| Type | Count |
|---|---|
| task | 476 |
| bug | 212 |
| feature | 92 |
| epic | 58 |
| chore | 19 |
3. Common Commands
Checked every command below against the installed =bd= v1.1.2 (this repo's own tracker). Three have drifted; left unedited in the code block per this pass's scope but flagged here. (1) =bd create -t "Fix login bug" -y bug= does not run: =-y= is not a registered flag on =bd create= (not in its =--help= output), and executing it directly returns "Error: unknown shorthand flag: 'y' in -y". The example also misuses =-t= (type) to hold the title. A working form is =bd create "Fix login bug" -t bug=. (2) =bd ready <issue-id> # Mark issue ready for work= --- =bd ready --help= describes it as "Show ready work (open issues with no active blockers)" and takes no issue-id positional at all; there is no "mark ready" action in this version. (3) =bd sync # Sync issues (pull from remote)= --- running it returns "Error: unknown command \"sync\" for \"bd\""; no =sync= subcommand exists in v1.1.2's full command list. =bd list=, =bd close=, and =bd show= are all still correct as written.
# Create a new issue
bd create -t "Fix login bug" -y bug
# List issues
bd list
bd list --status open
bd list --type bug
# Mark issue ready for work
bd ready <issue-id>
# Close an issue
bd close <issue-id>
# Sync issues (pull from remote)
bd sync
# Show issue details
bd show <issue-id>
4. Integration with Claude Code
- Issue Creation: Use
bd createduring conversations to track discovered work - Issue Discovery:
bd listto find outstanding tasks - Progress Tracking: Mark issues
in_progressorreadyas work begins - Completion:
bd closewhen work is done and committed
Example workflow:
# Discover a bug during development
bd create -t "API returns 500 on empty input" -y bug -p high
# Later, when working on it
bd ready www.wal.sh-42
# ... fix the bug ...
bd close www.wal.sh-42
5. File Structure
"Issues are stored in =.beads/issues.jsonl=" describes bd's original design, not this repo's actual current backend. =bd context= here reports =Backend: type dolt, mode embedded= --- an embedded SQL database (Dolt) is the live store, with =.beads/issues.jsonl= kept as a git-synced export rather than the source of truth; =bd doctor= confirms this repo's JSONL holds 306 issues with no local database present, flagging it a "Fresh Clone" that needs =bd bootstrap= to rebuild the database from the JSONL. The record schema has drifted too: older entries in this repo's own =issues.jsonl= use the =type=/=created=/=updated= field names shown below, but newer ones (=www.wal.sh-*= prefix) use =issue_type=/=created_at=/=updated_at= and omit =type= when it's the default; priority is stored as a plain integer (0-4) in every live record sampled, never a word like "medium". Left the example JSON and surrounding prose unedited (schema-literal rewrite is outside this pass's scope); flagging the drift here.
Issues are stored in .beads/issues.jsonl:
{"id":"proj-1","title":"Add auth","type":"feature","status":"open","priority":"medium","created":"2025-12-01T10:00:00Z"}
{"id":"proj-2","title":"Fix typo","type":"bug","status":"closed","priority":"low","created":"2025-12-02T14:30:00Z"}
Benefits:
- Issues travel with the repository
- Full git history for issue changes
- Works offline
- No external service dependencies
- Merge conflicts are human-readable
6. Repositories Using Beads
Active projects with beads tracking:
www.wal.sh- 110 open issuesadvent-of-code- 170 issuesbeads(self-tracking) - 857 issuesagent-token-exchange- simulation trackinggo-agentic-workshop- workshop exercises
7. Related
- Terminal AI Agents - Claude Code and other CLI agents
- Local-First Software - offline-first patterns
Seen at
- Atlassian Team '26 Europe — Atlassian's framing of teams and AI agents working in Jira, noted there as the alternative model to bd.
- Atlassian Team '26 Europe: Beyond code generation — Jira as the coordination layer for agentic delivery.
- Atlassian Team '26 Europe: NTT DATA agentic delivery orchestration — Jira as the control plane for agents.