beads
Beads (br) — Local-First Issue Tracker
A Rust CLI (br) that stores issues locally in SQLite. Lightweight, fast, dependency-aware.
Source: https://github.com/Dicklesworthstone/beads_rust
Install
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/beads_rust/main/install.sh?$(date +%s)" | bash
Or from source:
cargo install --git https://github.com/Dicklesworthstone/beads_rust.git
Verify: br --version
Quick Start
br init # Initialize in project root
br create "Fix login timeout" -p 1 --type bug
br ready # Show actionable (unblocked) issues
br update bd-abc123 --status in_progress # Claim work
br close bd-abc123 --reason "Fixed" # Complete
Storage
.beads/
├── beads.db # SQLite (primary storage)
├── config.yaml # Project configuration
└── metadata.json # Workspace metadata
All data lives in .beads/beads.db. No daemons, no hooks, no background processes.
Commands
Issue Lifecycle
| Command | Description | Example |
|---|---|---|
init |
Initialize workspace | br init |
create |
Create issue | br create "Title" -p 1 --type bug |
q |
Quick capture (ID only) | br q "Fix typo" |
show |
Show issue details | br show bd-abc123 |
update |
Update issue fields | br update bd-abc123 --priority 0 |
close |
Close issue | br close bd-abc123 --reason "Done" |
reopen |
Reopen closed issue | br reopen bd-abc123 |
delete |
Delete issue (tombstone) | br delete bd-abc123 |
Querying
| Command | Description | Example |
|---|---|---|
list |
List issues with filters | br list --status open --priority 0-1 |
ready |
Actionable work (unblocked) | br ready |
blocked |
Blocked issues | br blocked |
search |
Full-text search | br search "authentication" |
stale |
Stale issues | br stale --days 30 |
count |
Count with grouping | br count --by status |
Dependencies
| Command | Description | Example |
|---|---|---|
dep add |
Add dependency (child blocked by parent) | br dep add bd-child bd-parent |
dep remove |
Remove dependency | br dep remove bd-child bd-parent |
dep list |
List dependencies | br dep list bd-abc123 |
dep tree |
Dependency tree | br dep tree bd-abc123 |
dep cycles |
Find cycles | br dep cycles |
Labels & Comments
br label add bd-abc123 backend urgent # Add labels
br label remove bd-abc123 urgent # Remove label
br label list-all # All labels in project
br comments add bd-abc123 "Root cause found"
br comments list bd-abc123
System
br doctor # Run diagnostics
br stats # Project statistics
br config --list # Show config
br upgrade # Self-update
Priority Levels
| Priority | Meaning |
|---|---|
| 0 | Critical |
| 1 | High |
| 2 | Normal (default) |
| 3 | Low |
| 4 | Backlog |
Issue Types
bug, feature, task, chore, epic
JSON Output (Agent-Friendly)
Every command supports --json for structured machine-readable output:
br list --json
br ready --json
br show bd-abc123 --json
br create "Title" --json # Returns created issue as JSON
Schema discovery:
br schema all --format json
br schema issue-details --format toon # Token-efficient
Configuration
Layered (highest to lowest priority): CLI flags → env vars → .beads/config.yaml → ~/.config/beads/config.yaml → defaults.
# .beads/config.yaml
id:
prefix: "proj" # Custom ID prefix (default: "bd")
defaults:
priority: 2
type: "task"
assignee: "team@example.com"
sync:
auto_import: false
auto_flush: false # Keep sync disabled for local-only use
br config --set id.prefix=myproj
br config --set defaults.priority=1
br config --edit # Open in editor
| Env Variable | Description |
|---|---|
BEADS_DB |
Override database path |
RUST_LOG |
Logging level |
Typical Workflow
# 1. Create issues with dependencies
br create "Implement user auth" --type feature -p 1 # → bd-7f3a2c
br create "Set up database schema" --type task -p 1 # → bd-e9b1d4
br dep add bd-7f3a2c bd-e9b1d4 # auth blocked by schema
# 2. Work on what's ready
br ready # Shows bd-e9b1d4 (unblocked)
br update bd-e9b1d4 --status in_progress
# 3. Complete and unblock downstream
br close bd-e9b1d4 --reason "Schema implemented"
br ready # Now shows bd-7f3a2c
Troubleshooting
| Error | Fix |
|---|---|
| Database locked | Check for other br processes: pgrep -f "br " |
| Issue not found | Verify ID: br list --json | jq '.[] | select(.id == "bd-abc123")' |
| Prefix mismatch | Check prefix: br config --get id.prefix |
| Stale database | Run br doctor to diagnose |
| Garbled output | Use br list --no-color or br list --json |
More from idjoo/skills
commit
Smart atomic commits with Conventional Commits and emoji. Use when committing changes, creating git commits, or when the user says 'commit'. Analyzes workspace changes, splits into logical atomic units, and commits with emoji conventional format (type(scope): emoji description).
10whatsapp
Send and manage WhatsApp messages via WAHA HTTP API. Use when the user wants to send WhatsApp messages (text, image, video, voice, file), read chats/messages, manage contacts, groups, or sessions. Triggers on: 'send a WhatsApp message', 'check my WhatsApp chats', 'send image on WhatsApp', 'WhatsApp group', 'WhatsApp session', or any WhatsApp-related task.
2waha
Send and manage WhatsApp messages via WAHA HTTP API. Use when the user wants to send WhatsApp messages (text, image, video, voice, file), read chats/messages, manage contacts, groups, or sessions. Triggers on: 'send a WhatsApp message', 'check my WhatsApp chats', 'send image on WhatsApp', 'WhatsApp group', 'WhatsApp session', 'WAHA', or any WhatsApp-related task.
1python-backend
Production-ready Python backend service architecture using FastAPI, SQLModel, and async PostgreSQL. Use when: (1) Scaffolding a new backend service or API project, (2) Adding new entities, endpoints, or features to an existing service, (3) Setting up database models, migrations, or repositories, (4) Configuring CI/CD, Docker, or Cloud Run deployment, (5) Reviewing or refactoring backend code for pattern compliance. Triggers on: 'create a new service', 'add an endpoint', 'add a new entity', 'scaffold a project', 'set up a FastAPI project', 'add CRUD', 'create a model', or any Python backend development task.
1