## What changed
### scripts/bb-mail-shim.mjs (new)
Translates bd mail delegate calls into bb agent coordination commands.
bd mail delegates by prepending the configured command to all args, so
this shim bridges the interface mismatch between bd mail (gt-mail style)
and bb agent (--agent/--from flags required).
Command mappings:
bd mail inbox [...] → bb agent inbox --agent $BB_AGENT [...]
bd mail send --to foo [...] → bb agent send --from $BB_AGENT --to foo [...]
bd mail read <msg-id> → bb agent read --agent $BB_AGENT --message <msg-id>
bd mail ack <msg-id> → bb agent ack --agent $BB_AGENT --message <msg-id>
bd mail <other> [...] → bb agent <other> [...] (passthrough)
Agent identity injected automatically from BB_AGENT env var (primary) or
BD_ACTOR env var (fallback). Caller can override --from by supplying it
explicitly in bd mail send args. Falls back with clear error messages if
bb is not in PATH or BB_AGENT/BD_ACTOR is unset.
### scripts/session-preflight.mjs (updated)
Added mail delegate auto-configuration step after successful bb resolution:
- Calls: bd config set mail.delegate "node <abs-path-to-bb-mail-shim.mjs>"
- Uses absolute path to shim resolved relative to session-preflight.mjs
- Reports mail.configured + mail.delegate + usage note in output JSON
- Graceful failure if shim missing, bd config set fails, or bb not found
- Added mail: null to all error branches for consistent output shape
## Verification
Tested end-to-end on this machine:
export BB_AGENT=silver-scribe
node session-preflight.mjs # → ok:true, mail.configured:true
bd mail send --to silver-scribe --bead beadboard-izs.5 \
--category INFO --subject "test" --body "pipeline verified"
bd mail inbox # → Inbox (1): [msg_...] INFO: test
All commands exit 0. Delegate persisted via bd config get mail.delegate.
## Bead: beadboard-izs.5 (closed)
## Also closed: beadboard-izs.2 — bb agent already in global CLI (feat(cli) commit)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .agent/skills | ||
| .agents/skills | ||
| .augment/skills | ||
| .beads | ||
| .claude/skills | ||
| .cline/skills | ||
| .dolt | ||
| .github | ||
| .openhands/skills | ||
| assets | ||
| bin | ||
| components/ui | ||
| docs | ||
| help | ||
| install | ||
| lib | ||
| out | ||
| public | ||
| reference/routes | ||
| scripts | ||
| skills | ||
| src | ||
| tests | ||
| tools | ||
| .eslintrc.json | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| agents_to_delete.txt | ||
| agents_to_delete2.txt | ||
| all_beads.txt | ||
| bb.ps1 | ||
| bd-help.txt | ||
| CLAUDE.md | ||
| components.json | ||
| eslint-report.json | ||
| eslint.config.mjs | ||
| image-1.png | ||
| image-2.png | ||
| image-3.png | ||
| image-4.png | ||
| image-5.png | ||
| image-6.png | ||
| image-7.png | ||
| image-8.png | ||
| image-9.png | ||
| image.png | ||
| LICENSE | ||
| next-env.d.ts | ||
| next.config.ts | ||
| NEXT_SESSION_PROMPT.md | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| remotion.config.ts | ||
| sse-output.txt | ||
| tailwind.config.ts | ||
| task1.txt | ||
| task2.txt | ||
| task3.txt | ||
| test-output.txt | ||
| test-output2.txt | ||
| test-sse.mjs | ||
| test-watcher.ts | ||
| test2.txt | ||
| tmp_diff.txt | ||
| tmp_status.txt | ||
| tsconfig.json | ||
BeadBoard
Work in Progress, please contribute! BeadBoard is a multi-agent swarm coordination system built on Beads inspired by Gastown. Thanks Steve Yegge!
BB is a visual operations layer for running agent teams against real dependency-constrained work.
What This App Is
BeadBoard is not just a task board. It is an execution system for coordinating agents around shared Beads workflows:
- Agent-to-agent communication with explicit categories (
HANDOFF,BLOCKED,DECISION,INFO) - Conversation threads merged from activity events, agent messages, and local interactions
- Graph/topology context for deciding what should move next
- Global project scope switching across single and aggregate workspaces
- Swarm orchestration with archetypes/templates and assignment controls
Core Features
1. Agent Communication System
- Structured message lifecycle:
send,inbox,read,ack - Message states:
unread,read,acked - Per-task conversation threads combining:
- activity events
- agent mail
- local bd interactions
- Required acknowledgment semantics for high-signal categories (
HANDOFF,BLOCKED)
2. Swarm Coordination Surface
- Agent Pool Monitor with:
- Archetypes
- Templates
- Needs Agent queue
- Pre-assigned queue
- Squad roster
- Assignment workflow through the graph workspace and right panel

