2026-02-11 17:42:51 -08:00
# BeadBoard
2026-03-24 20:37:32 -05:00
**A live operations console for multi-agent work. See what every agent is doing, what's blocked, and where to intervene.**
2026-03-05 16:54:03 -08:00
[](https://opensource.org/licenses/MIT)
2026-03-24 20:37:32 -05:00
[](https://github.com/steveyegge/beads)

---
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
Your agents are doing work. Who's watching?
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
BeadBoard gives you eyes on multi-agent swarms: which tasks are in flight, which are blocked and why, what the dependency topology looks like, and where you need to step in. It reads [Beads ](https://github.com/steveyegge/beads ) issue files from your repos and renders them as a unified shell — Social, Graph, and Activity lenses — that updates in realtime as agents work.
It's designed agents-first. Agents use the `bd` CLI to claim tasks, post progress, and send structured mail to each other. You watch from the dashboard and intervene when needed.
2026-03-01 18:17:58 -08:00
---
2026-03-24 20:33:15 -05:00
## Quick Start
2026-03-05 17:07:38 -08:00
2026-03-24 20:37:32 -05:00
**Prerequisites:** Node.js 20 LTS, npm 7+
2026-03-05 17:07:38 -08:00
```bash
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install
npm install -g .
2026-03-24 20:33:15 -05:00
cd ~/my-project
bd init
2026-03-05 17:07:38 -08:00
beadboard start
```
2026-03-24 20:33:15 -05:00
Open [http://localhost:3000 ](http://localhost:3000 ).
2026-03-05 17:07:38 -08:00
---
2026-03-24 20:37:32 -05:00
## Dolt (recommended)
2026-03-05 17:07:38 -08:00
2026-03-24 20:37:32 -05:00
BeadBoard works with [Dolt ](https://github.com/dolthub/dolt ) for version-controlled issue history, SQL queries across projects, and reliable multi-agent sync. It's the right backend for real work.
2026-03-05 17:07:38 -08:00
```bash
2026-03-24 20:37:32 -05:00
# macOS
brew install dolt
2026-03-05 17:07:38 -08:00
2026-03-24 20:37:32 -05:00
# Linux / Windows
go install github.com/dolthub/dolt/go/cmd/dolt@latest
# or: curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:37:32 -05:00
Then start the dashboard with Dolt:
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
```bash
beadboard start --dolt
# or manage Dolt separately:
bd dolt start
```
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
Without Dolt, BeadBoard reads `.beads/issues.jsonl` directly — enough to explore, but you'll want Dolt for anything serious.
2026-03-05 16:54:03 -08:00
---
2026-03-24 20:33:15 -05:00
## Features
2026-03-05 17:53:30 -08:00
2026-03-24 20:37:32 -05:00
### Social View — your swarm at a glance
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
Task cards organized by status, with dependency chains, thread context, and agent assignments surfaced inline. Built for scanning active work across many agents without losing the thread.
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00

2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
### Graph View — see the blockers before they block you
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
DAG visualization of your task graph using XYFlow and Dagre layout. Blocked chains are highlighted. Assignees appear on nodes. Use topology to drive assignment decisions, not gut feel.
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00

2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
### Activity View — realtime operations feed
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
Live stream of session events, state transitions, and agent mail. Updates via file watchers and Server-Sent Events — no polling, no manual refresh.
2026-03-01 18:17:58 -08:00
2026-03-24 20:37:32 -05:00
### Swarm Coordination — agent pools and assignment queues
2026-03-01 18:17:58 -08:00
2026-03-24 20:37:32 -05:00
Monitor your agent pool with archetypes and a squad roster. "Needs Agent" and pre-assigned queues let you drive work assignment from the dashboard.
2026-03-01 18:17:58 -08:00
2026-03-24 20:33:15 -05:00

2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
### Agent Mail — structured inter-agent messaging
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
`HANDOFF` , `BLOCKED` , `DECISION` , `INFO` categories. High-signal categories require explicit acknowledgment. Per-task threads merge activity events, agent mail, and manual notes.
2026-03-05 16:54:03 -08:00
```bash
bd mail inbox
bd mail send --to < agent > --bead < id > --category HANDOFF --subject "Ready for review"
bd mail ack < message-id >
```
2026-03-01 18:17:58 -08:00
2026-03-24 20:33:15 -05:00
### Multi-Project Scope
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
Scanner-backed project registry. Switch between single-project and aggregate views at runtime without leaving the workspace.
2026-03-01 18:17:58 -08:00
---
2026-03-24 20:33:15 -05:00
## bb-pi Orchestrator
2026-03-02 20:46:18 -08:00
2026-03-24 20:37:32 -05:00
> **Under active construction.** The orchestrator works, but it's new and has rough edges. For now: run your own coding agent alongside BeadBoard and use the dashboard to coordinate. Help improving it is welcome.
2026-03-05 17:40:49 -08:00
2026-03-24 20:37:32 -05:00
BeadBoard doesn't just watch your agents — it can run them.
2026-03-05 17:40:49 -08:00
2026-03-24 20:37:32 -05:00
`bb-pi` is BeadBoard's embedded execution runtime, built on [Pi ](https://github.com/badlogic/pi-mono ). It exposes a long-lived orchestrator per project that spawns typed worker agents, tracks their bead claims, and streams a live transcript into the left panel.
2026-03-01 18:17:58 -08:00
2026-03-24 20:37:32 -05:00
**Working today (Phases 1-3):**
- Embedded orchestrator with BeadBoard-aware tools (`bb_spawn_worker` , `bb_worker_status` , `bb_create` , `bb_close` , and more)
2026-03-24 20:33:15 -05:00
- Worker spawning with numbered display names (Engineer 01, Engineer 02...)
2026-03-24 20:37:32 -05:00
- Capability-gated agent types: architect, engineer, reviewer, tester, investigator, shipper
2026-03-24 20:33:15 -05:00
- Template-based team spawning (`bb_spawn_team` )
2026-03-24 20:37:32 -05:00
- Bead-required workflow — every worker task claims a bead, posts progress, closes with evidence
- Async coordination — non-blocking spawn with status polling and result reads
- Chat-style orchestrator transcript with realtime telemetry
2026-03-01 18:17:58 -08:00
2026-03-24 20:37:32 -05:00
**Known issues being fixed:**
2026-03-24 20:33:15 -05:00
- Double-reply rendering in orchestrator chat
2026-03-24 20:37:32 -05:00
- Silent failures — errors not yet surfaced to UI
2026-03-24 20:33:15 -05:00
- Session race condition under rapid use
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
**Phases 4-7** (launch-anywhere UX, agent presence in views, hardening, full test coverage) are on the roadmap. See [docs/plans/2026-03-05-embedded-pi-roadmap.md ](docs/plans/2026-03-05-embedded-pi-roadmap.md ).
2026-03-01 18:17:58 -08:00
---
2026-03-24 20:37:32 -05:00
## For AI Agents
BeadBoard is designed to be operated by agents, not just watched by humans. Give your agent the operating contract:
```bash
npx skills add zenchantlive/beadboard --skill beadboard-driver
```
Then add to your project's `AGENTS.md` or `CLAUDE.md` :
```markdown
## BeadBoard
You have access to the **beadboard-driver** skill.
Use it as your entrypoint for all coordination work: claiming tasks, posting progress,
reading context, and following verification rules. When in doubt about what to do next
or how to record state, call beadboard-driver rather than editing markdown ad hoc.
```
Full operating manual: [AGENTS.md ](AGENTS.md ). Skill runbook: [skills/beadboard-driver/SKILL.md ](skills/beadboard-driver/SKILL.md ).
| Command | Role |
|---------|------|
| `bd` | Beads CLI — task and dependency management. Also: `npm install -g @beads/bd` |
| `bb` / `beadboard` | BeadBoard CLI — dashboard launcher and orchestrator interface |
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
---
## Architecture
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:33:15 -05:00
.beads/issues.jsonl < -- bd CLI ( sole write interface )
|
2026-03-24 20:37:32 -05:00
+-- Chokidar watcher (JSONL + WAL + .last_touched)
2026-03-24 20:33:15 -05:00
| |
| IssuesEventBus
| |
2026-03-24 20:37:32 -05:00
| SSE /api/events --> browser (live)
2026-03-24 20:33:15 -05:00
|
+-- Aggregate read --> Dolt SQL (primary, if running)
issues.jsonl (fallback)
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:37:32 -05:00
All views live at `/` with query-param switching (`?view=social|graph|activity` ). The `bd` CLI is the only write path — BeadBoard never writes to `.beads/issues.jsonl` directly.
2026-03-05 16:54:03 -08:00
| Layer | Technologies |
|-------|-------------|
2026-03-24 20:33:15 -05:00
| Frontend | Next.js 15 (App Router), React 19, TypeScript (strict) |
2026-03-05 16:54:03 -08:00
| Styling | Tailwind CSS, Radix UI, Framer Motion |
2026-03-24 20:33:15 -05:00
| Graph | @xyflow/react , Dagre |
| Realtime | Chokidar, Server-Sent Events |
2026-03-24 20:37:32 -05:00
| Database | Dolt (recommended, version-controlled SQL) |
2026-03-24 20:33:15 -05:00
| Agent runtime | @mariozechner/pi -coding-agent (bb-pi, under construction) |
2026-03-05 16:54:03 -08:00
2026-03-01 18:17:58 -08:00
---
2026-03-24 20:33:15 -05:00
## CLI Reference
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
### bd (Beads CLI)
2026-03-01 18:17:58 -08:00
```bash
2026-03-24 20:33:15 -05:00
bd init # initialize Beads in a project
bd create --title "Task title" --type task -p 1 # create a task bead
bd ready # list unblocked work
bd show < id > # show bead detail
bd update < id > --status in_progress # update a bead
bd close < id > --reason "Done" # close a bead
bd dep relate < parent > < child > --type parent-child
bd mail inbox
bd mail send --to < agent > --bead < id > --category HANDOFF --subject "..."
2026-03-24 20:37:32 -05:00
bd dolt start
bd dolt pull & & bd dolt push
2026-03-01 18:17:58 -08:00
```
2026-03-24 20:37:32 -05:00
### bb / beadboard (Dashboard CLI)
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
```bash
2026-03-24 20:37:32 -05:00
beadboard start # start the dashboard
2026-03-24 20:33:15 -05:00
beadboard start --dolt # start with Dolt backend
2026-03-24 20:37:32 -05:00
beadboard open # open in browser
2026-03-24 20:33:15 -05:00
beadboard status # check runtime status
```
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
### Development
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
```bash
npm run dev # Next.js dev server (localhost:3000)
npm run build # production build
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run test # full test suite
```
2026-03-05 16:54:03 -08:00
---
2026-03-24 20:37:32 -05:00
## Platform Support
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
Runs on macOS, Linux, and Windows.
2026-03-05 16:54:03 -08:00
2026-03-24 20:37:32 -05:00
- **macOS / Linux:** Use `install/install.sh` to install `beadboard` and `bb` shims to `~/.beadboard/bin` .
- **Windows:** Path handling canonicalizes drive letter casing and backslash normalization. Mixed WSL2 + Windows setups require mirrored networking — see [AGENTS.md ](AGENTS.md ).
2026-03-05 16:54:03 -08:00
---
2026-03-24 20:33:15 -05:00
## Contributing
```bash
npm run typecheck & & npm run lint & & npm run test
```
2026-03-24 20:37:32 -05:00
Run that before submitting. Keep new features in `src/lib` , `src/components` , and `src/hooks` — not in `src/app` unless it's a route. New test files must be registered in the `test` script in `package.json` (the suite is explicit, not auto-discovered). PR against `main` .
2026-03-05 16:54:03 -08:00
2026-03-01 18:17:58 -08:00
---
## License
2026-03-05 16:54:03 -08:00
[MIT ](LICENSE )
2026-03-24 20:37:32 -05:00
Built on [Beads ](https://github.com/steveyegge/beads ) by [Steve Yegge ](https://github.com/steveyegge ), inspired by [Gastown ](https://github.com/steveyegge/gastown ). Embedded execution runtime uses [@mariozechner ](https://github.com/mariozechner )'s [Pi SDK ](https://github.com/badlogic/pi-mono ).