A powerful terminal UI for visualizing and navigating Beads issue tracking databases.
Abacus transforms your Beads issue database into an interactive, hierarchical tree view right in your terminal. It provides an intuitive interface for exploring complex dependency graphs, viewing issue details, and understanding project structure at a glance.
Abacus supports two Beads backends:
| Backend | Binary | Repository | Status |
|---|---|---|---|
| beads (Go) | bd |
steveyegge/beads | Frozen at v0.38.0 |
| beads_rust | br |
Dicklesworthstone/beads_rust | Active development |
beads (bd) is Steve Yegge's original Go-based issue tracker. As Steve continues evolving beads toward GasTown and beyond — with Dolt integration, daemon-based RPC, and advanced features — the architecture has naturally diverged from the simpler SQLite + JSONL model that many tools were built around.
beads_rust (br) was created by Jeffrey Emanuel as a Rust port that freezes the "classic beads" architecture. In his words:
"Rather than ask Steve to maintain a legacy mode for my niche use case, I created this Rust port that freezes the 'classic beads' architecture I depend on... This isn't a criticism of beads; Steve's taking it in exciting directions. It's simply that my tooling needs a stable snapshot of the architecture I built around, and maintaining my own fork is the right solution for that."
Steve Yegge has given his full endorsement of the beads_rust project.
Key differences:
| Aspect | br (Rust) | bd (Go) |
|---|---|---|
| Git operations | Never (explicit only) | Auto-commit, hooks |
| Background daemon | No | Yes |
| Storage | SQLite + JSONL | Dolt/SQLite |
| Binary size | ~5-8 MB | ~30+ MB |
| Philosophy | Minimal, non-invasive | Feature-rich |
.beads/issues.jsonl format, so your data is portable
Abacus showing a hierarchical tree view of Beads issues with the detail panel displaying comprehensive issue information.
◐ In Progress (cyan)○ Open/Ready (white)✔ Closed (gray)⛔ Blocked (red)* suffix indicates an item has multiple parentsv to cycle between All/Active/Ready views to hide closed issuesn for root beads or N for child beads with a streamlined modale to edit existing beads with pre-populated valuess to open the status overlay with single-key selectionL to add/remove labels with chip-based UI and autocompleteDel to delete beads with a safety confirmation dialogCtrl+Enter in the create modal to add multiple beads quicklyt to cycle forward, T to cycle backwardgo install or building from source)Option 1: Homebrew (macOS/Linux) - Recommended
brew tap ChrisEdwards/tap
brew install abacus
Option 2: Install Script (Unix/macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/ChrisEdwards/abacus/main/scripts/install.sh | bash
Option 3: Install Script (Windows PowerShell)
irm https://raw.githubusercontent.com/ChrisEdwards/abacus/main/install.ps1 | iex
Option 4: Go Install
go install github.com/ChrisEdwards/abacus/cmd/abacus@latest
Option 5: Download Binary
Download the latest release for your platform from GitHub Releases.
Option 6: Build from Source
git clone https://github.com/ChrisEdwards/abacus.git
cd abacus
make build
Prefer prebuilt binaries? Use the release assets, Brew formula, or install script.
Navigate to any directory containing a Beads project and run:
abacus
The application will automatically load all issues from your .beads/ database.
abacus [options]
Options:
--backend string Backend to use: bd or br (default: auto-detect)
--db-path string Path to the Beads database file
--auto-refresh-seconds int Auto-refresh interval in seconds (0 disables; default: 3)
--output-format string Detail panel style: rich, light, plain (default: "rich")
--skip-version-check Skip Beads CLI version validation (or set AB_SKIP_VERSION_CHECK=true)
--skip-update-check Skip checking for updates at startup (or set AB_SKIP_UPDATE_CHECK=true)
Key workflows are summarized below—run abacus --help anytime for the full flag list.
Abacus supports both beads (bd) and beads_rust (br) backends. See Beads Backends: bd vs br for details on choosing between them.
Auto-detection: On startup, abacus checks which binaries are available:
- Only br on PATH → uses br automatically
- Only bd on PATH → uses bd automatically
- Both available → prompts you to choose (selection saved to .abacus/config.yaml)
- Neither available → shows error with installation instructions
Manual override:
# Use --backend flag (overrides config, not saved)
abacus --backend br
abacus --backend bd
# Or configure in .abacus/config.yaml
beads:
backend: br # or bd
Status bar indicator: The current backend is always shown in the status bar as [bd] or [br].
CI/Non-interactive environments: Use --backend flag or pre-configure .abacus/config.yaml since the selection prompt requires an interactive terminal.
Version requirements: - br: v0.1.7 or later - bd: v0.30.0 to v0.38.0 (versions > 0.38.0 may work but are not officially supported)
Note on bd version support: If you're using bd version > 0.38.0, Abacus will display a one-time informational notice. The software may still work, but we cannot guarantee compatibility with newer bd features or breaking changes. For the best experience, we recommend migrating to br for new projects.
The detail panel shows different types of relationships:
| Section | Meaning | Description |
|---|---|---|
| Part Of | Parent epics | Epics/tasks this issue belongs to |
| Subtasks | Child tasks | Work items underneath this issue |
| Must Complete First | Blockers | Issues that block this one from starting |
| Will Unblock | Downstream | Issues waiting on this one to complete |
| Related | Soft links | Issues related but not blocking |
| Discovered From | Origin | Issues that led to discovering this one |
Items within each section are sorted intelligently: - Subtasks: In-progress → ready (high-impact first) → blocked (closest to ready) → closed - Blockers: Items you can work on now appear first - Will Unblock: Items that become ready first appear first
/ to search; results update live while you type. Esc clears the filter.[+N] to indicate the number of hidden children.--auto-refresh-seconds N.0 to disable background refresh if you want to control reloads manually.Abacus checks for updates when you launch it. If a new version is available, you'll see a toast notification in the bottom-right corner:
brew upgrade abacus commandU to auto-update, or download from releasesTo disable update checks:
abacus --skip-update-check
# or
export AB_SKIP_UPDATE_CHECK=true
| Action | Keys | Description |
|---|---|---|
| Navigate | ↑/k ↓/j |
Move cursor up/down |
| Expand/Collapse | →/l ←/h or Space |
Expand/collapse nodes |
| Jump | Home/End |
Jump to first/last item |
| Page | PgUp/PgDn |
Page up/down in tree |
| Detail Panel | Enter |
Toggle detail panel |
| Switch Focus | Tab |
Switch between tree and detail |
| Action | Keys | Description |
|---|---|---|
| New Root Bead | n |
Create a new root-level bead |
| New Child Bead | N |
Create bead under selected parent |
| Edit Bead | e |
Edit selected bead |
| Change Status | s |
Open status overlay |
| Manage Labels | L |
Open labels overlay |
| Delete Bead | Del |
Delete bead (with confirmation) |
| Copy ID | c |
Copy bead ID to clipboard |
| Action | Keys | Description |
|---|---|---|
| Cycle Theme | t/T |
Cycle through themes (forward/backward) |
| Cycle View | v/V |
Cycle view modes (All/Active/Ready) |
| Refresh | r |
Manual refresh |
| Help | ? |
Show keyboard shortcuts overlay |
| Action | Keys | Description |
|---|---|---|
| Search | / |
Enter search mode |
| Clear/Cancel | Esc |
Clear search or close overlay |
| Quit | q or Ctrl+C |
Exit application |
Detail panel focused shortcuts: ↑/↓ or j/k scroll, Ctrl+F/B or PgDn/Up page, g/G or Home/End jump.
Abacus can be configured via:
- Configuration files (~/.abacus/config.yaml or .abacus/config.yaml)
- Environment variables (prefixed with AB_)
- Command-line flags
Example configuration:
auto-refresh-seconds: 3
beads:
backend: br # or bd (auto-detected if not set)
output:
format: rich
database:
path: .beads/beads.db
skip-version-check: false
Abacus interfaces with the Beads backend (bd or br) to:
The graph automatically identifies root nodes (issues with no parents or deepest parents in the hierarchy) and organizes the tree to minimize visual depth while accurately representing all relationships.
Internally the ap
$ claude mcp add abacus \
-- python -m otcore.mcp_server <graph>