3. Graph + Dependency Topology
- DAG-oriented graph workspace for execution decisions
- Task/dependency tab modes for different planning lenses
- Blocker/unblock context surfaced directly in task cards
- Graph analysis support (cycle and blocked-chain context)

4. Global Project Scope + Scanner
- Project registry and scanner-backed discovery
- Single-project and aggregate modes
- Runtime scope switching without leaving the primary workspace
5. Realtime Operations Layer
- Live updates via watchers + SSE
- Activity stream integration with session/task context
- Mutation/writeback feedback integrated into the same operational surface
Runtime Surface
Active Route
/
View Modes
/?view=social/?view=graph/?view=activity
Compatibility Redirects
/graph->/?view=graph/sessions->/?view=social/timeline->/?view=activity/mockup->/
Archived Route Vault
Legacy route implementations are preserved in reference/routes/** and excluded from active runtime validation scope.
Install
Prerequisites
- Node.js
18.18+(Node20 LTSrecommended) - npm
Clone + Install
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install
Global CLI Install (Optional)
Primary install path:
npm i -g beadboard
Fallback wrappers from repo root:
POSIX (Linux/macOS):
bash ./install/install.sh
Windows (PowerShell):
powershell -ExecutionPolicy Bypass -File .\install\install.ps1
Both wrappers install shims at:
~/.beadboard/bin/bb~/.beadboard/bin/beadboard
Runtime home:
~/.beadboard/runtime/<version>~/.beadboard/runtime/current.json
Launcher commands:
beadboard startbeadboard start --dolt(runsbd dolt startin the current project folder, then starts BeadBoard)beadboard openbeadboard status
Startup note:
- In project repositories, run
bd dolt startfrom the project directory (the folder with.beads). - If you want one command for both steps, use
beadboard start --dolt.
Quick Start
npm run dev
Open:
http://localhost:3000
Configuration
No external service is required for core local usage.
Runtime behavior is driven by:
- Local Beads project data
- Registered/scanned project roots
- URL query state (
view,task,swarm,agent,epic,graphTab, panel state)
Operating Flow
1. Coordinate through Graph + Pool
Open /?view=graph, inspect dependency topology, and drive assignment from the pool panel.
2. Communicate in Context
Open a task thread to read merged conversation context and process message acknowledgments.
3. Switch Scope as Work Expands
Use registry/scanner controls to move between local and aggregate project scope.
4. Track Live Signal
Use social/activity views to monitor execution movement and operational events.
Roadmap Notes
- Cross-view assign controls in all major views.
- Social naming/UX evolution (including possible shift toward “swim” terminology).
- Continued expansion of global project config/scanner workflows.
Scripts
npm run dev
npm run build
npm run start
npm run typecheck
npm run lint
npm run test
npm run video
npm run video:render
npm run video:thumbnail
Architecture
- Frontend: Next.js App Router + React 19 + Tailwind + Framer Motion + Radix
- Graph stack: XYFlow + Dagre
- Core domain: Beads issue model, graph/kanban/session/social builders
- Coordination layer: agent mail + session communication + swarm orchestration state
- Realtime: watchers + SSE + snapshot differ + activity persistence
- Validation/typing: strict TypeScript + Zod contracts where applicable
Project Structure
src/
app/
page.tsx # active runtime route
api/ # runtime API routes
components/
shared/ graph/ social/ activity/ sessions/ swarm/ kanban/
hooks/
lib/
reference/
routes/ # archived route implementations
Contributing
- Keep active runtime pages in
src/appminimal. - Promote reusable logic into
src/lib,src/components,src/hooks. - Archive non-runtime route experiments in
reference/routes. - Run quality gates before merge:
npm run typecheck
npm run lint
npm run test
License
MIT
