Todo System (Beads)
Beads (bd) is a Git-native todo system designed for AI agents. Your agent doesn’t just read issues — it creates them, tracks dependencies, and maintains the backlog as part of its work.
The agent’s responsibility
Section titled “The agent’s responsibility”Unlike traditional issue trackers where humans manage the backlog, Beads is owned by your agent:
- Agent discovers work → creates issues
- Agent sees blockers → adds dependencies
- Agent finishes task → closes issue
- Agent notices patterns → updates the backlog
The memory bank holds context. Beads holds actionable work. Your agent maintains both.
Why Beads?
Section titled “Why Beads?”- Git-native — Issues live in your repo, sync with code
- Dependency-aware — Track what blocks what
- Agent-first —
bd readyshows unblocked work - Offline-first — Works without network
- Simple — SQLite database, JSONL export
Installation
Section titled “Installation”Beads comes pre-installed in TinyFat containers. For local use:
# Download latest releasecurl -sL https://github.com/steveyegge/beads/releases/latest/download/bd-linux-amd64 -o /usr/local/bin/bdchmod +x /usr/local/bin/bdQuick start
Section titled “Quick start”-
Initialize in your project
Terminal window cd your-projectbd initThis creates
.beads/with your database. Prefix auto-detects from directory name. -
Create an issue
Terminal window bd create "Add user authentication"Output:
✓ Created issue: proj-a1b2 -
List issues
Terminal window bd list -
See ready work
Terminal window bd readyShows issues with no blockers — perfect for picking next task.
Core commands
Section titled “Core commands”Creating issues
Section titled “Creating issues”# Basicbd create "Fix login bug"
# With priority (0=highest, 4=lowest)bd create "Critical security fix" -p 0
# With typebd create "Add OAuth support" -t feature
# With descriptionbd create "Refactor auth" -d "Split into smaller modules"
# With assigneebd create "Write tests" --assignee aliceViewing issues
Section titled “Viewing issues”# List allbd list
# Filter by statusbd list --status openbd list --status in_progressbd list --status closed
# Filter by prioritybd list --priority 0
# Show specific issuebd show proj-a1b2Updating issues
Section titled “Updating issues”# Change statusbd update proj-a1b2 --status in_progress
# Change prioritybd update proj-a1b2 --priority 1
# Assignbd update proj-a1b2 --assignee bobClosing issues
Section titled “Closing issues”# Simple closebd close proj-a1b2
# With reasonbd close proj-a1b2 --reason "Fixed in commit abc123"
# Multiple issuesbd close proj-a1b2 proj-c3d4Dependencies
Section titled “Dependencies”The killer feature. Track what blocks what.
Adding dependencies
Section titled “Adding dependencies”# proj-b blocks proj-a (must finish b before a)bd dep add proj-a proj-bViewing dependencies
Section titled “Viewing dependencies”# Show dependency treebd dep tree proj-a
# Find circular dependenciesbd dep cycles
# Show blocked issuesbd blockedDependency types
Section titled “Dependency types”| Type | Meaning |
|---|---|
blocks | Must complete before dependent |
related | Soft connection, doesn’t block |
parent-child | Epic/subtask hierarchy |
Ready work
Section titled “Ready work”bd ready is designed for agents picking up work:
bd readyShows issues that are:
- Status:
openorin_progress - No blocking dependencies
- Ready to work on right now
Issue prefixes
Section titled “Issue prefixes”Each project has a unique prefix:
# Auto-detect from directory namebd init# myproject/ → myproject-a1b2
# Custom prefixbd init --prefix api# → api-a1b2Prefixes use hash-based IDs (like a1b2) for uniqueness across repos.
Git integration
Section titled “Git integration”Beads syncs automatically with Git:
- After changes — Exports to
.beads/issues.jsonl - After git pull — Imports if JSONL is newer
- No manual sync — Just commit and push
The .beads/ directory should be committed:
git add .beads/git commit -m "Add beads issue tracking"Agent workflow
Section titled “Agent workflow”For AI agents, Beads enables a structured workflow:
-
Check ready work
Terminal window bd ready -
Claim an issue
Terminal window bd update proj-a1b2 --status in_progress -
Do the work
-
Close when done
Terminal window bd close proj-a1b2 --reason "Implemented in this session" -
Create discovered work
If you find new issues while working:
Terminal window bd create "Found: need to handle edge case X" -t bug
Epics and subtasks
Section titled “Epics and subtasks”Group related issues:
# Create epicbd create "User authentication system" -t epic
# Create subtasks with parentbd create "Login form" --parent proj-epic1bd create "Password reset" --parent proj-epic1bd create "OAuth integration" --parent proj-epic1
# View epic with childrenbd show proj-epic1Comments
Section titled “Comments”Add notes to issues:
# Add commentbd comment proj-a1b2 "Started working on this, found complexity in X"
# View commentsbd comments proj-a1b2Database location
Section titled “Database location”Beads auto-discovers the database:
--db /path/to/dbflag$BEADS_DBenvironment variable.beads/*.dbin current or parent directories~/.beads/default.dbfallback
Pairing with Memory Bank
Section titled “Pairing with Memory Bank”Beads tracks issues. Memory Bank tracks context. Use both:
memory-bank/02-active/nextUp.md → High-level priorities.beads/ → Specific actionable issuesReference beads in memory bank:
## Next Up
Priority work from `bd ready`:- proj-a1b2: Fix authentication timeout- proj-c3d4: Add rate limitingCommand reference
Section titled “Command reference”| Command | Description |
|---|---|
bd init | Initialize in current directory |
bd create | Create new issue |
bd list | List issues |
bd show | Show issue details |
bd update | Update issue fields |
bd close | Close issue(s) |
bd ready | Show unblocked issues |
bd blocked | Show blocked issues |
bd dep add | Add dependency |
bd dep tree | Show dependency tree |
bd comment | Add comment |
bd stats | Show statistics |
Use bd --help or bd <command> --help for full options.
Next steps
Section titled “Next steps”- Memory Bank Pattern — Project context structure
- Agent Workspace — Your agent’s filesystem