2026-02-11 17:42:51 -08:00
# BeadBoard
2026-03-05 16:54:03 -08:00
[](https://opensource.org/licenses/MIT)
2026-03-24 20:33:15 -05:00
**Local dashboard and multi-agent orchestration system built on [Beads ](https://github.com/steveyegge/beads ).**
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
BeadBoard reads `.beads/issues.jsonl` files directly from your repos and renders them as an agent-first operations console: a unified shell with Social, Graph, and Activity lenses for monitoring multi-agent work, managing swarms, and intervening on blockers. Found us via the [Beads community tools list ](https://github.com/steveyegge/beads/blob/main/docs/COMMUNITY_TOOLS.md )? You're in the right place.
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:33:15 -05:00
**Prerequisites:** Node.js 18.18+ (Node 20 LTS recommended), npm 7+
2026-03-05 17:07:38 -08:00
```bash
2026-03-24 20:33:15 -05:00
# Clone and install
2026-03-05 17:07:38 -08:00
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install
npm install -g .
```
2026-03-24 20:33:15 -05:00
This installs:
- `beadboard` — Dashboard launcher
- `bb` — Alias for `beadboard` , also the CLI for the built-in orchestrator agent (built on [Pi ](https://github.com/badlogic/pi-mono ))
- `bd` — Beads CLI for task management (also available standalone via `npm install -g @beads/bd` )
2026-03-05 17:07:38 -08:00
```bash
2026-03-24 20:33:15 -05:00
# Initialize Beads in your project
cd ~/my-project
bd init
2026-03-05 17:07:38 -08:00
2026-03-24 20:33:15 -05:00
# Start the dashboard
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:33:15 -05:00
> **Dolt is optional.** BeadBoard reads `.beads/issues.jsonl` directly when Dolt is not running. Install Dolt for version-controlled SQL history — recommended for multi-agent workflows but not required to get started.
2026-03-05 17:07:38 -08:00
---
## For AI Agents
2026-03-24 20:33:15 -05:00
Install the `beadboard-driver` skill to give your agent the operating contract for BeadBoard coordination:
2026-03-05 17:07:38 -08:00
```bash
npx skills add zenchantlive/beadboard --skill beadboard-driver
```
2026-03-24 20:33:15 -05:00
Then add to your project's `AGENTS.md` or `CLAUDE.md` :
2026-03-05 17:07:38 -08:00
2026-03-24 20:33:15 -05:00
```markdown
## BeadBoard
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
You have access to the **beadboard-driver** skill.
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
- Use beadboard-driver as your entrypoint for all coordination work (tasks, context, status).
- Use it to read and update Beads via `bd` , keep work state consistent with the BeadBoard UI,
and follow the verification rules described in this repo.
- When in doubt about what to do next or how to record progress, call beadboard-driver and
follow its guidance rather than editing markdown ad hoc.
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:33:15 -05:00
The full agent operating manual is at [AGENTS.md ](AGENTS.md ). The skill runbook is at [skills/beadboard-driver/SKILL.md ](skills/beadboard-driver/SKILL.md ).
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
**Two CLIs, one system:**
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
| Command | What it is |
|---------|-----------|
| `bd` | Beads CLI — task/dependency management. Also available via `npm install -g @beads/bd` |
| `bb` / `beadboard` | BeadBoard CLI — dashboard launcher + orchestrator |
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:33:15 -05:00
### Social View — grouped task cards with agent context
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
Task cards organized by status, with dependency chains, thread context, and agent assignment surfaced inline. Built for scanning active work across a swarm at a glance.
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:33:15 -05:00
### Graph View — dependency topology
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
DAG visualization of your task graph using XYFlow and Dagre layout. Shows blocked chains, execution order, and assignees on nodes. Drives assignment decisions from topology rather than gut feel.
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:33:15 -05:00
### Activity View — realtime operations feed
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
Live activity stream integrating 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:33:15 -05:00
### Swarm Coordination
2026-03-01 18:17:58 -08:00
2026-03-24 20:33:15 -05:00
Agent pool monitor with archetypes, assignment queues, and squad roster. "Needs Agent" and pre-assigned queues let you drive work assignment without leaving 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:33:15 -05:00
### Agent Mail
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
Structured inter-agent messaging with categories (`HANDOFF` , `BLOCKED` , `DECISION` , `INFO` ). High-signal categories require explicit acknowledgment. Per-task threads merge activity events, agent mail, and local interactions.
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:33:15 -05:00
Project registry with scanner-backed discovery. Switch between single-project and aggregate modes 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:33:15 -05:00
> **UNDER CONSTRUCTION** — The orchestrator is working but new. Use your own coding agent alongside BeadBoard for now, or help us improve it!
2026-03-05 17:40:49 -08:00
2026-03-24 20:33:15 -05:00
`bb-pi` is BeadBoard's embedded execution runtime. It uses [Pi ](https://github.com/badlogic/pi-mono ) ([@mariozechner/pi-coding-agent ](https://www.npmjs.com/package/@mariozechner/pi-coding-agent )) as the execution substrate and exposes a long-lived orchestrator per project that can spawn typed worker agents.
2026-03-05 17:40:49 -08:00
2026-03-24 20:33:15 -05:00
**What works today (Phases 1-3 complete):**
2026-03-01 18:17:58 -08:00
2026-03-24 20:33:15 -05:00
- Embedded orchestrator with BeadBoard-aware tools (`bb_spawn_worker` , `bb_worker_status` , `bb_create` , `bb_close` , etc.)
- Worker spawning with numbered display names (Engineer 01, Engineer 02...)
- Agent types with capability-gated tool access (architect, engineer, reviewer, tester, investigator, shipper)
- Template-based team spawning (`bb_spawn_team` )
- Bead-required workflow — every worker task claims a bead, updates progress, closes with evidence
- Async worker coordination — non-blocking spawn with status polling and result reads
- Chat-style orchestrator transcript in the left panel with realtime telemetry
2026-03-01 18:17:58 -08:00
2026-03-24 20:33:15 -05:00
**Known issues being actively fixed:**
2026-03-01 18:17:58 -08:00
2026-03-24 20:33:15 -05:00
- Double-reply rendering in orchestrator chat
- Silent failures — errors not surfaced to UI
- Session race condition under rapid use
- Phases 4-7 (launch-anywhere UX, agent presence in views, hardening, test coverage) are not done
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
See [docs/plans/2026-03-05-embedded-pi-roadmap.md ](docs/plans/2026-03-05-embedded-pi-roadmap.md ) for the full status breakdown.
2026-03-01 18:17:58 -08:00
---
## Architecture
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
### Data flow
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:33:15 -05:00
.beads/issues.jsonl < -- bd CLI ( sole write interface )
|
+-- Chokidar watcher (file + WAL + .last_touched)
| |
| IssuesEventBus
| |
| SSE endpoint --> browser (live updates)
|
+-- Aggregate read --> Dolt SQL (primary, if running)
issues.jsonl (fallback)
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:33:15 -05:00
1. `bd` commands write to `.beads/issues.jsonl` . Never write to this file directly.
2. The parser (`src/lib/parser.ts` ) normalizes JSONL into `BeadIssue` objects.
3. `IssuesWatchManager` (Chokidar) watches for changes, coalesces events, and emits through the event bus.
4. The SSE endpoint (`/api/events` ) streams changes to the browser.
5. The read path prefers Dolt SQL when available and falls back to JSONL.
### Tech stack
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 |
| Database | Dolt (optional, version-controlled SQL) |
| Agent runtime | @mariozechner/pi -coding-agent (bb-pi, under construction) |
| Video | Remotion |
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
### View routing
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
All active views live at `/` with query-param switching. Legacy routes redirect:
2026-03-05 16:54:03 -08:00
| URL | View |
|-----|------|
2026-03-24 20:33:15 -05:00
| `/?view=social` | Social feed |
2026-03-05 16:54:03 -08:00
| `/?view=graph` | Dependency graph |
| `/?view=activity` | Activity timeline |
2026-03-24 20:33:15 -05:00
| `/graph` , `/sessions` , `/timeline` | Redirect to unified shell equivalents |
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 "..."
bd dolt start # start Dolt server
bd dolt pull & & bd dolt push # sync with Dolt remote
2026-03-01 18:17:58 -08:00
```
2026-03-24 20:33:15 -05:00
### bb / beadboard (BeadBoard CLI)
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
```bash
beadboard start # start the dashboard server
beadboard start --dolt # start with Dolt backend
beadboard open # open dashboard in browser
beadboard status # check runtime status
```
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
### npm scripts (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:33:15 -05:00
Run a single test file:
2026-03-05 16:54:03 -08:00
```bash
2026-03-24 20:33:15 -05:00
node --import tsx --test tests/lib/parser.test.ts
2026-03-05 16:54:03 -08:00
```
2026-03-24 20:33:15 -05:00
> New test files must be added to the `test` script in `package.json` — the suite is explicitly enumerated, not auto-discovered.
2026-03-05 16:54:03 -08:00
---
2026-03-24 20:33:15 -05:00
## Cross-Platform Support
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
BeadBoard runs on Windows, macOS, and Linux.
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -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 ).
- **Dolt**: Optional on all platforms. The dashboard reads `.beads/issues.jsonl` directly when Dolt is unavailable.
2026-03-05 16:54:03 -08:00
---
2026-03-24 20:33:15 -05:00
## Contributing
1. Fork the repo and create a feature branch.
2. Run quality gates before submitting:
2026-03-05 16:54:03 -08:00
2026-03-24 20:33:15 -05:00
```bash
npm run typecheck & & npm run lint & & npm run test
```
3. Keep active runtime pages minimal under `src/app` . Promote shared logic to `src/lib` , `src/components` , `src/hooks` .
4. New tests must be registered in the `test` script in `package.json` .
5. Submit a pull request 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 )
## Acknowledgments
2026-03-24 20:33:15 -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 ). The embedded Pi execution runtime uses [@mariozechner ](https://github.com/mariozechner )'s [Pi SDK ](https://github.com/badlogic/pi-mono ).