Merge pull request #24 from zenchantlive/docs/cleanup-junk-files

Docs/cleanup junk files
This commit is contained in:
zenchantlive 2026-03-25 11:10:07 -05:00 committed by GitHub
commit efb6b06588
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 534 additions and 411 deletions

View file

@ -262,11 +262,11 @@
{"id":"bb-6aj.4","title":"Implement aggregate project issue context model","description":"Define normalized project identity payload attached to every issue for cross-project Kanban, timeline, and session views.","acceptance_criteria":"Aggregated read output always includes stable project metadata.","status":"closed","priority":1,"issue_type":"task","assignee":"zenchantlive","owner":"jordanlive121@gmail.com","created_at":"2026-02-12T01:11:52Z","created_by":"zenchantlive","updated_at":"2026-02-12T03:45:22Z","closed_at":"2026-02-12T03:45:22Z","close_reason":"Added project context model and attached to read issues.","labels":["aggregation","data-model"],"dependencies":[{"issue_id":"bb-6aj.4","depends_on_id":"bb-6aj","type":"parent-child","created_at":"2026-02-12T01:11:52Z","created_by":"zenchantlive","metadata":"{}"},{"issue_id":"bb-6aj.4","depends_on_id":"bb-6aj.2","type":"blocks","created_at":"2026-02-12T01:12:28Z","created_by":"zenchantlive","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0}
{"id":"bb-92d.4.1","title":"Add parser tests for priority=0, tombstone filtering, and dependency parsing","description":"Create focused tests that protect parser behavior for critical edge cases and dependency structures used by graph/timeline views.","acceptance_criteria":"Tests fail before implementation and pass after parser is complete.","status":"closed","priority":1,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-02-12T01:11:45Z","created_by":"zenchantlive","updated_at":"2026-02-12T01:26:37Z","closed_at":"2026-02-12T01:26:37Z","close_reason":"Added parser behavior tests for defaults, malformed lines, tombstones, and priority=0.","labels":["parser","tests"],"dependencies":[{"issue_id":"bb-92d.4.1","depends_on_id":"bb-92d.4","type":"parent-child","created_at":"2026-02-12T01:11:45Z","created_by":"zenchantlive","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"bb-92d.2","title":"Add MIT license and baseline repository docs","description":"Add LICENSE and baseline docs that state Windows-native support, read/write boundaries, and required runtime dependencies.","acceptance_criteria":"MIT license present and docs describe core architecture constraints.","status":"closed","priority":1,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-02-12T01:11:43Z","created_by":"zenchantlive","updated_at":"2026-02-12T01:23:51Z","closed_at":"2026-02-12T01:23:51Z","close_reason":"Added MIT license and baseline repository documentation with architecture boundary rules.","labels":["docs","license"],"dependencies":[{"issue_id":"bb-92d.2","depends_on_id":"bb-92d","type":"parent-child","created_at":"2026-02-12T01:11:43Z","created_by":"zenchantlive","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-28z","title":"Bug: unbounded event array in embedded-daemon","description":"EmbeddedPiDaemon stores RuntimeConsoleEvents in an array per project with no eviction policy. A long-running server accumulates events without bound, leading to memory growth. Add a cap (e.g. 1000 events) with oldest-first eviction.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:11Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:11Z","labels":["bug","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-bnx","title":"Cleanup: remove hardcoded clawdbot path from pi-runtime-detection","description":"pi-runtime-detection.ts line 50 has a hardcoded fallback path '/home/clawdbot/npm-global/lib/node_modules/@mariozechner/pi-coding-agent' — a WSL-specific remnant from dev. It's inert by default (allowLinkedPi=false) but should be removed before shipping to external users.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:08Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:08Z","labels":["cleanup","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-28z","title":"Bug: unbounded event array in embedded-daemon","description":"EmbeddedPiDaemon stores RuntimeConsoleEvents in an array per project with no eviction policy. A long-running server accumulates events without bound, leading to memory growth. Add a cap (e.g. 1000 events) with oldest-first eviction.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:11Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:11Z","labels":["bug","contrib:open","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-bnx","title":"Cleanup: remove hardcoded clawdbot path from pi-runtime-detection","description":"pi-runtime-detection.ts line 50 has a hardcoded fallback path '/home/clawdbot/npm-global/lib/node_modules/@mariozechner/pi-coding-agent' — a WSL-specific remnant from dev. It's inert by default (allowLinkedPi=false) but should be removed before shipping to external users.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:08Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:08Z","labels":["cleanup","contrib:open","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-4v7","title":"Bug: session race condition in pi-daemon-adapter","description":"getOrCreateSession in pi-daemon-adapter.ts is not async-safe. If two prompts arrive before the first Pi SDK session resolves, both hit the creation branch and two sessions get created. The second overwrites the first in activeSessions map, leaking the first session. Fix: add a session creation lock/promise cache per project root.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:04Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:04Z","labels":["bug","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-cho","title":"Bug: silent failures in orchestrator UX","description":"Launch failure, bootstrap failure on mount, and prompt fetch failures are all silently caught with empty catch blocks. User sees nothing happen when things fail. Surface errors via runtime console events or error state in the UI. Key locations: unified-shell.tsx bootstrapRuntime catch, handleAskOrchestrator catch, orchestrator-panel.tsx submit catch.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:01Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:01Z","labels":["bug","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-sen","title":"Bug: orchestrator double-reply rendering","description":"pi-daemon-adapter.ts emits both text_delta and text_done as 'Orchestrator Reply' events, causing every assistant message to appear twice in the chat UI. The text_done handler re-emits the full concatenated text that was already streamed via deltas. Fix: suppress the duplicate text_done emission or deduplicate by content hash.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:02:58Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:02:58Z","labels":["bug","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-cho","title":"Bug: silent failures in orchestrator UX","description":"Launch failure, bootstrap failure on mount, and prompt fetch failures are all silently caught with empty catch blocks. User sees nothing happen when things fail. Surface errors via runtime console events or error state in the UI. Key locations: unified-shell.tsx bootstrapRuntime catch, handleAskOrchestrator catch, orchestrator-panel.tsx submit catch.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:03:01Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:03:01Z","labels":["bug","contrib:open","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"beadboard-sen","title":"Bug: orchestrator double-reply rendering","description":"pi-daemon-adapter.ts emits both text_delta and text_done as 'Orchestrator Reply' events, causing every assistant message to appear twice in the chat UI. The text_done handler re-emits the full concatenated text that was already streamed via deltas. Fix: suppress the duplicate text_done emission or deduplicate by content hash.","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-03-25T00:02:58Z","created_by":"zenchantlive","updated_at":"2026-03-25T00:02:58Z","labels":["bug","contrib:open","orchestrator"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"bb-1d1","title":"test-swarm-2","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-02-16T07:56:22Z","created_by":"zenchantlive","updated_at":"2026-02-16T07:56:22Z","labels":["gt:agent","swarm:test-swarm-1"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"bb-zzr","title":"test-swarm-3","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-02-16T07:56:22Z","created_by":"zenchantlive","updated_at":"2026-02-16T07:56:22Z","labels":["gt:agent","swarm:test-swarm-1"],"dependency_count":0,"dependent_count":0,"comment_count":0}
{"id":"bb-5pw","title":"test-swarm-1","status":"open","priority":2,"issue_type":"task","owner":"jordanlive121@gmail.com","created_at":"2026-02-16T07:56:16Z","created_by":"zenchantlive","updated_at":"2026-02-16T07:56:16Z","labels":["gt:agent","swarm:test-swarm-1"],"dependency_count":0,"dependent_count":0,"comment_count":0}

75
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View file

@ -0,0 +1,75 @@
name: Bug Report
description: Something is broken
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for reporting! A maintainer will create a corresponding bead to track this.
- type: input
id: summary
attributes:
label: What happened?
description: One sentence.
placeholder: "Dashboard crashes when opening graph view with no Dolt running"
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: What did you do to hit this?
placeholder: |
1. Clone repo, npm install
2. Run `beadboard start` (no Dolt)
3. Click Graph tab
4. See error in console
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What should have happened?
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
description: What happened instead? Include error messages if any.
validations:
required: true
- type: input
id: platform
attributes:
label: Platform
description: OS and version
placeholder: "macOS 15.3 / Windows 11 / Ubuntu 24.04"
validations:
required: true
- type: input
id: versions
attributes:
label: Versions
description: "Output of: node -v, bd --version, beadboard --version"
placeholder: "Node 20.11, bd 0.61.0, beadboard 0.1.0"
validations:
required: false
- type: dropdown
id: dolt
attributes:
label: Dolt installed?
options:
- "Yes, running"
- "Yes, not running"
- "No"
validations:
required: true

8
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View file

@ -0,0 +1,8 @@
blank_issues_enabled: true
contact_links:
- name: Discussions
url: https://github.com/zenchantlive/beadboard/discussions
about: Chat with the community, coordinate on contributions, get help
- name: Available work
url: https://github.com/zenchantlive/beadboard/issues?q=is%3Aissue+is%3Aopen+label%3Acontrib%3Aopen
about: Browse issues tagged for community contribution

View file

@ -0,0 +1,56 @@
name: Feature Request
description: Suggest something new
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Got an idea? Describe it below. If it's approved, we'll create a bead and tag it `contrib:open` if it's available for community work.
- type: input
id: summary
attributes:
label: What do you want?
description: One sentence.
placeholder: "A public 'contribute' view in the dashboard showing contrib:open beads"
validations:
required: true
- type: textarea
id: problem
attributes:
label: What problem does this solve?
description: Why do you need this? What's the pain without it?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: How should it work?
description: Describe the behavior you're imagining. Doesn't need to be detailed — just enough to understand the idea.
validations:
required: false
- type: dropdown
id: area
attributes:
label: Area
options:
- Dashboard (UI/views)
- CLI (bb/beadboard)
- Orchestrator (bb-pi)
- Agent communication (mail/reservations)
- Beads integration (bd)
- beadboard-driver skill
- Documentation
- Other
validations:
required: true
- type: checkboxes
id: contribution
attributes:
label: Would you like to work on this?
options:
- label: "I'd like to implement this myself (or have my agent do it)"

169
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,169 @@
# Contributing to BeadBoard
We welcome contributions — from humans, AI agents, or both working together. This guide covers how to contribute well regardless of how you write your code.
**[Join the Discussion](https://github.com/zenchantlive/beadboard/discussions)** if you want to discuss ideas, coordinate on larger work, or just say hi.
---
## Finding work
There are two ways to find things to work on:
**GitHub Issues** — the public-facing list. Browse [open issues](https://github.com/zenchantlive/beadboard/issues) for bugs, feature requests, and help-wanted items.
**Beads** — if you have `bd` installed, you can see work tagged for community contribution:
```bash
bd list --label contrib:open
```
These are curated tasks that are scoped, unblocked, and ready for someone to pick up. If you want to work on one, comment on the linked GitHub Issue (or open one if there isn't one) so we know you're on it.
---
## Before you start
### Quality gates
Every PR must pass these before review:
```bash
npm run typecheck && npm run lint && npm run test
```
If these fail, fix them. PRs with failing gates will be closed without review.
### Claim your work
Comment on the GitHub Issue before starting. This prevents two people from working on the same thing. If you're using `bd`:
```bash
bd update <bead-id> --status in_progress --assignee <your-name>
```
---
## PR guidelines
### Keep PRs small and focused
- **Under ~100 lines** — merge fast, review easy, everyone's happy
- **One issue per PR** — don't bundle unrelated changes
- **Over ~200 lines** — open an issue first to discuss the approach. Large unsolicited PRs are hard to review and often get closed
### What makes a good PR
- Clear title that says what changed (not "fix stuff" or "update code")
- Reference the GitHub Issue: `Fixes #22` or `Relates to #15`
- Tests for new functionality
- Don't break existing tests
- If you changed behavior, say why
### What will get your PR closed
- Failing quality gates
- Unrelated changes bundled together
- Reformatting code you didn't otherwise change
- No description or context
- Ignoring review feedback
---
## For AI agents
We're an agent-first project — AI-assisted contributions are not just tolerated, they're the point. Here's how to set up properly:
### Option 1: Use beadboard-driver (recommended)
```bash
npx skills add zenchantlive/beadboard --skill beadboard-driver
```
This gives your agent the full operating contract: environment validation, bead workflow, mail coordination, verification gates. The [SKILL.md runbook](skills/beadboard-driver/SKILL.md) walks through the 9-step session lifecycle.
### Option 2: Just use bd + the gates
```bash
npm install -g @beads/bd
cd beadboard
bd list --label contrib:open # find available work
# ... do the work ...
npm run typecheck && npm run lint && npm run test
```
### Tell your agent
You can paste this into your agent's context:
> You're contributing to BeadBoard (https://github.com/zenchantlive/beadboard), a multi-agent orchestration system built on Beads. Clone the repo, run `npm install`, then check `bd list --label contrib:open` for available work. Install the beadboard-driver skill with `npx skills add zenchantlive/beadboard --skill beadboard-driver` and follow the SKILL.md runbook. Run `npm run typecheck && npm run lint && npm run test` before submitting. Keep PRs under 100 lines and reference the GitHub Issue.
### Agent-specific notes
- Your agent should be able to run the quality gates and fix failures autonomously
- If your agent creates a PR, you (the human) are responsible for it — check that it makes sense before submitting
- Agent PRs follow the same size guidelines as human PRs
- If you want your agent to take on larger work, start a Discussion and coordinate with us first
---
## Bead labels for contributors
| Label | Meaning |
|-------|---------|
| `contrib:open` | Available for community contribution — scoped, unblocked, ready |
| `bug` | Something is broken |
| `cleanup` | Code quality, dead code, refactoring |
| `orchestrator` | Related to bb-pi (under construction — help welcome!) |
---
## Development setup
```bash
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install
npm run dev # http://localhost:3000
```
### Install Dolt (recommended)
```bash
brew install dolt # macOS
# or: curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash
```
### Run a single test
```bash
node --import tsx --test tests/lib/parser.test.ts
```
New test files must be added to the `test` script in `package.json` — the suite is explicitly enumerated.
---
## Code guidelines
- Keep runtime pages minimal in `src/app` — promote logic to `src/lib`, `src/components`, `src/hooks`
- Follow existing TypeScript and React patterns in the codebase
- Don't refactor code you're not otherwise changing
- Don't add comments, docstrings, or type annotations to untouched code
---
## Be professional
This is an open source project maintained by volunteers. That means:
- Respond to review feedback. If a maintainer asks you to change something, change it or explain why not.
- Don't argue with rejections. If your PR is closed, it's not personal.
- Don't open the same PR twice after it's been closed.
- If you're stuck or unsure, ask in [Discussions](https://github.com/zenchantlive/beadboard/discussions) before submitting.
---
## License
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).

620
README.md
View file

@ -1,14 +1,19 @@
## 🚧 Orchastrator is wokring, but new, use your own coding agent for now (unless you want to help :) ) 🚧
## 🚧 The bb-pi orchestrator is under construction — [help us build it!](CONTRIBUTING.md) Use your own coding agent alongside BeadBoard for now. 🚧
# BeadBoard
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![GitHub stars](https://img.shields.io/github/stars/zenchantlive/beadboard?style=social)](https://github.com/zenchantlive/beadboard/stargazers)
[![Built on Beads](https://img.shields.io/badge/built%20on-Beads-blue)](https://github.com/steveyegge/beads)
**Multi-agent swarm coordination system for dependency-constrained work.**
**Multi-agent orchestration and communication system built on [Beads](https://github.com/steveyegge/beads).**
Agents claim tasks, send structured mail to each other, track dependencies, and close work with evidence. BeadBoard is the coordination layer — a dashboard that shows it all happening live, a CLI (`bb`) that hosts the orchestrator and manages agent communication, and a built-in execution runtime ([bb-pi](#-bb-pi-orchestrator)) that can spawn and manage agent workers directly.
Built on [Beads](https://github.com/steveyegge/beads) and inspired by [Gastown](https://github.com/steveyegge/gastown).
![BeadBoard Dashboard](docs/screenshots/image-9.png)
---
## 🚀 Add BeadBoard to Your Agent
@ -17,211 +22,154 @@ Built on [Beads](https://github.com/steveyegge/beads) and inspired by [Gastown](
npx skills add zenchantlive/beadboard --skill beadboard-driver
```
This one command installs the BeadBoard driver skill, enabling your AI agents to:
- Coordinate work through dependency-constrained task graphs
- Communicate with other agents via structured message passing
- Track progress with real-time updates and activity streams
- Manage work state through the `bd` CLI
This installs the [beadboard-driver](skills/beadboard-driver/SKILL.md) skill — a 9-step operating contract that gives your agent:
- 📋 Task coordination through dependency-constrained graphs
- 💬 Structured agent-to-agent messaging (`HANDOFF`, `BLOCKED`, `DECISION`, `INFO`)
- 🔒 Scope-based work reservations with liveness-aware conflict resolution
- 📡 Realtime progress tracking via heartbeats and activity streams
- ✅ Evidence-required workflow — agents can't close work without verification gates
## Installation
Or just tell your agent:
> Install Beadboard, and the beadboard-driver skill from https://github.com/zenchantlive/beadboard and use it to coordinate your work. Run `npx skills add zenchantlive/beadboard --skill beadboard-driver` then follow the SKILL.md runbook.
Then add to your project's `AGENTS.md` or `CLAUDE.md`:
```markdown
## BeadBoard
You have access to the **beadboard-driver** skill.
- Always use beadboard-driver as your entrypoint for coordination work (tasks, context, status)
instead of inventing your own workflow.
- Use it to read and update Beads via `bd`, keep work state consistent with the BeadBoard UI,
and obey 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.
```
See [skills/beadboard-driver/SKILL.md](skills/beadboard-driver/SKILL.md) for the complete agent runbook.
---
## 📦 Installation
### Prerequisites
- **Node.js** 18.18+ (Node 20 LTS recommended)
- **npm** 7.0+
- **Git** (for cloning and version control)
- **[Dolt](https://github.com/dolthub/dolt)** (recommended — see [Dolt section](#-dolt))
### Install from Source
BeadBoard is installed by cloning the repository and installing locally:
```bash
# Clone the repository
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
# Install globally (makes `beadboard` and `bd` commands available)
npm install
npm install -g .
```
This installs:
- `beadboard` - Dashboard launcher
- `beadboard/bb(alias)` - CLI for ORchastrator (built in agent built on [Pi](https://github.com/badlogic/pi-mono)
- `bd` - Beads CLI for task management
> **Note**: BeadBoard is not published to npm yet. We may publish it in the future if there's demand. For now, install from source as shown above.
### Verify Installation
- `beadboard` / `bb` — BeadBoard CLI: dashboard, orchestrator host, agent communication commands
- `bd` — Beads CLI for task management (also available standalone: `npm install -g @beads/bd`)
```bash
beadboard --version
bd --version
```
### Development Setup
For development or contributing:
**Alternative:** POSIX install script (Linux/macOS):
```bash
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install
npm run dev
```
### Update Installation
```bash
cd beadboard
git pull origin main
npm install -g .
bash ./install/install.sh # installs bb + beadboard shims to ~/.beadboard/bin
```
---
## Quick Start
### Start the Dashboard
## ⚡ Quick Start
```bash
# Start with Dolt backend (recommended)
beadboard start --dolt
# Or start without Dolt (limited features)
beadboard start
cd ~/my-project
bd init # initialize Beads in your project
beadboard start --dolt # start the dashboard with Dolt (recommended)
```
Open [http://localhost:3000](http://localhost:3000) to access the coordination dashboard.
### Initialize a Project
Open [http://localhost:3000](http://localhost:3000).
```bash
# Create a new project
mkdir my-project
cd my-project
bd init
# Create your first task
bd create --title "My first task" --type task --priority 0
```
---
## For AI Agents
## 🗄️ Dolt
### Add BeadBoard to Your Agent
BeadBoard uses [Dolt](https://github.com/dolthub/dolt) — a version-controlled SQL database — as its primary backend. Dolt gives you:
- Full version history of every issue state change
- SQL queries across all your issues and projects
- `bd dolt pull` / `bd dolt push` for multi-agent sync across machines
- Branch-based workflows
```bash
npx skills add zenchantlive/beadboard --skill beadboard-driver
# macOS
brew install dolt
# Linux / Windows
curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash
```
This command installs the BeadBoard driver skill, enabling your AI agents to:
- Coordinate work through dependency-constrained task graphs
- Communicate with other agents via structured message passing
- Track progress with real-time updates and activity streams
- Manage work state through the `bd` CLI
**[→ Full Agent Integration Guide](#agent-integration)**
Without Dolt, BeadBoard falls back to reading `.beads/issues.jsonl` directly. This is enough to poke around, but you'll want Dolt for real work.
---
## 🔧 What BeadBoard Does
---
BeadBoard is three things:
## Quick Start
### The Dashboard
A live operations console with Social, Graph, and Activity views — updating in realtime via SSE as agents work.
### For Human Users
### The CLI (`bb`)
A full agent command center — not just a dashboard launcher:
```bash
# Clone and install from source
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install -g .
beadboard start
# Agent lifecycle
bb agent register --name <id> --role <role>
bb agent list
bb agent activity-lease --agent <id>
# Agent-to-agent communication
bb agent send --from <id> --to <id> --bead <id> --category HANDOFF --subject "..."
bb agent inbox --agent <id>
bb agent ack --agent <id> --message <msg-id>
# Work reservations
bb agent reserve --agent <id> --scope <scope> --bead <id>
bb agent release --agent <id> --scope <scope>
# Orchestrator runtime
bb daemon start
bb daemon tui # interactive orchestrator REPL
bb daemon bootstrap # install Pi runtime
```
Open [http://localhost:3000](http://localhost:3000) to access the coordination dashboard.
### For Agent Developers
```bash
# Install the skill to your project
npx skills add zenchantlive/beadboard --skill beadboard-driver
# Or install globally for all your projects
npx skills add zenchantlive/beadboard --skill beadboard-driver --global
```
Then add to your project's `AGENTS.md`:
```markdown
## BeadBoard Integration
- Working directory: Run all `bd` commands from project root
- Source of truth: `bd` CLI manages all work state
- Evidence required: Never claim done without verification gates
```
### The Orchestrator ([bb-pi](#-bb-pi-orchestrator))
A built-in execution runtime that spawns and manages typed worker agents.
---
Open [http://localhost:3000](http://localhost:3000) to access the dashboard.
## 🧩 Core Features
---
## Agent Integration
BeadBoard is designed for AI agent coordination. Agents work in their own project repositories while humans observe and coordinate through the BeadBoard UI.
### Configuration
Add the following to your project's `AGENTS.md` or `CLAUDE.md`:
```markdown
## BeadBoard
You have access to the **beadboard-driver** skill. [page:22]
- Always use beadboard-driver as your entrypoint for coordination work (tasks, context, status) instead of inventing your own workflow.
- Use it to read and update Beads via `bd`, keep work state consistent with the BeadBoard UI, and obey 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 adhoc.
```
### Key Concepts
| Component | Purpose |
|-----------|---------|
| `bd` | Beads CLI - task and dependency management |
| `bb` | BeadBoard CLI - dashboard launcher |
| `beadboard-driver` skill | Agent operating contract for coordination |
See [skills/beadboard-driver/SKILL.md](skills/beadboard-driver/SKILL.md) for the complete agent runbook.
---
## What BeadBoard Does
BeadBoard 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
![BeadBoard Dashboard - Multi-agent coordination interface showing task graph, agent pool, and activity stream](docs/screenshots/image-9.png)
---
## Core Features
### 1. Agent Communication System
### 💬 Agent Communication System
Structured message lifecycle for inter-agent coordination:
- **Message states**: `unread`, `read`, `acked`
- **Message categories**: `HANDOFF`, `BLOCKED`, `DECISION`, `INFO`
- **Required acknowledgment** for high-signal categories (`HANDOFF`, `BLOCKED`)
- **Broadcast & role-based routing** — send to all agents or by role (`role:tester`)
- **Per-task threads** combining activity events, agent mail, and local interactions
- **Message states**: `unread``read``acked`
```bash
bd mail inbox
@ -229,144 +177,74 @@ bd mail send --to <agent> --bead <id> --category HANDOFF --subject "Ready for re
bd mail ack <message-id>
```
### 2. Swarm Coordination Surface
### 🔒 Work Reservations
Agent Pool Monitor with:
Agents can lock scopes (file paths, task regions) to prevent conflicting work:
- TTL-based reservations (default 120 min)
- Liveness-aware conflict resolution — stale agents (15min no heartbeat) can be taken over
- File-based mutex prevents race conditions
- Archetypes and templates for agent specialization
- "Needs Agent" queue for unassigned work
- Pre-assigned queue for reserved tasks
- Squad roster for active team members
![Swarm Coordination Panel - Agent pool monitor showing archetypes, assignment queues, and squad roster](docs/screenshots/image-7.png)
### 3. Graph + Dependency Topology
### 📊 DAG Graph Visualization
DAG-oriented workspace for execution decisions:
- Task/dependency tab modes for different planning lenses
- Blocker/unblock context surfaced in task cards
- Graph analysis support (cycle detection, blocked-chain identification)
- Task and dependency tab modes for different planning lenses
- Blocked chains highlighted, assignees on nodes
- Cycle detection and blocked-chain identification
![Dependency Graph View - DAG visualization showing task dependencies and execution order](docs/screenshots/image-8.png)
![Dependency Graph View](docs/screenshots/image-8.png)
### 4. Global Project Scope + Scanner
### 👥 Swarm Coordination
- Project registry and scanner-backed discovery
Agent pool monitor with:
- **Archetypes** — typed agent roles (architect, engineer, reviewer, tester, investigator, shipper)
- **Templates** — preset team compositions (`feature-dev`, `bug-fix`, `full-squad`, `greenfield`, `research-and-discovery`)
- "Needs Agent" queue for unassigned work
- Pre-assigned queue and squad roster
![Swarm Coordination Panel](docs/screenshots/image-7.png)
### 📡 Realtime Operations
- Live updates via Chokidar file watchers + Server-Sent Events
- Activity stream with session/task context
- Agent heartbeat and liveness tracking (active → stale → evicted)
### 🌐 Multi-Project Scope
- Project registry with scanner-backed discovery
- Single-project and aggregate modes
- Runtime scope switching without leaving the workspace
### 5. Realtime Operations Layer
---
- Live updates via file watchers + Server-Sent Events
- Activity stream integration with session/task context
- Mutation/writeback feedback integrated into the operational surface
## 🤖 bb-pi Orchestrator
> 🚧 **Under active construction.** The orchestrator works but has known issues being fixed. Use your own coding agent alongside BeadBoard for now, or help us improve it!
bb-pi is BeadBoard's embedded execution runtime, built on [Pi](https://github.com/badlogic/pi-mono) ([@mariozechner/pi-coding-agent](https://www.npmjs.com/package/@mariozechner/pi-coding-agent)). It runs a long-lived orchestrator per project that spawns typed worker agents, tracks their bead claims, and streams a live transcript.
**Working today (Phases 1-3):**
- 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...)
- **Capability-gated agent types** — architects/reviewers get read-only tools, engineers/testers get full code edit/write/bash
- **Template-based team spawning** via `bb_spawn_team` — spin up a full squad from a preset
- Bead-required workflow — every worker 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
- Interactive orchestrator REPL via `bb daemon tui`
**Known issues being fixed:**
- Double-reply rendering in orchestrator chat
- Silent failures — errors not yet surfaced to UI
- Session race condition under rapid use
**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).
---
## Installation & Setup
### Prerequisites
- Node.js `18.18+` (Node `20 LTS` recommended)
- npm
### Clone + Install
```bash
git clone https://github.com/zenchantlive/beadboard.git
cd beadboard
npm install
npm install -g .
```
This makes `beadboard` and `bd` commands available globally.
**Alternative: Platform-specific wrappers**
If you prefer not to install globally via npm, you can use the platform-specific wrappers.
POSIX (Linux/macOS):
```bash
bash ./install/install.sh
### Development Setup
```bash
npm run dev
```
Open [http://localhost:3000](http://localhost:3000)
### Production Deployment
```bash
npm run build
npm run start
```
---
## Usage & Examples
### CLI Commands
```bash
# Start BeadBoard dashboard
beadboard start
# Start with Dolt database
beadboard start --dolt
# Open dashboard in browser
beadboard open
# Check status
beadboard status
```
### Workflow Example
```bash
# 1. Navigate to your project
cd ~/my-project
# 2. Start Dolt (if using version-controlled data)
bd dolt start
# 3. Start BeadBoard
beadboard start --dolt
# 4. Open dashboard
beadboard open
```
### Common Patterns
**Coordinate through Graph + Pool:**
```
Open /?view=graph → inspect dependency topology → drive assignment from pool panel
```
**Communicate in Context:**
```
Open task thread → read merged conversation → process message acknowledgments
```
**Switch Scope:**
```
Use registry/scanner controls → move between local and aggregate project scope
```
**Track Live Signal:**
```
Use social/activity views → monitor execution movement and operational events
```
---
## Architecture
### High-Level Design
## 🏗️ Architecture
```
┌─────────────────────────────────────────────────────────────┐
@ -376,188 +254,118 @@ Use social/activity views → monitor execution movement and operational events
│ │ View │ │ View │ │ View │ │ Panel │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
┌────────────┼────────────┐
│ │ │
┌─────▼─────┐ ┌────▼────┐ ┌────▼─────┐
│ SSE │ │ Dolt │ │ Watchers│
│ Events │ │ DB │ │ (Chokidar)│
└───────────┘ └─────────┘ └──────────┘
│ │ │
└────────────┼────────────┘
┌──────▼──────┐
│ bd │
│ (Beads CLI)│
└─────────────┘
│ │ │ │
┌────▼──────────────▼──────────────▼──────────────▼────┐
│ bb CLI / bb-pi runtime │
│ agent register · agent send · daemon tui · spawn │
└──────────────────────────┬───────────────────────────┘
┌────────────────┼────────────────┐
│ │ │
┌─────▼─────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ SSE │ │ Dolt │ │ Chokidar │
│ Events │ │ (SQL DB) │ │ Watchers │
└───────────┘ └─────────────┘ └─────────────┘
│ │ │
└────────────────┼────────────────┘
┌──────▼──────┐
│ bd │
│ (Beads CLI) │
└─────────────┘
```
### Tech Stack
| Layer | Technologies |
|-------|-------------|
| Frontend | Next.js 15, React 19, TypeScript |
| Frontend | Next.js 15 (App Router), React 19, TypeScript (strict) |
| Styling | Tailwind CSS, Radix UI, Framer Motion |
| Graph | XYFlow, Dagre |
| Graph | @xyflow/react, Dagre |
| Database | Dolt (version-controlled SQL) |
| Realtime | Chokidar watchers, Server-Sent Events |
| Validation | Zod schemas, strict TypeScript |
| Agent Runtime | @mariozechner/pi-coding-agent (bb-pi) |
### Data Flow
1. **Write Path**: `bd` commands write to `.beads/issues.jsonl` and Dolt DB
2. **Read Path**: UI queries Dolt SQL server (falls back to JSONL if unreachable)
1. **Write path**: `bd` commands write to `.beads/issues.jsonl` and Dolt DB
2. **Read path**: UI queries Dolt SQL (falls back to JSONL when Dolt is unavailable)
3. **Realtime**: `bd` touches `.beads/last-touched` → Chokidar fires → SSE event → UI update
### Runtime Artifacts
### Key Concepts
| Directory | Purpose | Git Status |
|-----------|---------|------------|
| `.beads/` | Beads database, issues, coordination state | gitignored |
| `.agents/` | Agent skills and configuration | gitignored |
| Component | Purpose |
|-----------|---------|
| `bd` | Beads CLI — task and dependency management |
| `bb` / `beadboard` | BeadBoard CLI — dashboard, orchestrator host, agent commands |
| `bb-pi` | Embedded Pi execution runtime (under construction) |
| `beadboard-driver` | Agent skill — operating contract for coordination |
---
## Project Structure
## 🌍 Platform Support
Runs on macOS, Linux, and Windows.
- **macOS / Linux**: `bash ./install/install.sh` installs shims to `~/.beadboard/bin`
- **Windows**: Path handling canonicalizes drive letter casing and backslash normalization. Mixed WSL2 + Windows setups require mirrored networking.
---
## 📁 Project Structure
```text
beadboard/
├── src/
│ ├── app/
│ │ ├── page.tsx # Active runtime route
│ │ └── api/ # Runtime API routes
│ ├── components/
│ │ ├── shared/ # Reusable UI components
│ │ ├── graph/ # Dependency graph components
│ │ ├── social/ # Social/activity views
│ │ ├── swarm/ # Swarm coordination panel
│ │ └── sessions/ # Agent session components
│ ├── hooks/ # React hooks
│ └── lib/ # Core domain logic
│ ├── app/ # Next.js App Router pages + API routes
│ ├── components/ # UI: shared, graph, social, swarm, agents, sessions
│ ├── hooks/ # React hooks (subscriptions, URL state, etc.)
│ ├── lib/ # Core domain logic (parser, types, mail, registry, etc.)
│ └── tui/ # Orchestrator TUI + agent tools
├── skills/
│ └── beadboard-driver/ # Agent skill package
├── install/ # Platform install scripts
├── reference/
│ └── routes/ # Archived route implementations
├── docs/ # Documentation
└── tests/ # Test suite
│ └── beadboard-driver/ # Agent skill package (runbook + scripts + tests)
├── install/ # Platform install scripts
├── docs/ # PRDs, roadmaps, ADRs, screenshots
└── tests/ # Test suite (explicitly enumerated in package.json)
```
### Key Files
| File | Purpose |
|------|---------|
| `src/app/page.tsx` | Main dashboard entry point |
| `src/lib/` | Core domain: Beads model, graph builders, coordination |
| `skills/beadboard-driver/SKILL.md` | Agent operating contract |
| `AGENTS.md` | Agent operating manual for this repo |
| `next.config.ts` | Route redirects and Next.js config |
---
## Routes
### Active Route
- `/` - Main dashboard (query-driven)
### View Modes
| URL | View |
|-----|------|
| `/?view=social` | Agent social feed |
| `/?view=graph` | Dependency graph |
| `/?view=activity` | Activity timeline |
### Compatibility Redirects
| Old Route | Redirects To |
|-----------|--------------|
| `/graph` | `/?view=graph` |
| `/sessions` | `/?view=social` |
| `/timeline` | `/?view=activity` |
| `/mockup` | `/` |
---
## Contributing
### Development Workflow
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/my-feature`
3. Make changes following existing patterns
4. Run quality gates:
## 🛠️ Scripts
```bash
npm run typecheck
npm run lint
npm run test
```
5. Submit a pull request
### Code Guidelines
- Keep active runtime pages minimal in `src/app`
- Promote reusable logic to `src/lib`, `src/components`, `src/hooks`
- Archive experimental routes in `reference/routes`
- Follow existing TypeScript and React patterns
- Add tests for new functionality
### Code of Conduct
- Be respectful and inclusive
- Focus on constructive feedback
- Support newcomers to the project
---
## Scripts
```bash
npm run dev # Development server
npm run dev # Development server (localhost:3000)
npm run build # Production build
npm run start # Production server
npm run typecheck # TypeScript validation
npm run typecheck # TypeScript validation (tsc --noEmit)
npm run lint # ESLint
npm run test # Test suite
npm run video # Remotion video preview
npm run video:render # Render video
npm run test # Full test suite
```
---
## Changelog
### v0.1.0 (Current)
- Initial release
- Multi-agent coordination system
- Graph-based dependency visualization
- Real-time updates via SSE
- Agent mail and communication system
- Swarm coordination panel
- Global project scope switching
> New test files must be added to the `test` script in `package.json` — the suite is explicitly enumerated, not auto-discovered.
---
## Roadmap
## 🤝 Contributing
- Cross-view assignment controls in all major views
- Enhanced swarm UX and terminology
- Expanded global project configuration workflows
- Witness enforcement layer for agent liveness
- Additional graph analysis features
We welcome contributions from humans and AI agents. See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full guide.
Quick version:
1. Find work: check [GitHub Issues](https://github.com/zenchantlive/beadboard/issues) or run `bd list --label contrib:open`
2. Small PRs preferred (under ~100 lines). For larger changes, open an issue first.
3. Run the gates: `npm run typecheck && npm run lint && npm run test`
4. PR against `main`
**[Join the Discussion](https://github.com/zenchantlive/beadboard/discussions)** to coordinate on contributions, get help, or discuss ideas.
---
## License
## 📄 License
[MIT](LICENSE)
---
## Acknowledgments
## 🙏 Acknowledgments
Built on [Beads](https://github.com/steveyegge/beads) and inspired by [Gastown](https://github.com/steveyegge/gastown). Thanks [Steve Yegge](https://github.com/steveyegge)!
Built on [Beads](https://github.com/steveyegge/beads) by [Steve Yegge](https://github.com/steveyegge), inspired by [Gastown](https://github.com/steveyegge/gastown). The bb-pi execution runtime uses [Pi](https://github.com/badlogic/pi-mono) by [@mariozechner](https://github.com/mariozechner).

View file

@ -1,7 +1,7 @@
'use client';
import { useEffect, useMemo, useState } from 'react';
import { Send } from 'lucide-react';
import { Construction, Send } from 'lucide-react';
import type { RuntimeInstance } from '../../lib/embedded-runtime';
import type { OrchestratorChatMessage } from '../../lib/orchestrator-chat';
@ -55,6 +55,13 @@ export function OrchestratorPanel({ orchestrator, thread, projectRoot }: Orchest
return (
<div className="flex h-full min-h-0 flex-col" data-testid="orchestrator-panel">
<div className="border-b border-[var(--border-subtle)] px-4 py-3">
<div className="mb-2 flex items-center gap-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2">
<Construction size={14} className="shrink-0 text-amber-400" />
<p className="text-xs text-amber-200">
Under construction orchestrator has known issues being actively fixed.
<a href="https://github.com/zenchantlive/beadboard" target="_blank" rel="noopener noreferrer" className="ml-1 underline hover:text-amber-100">Track progress</a>
</p>
</div>
<p className="font-mono text-[10px] uppercase tracking-[0.14em] text-[var(--text-tertiary)]">Main Orchestrator</p>
<div className="mt-2 flex items-center justify-between gap-2">
<div>