A local SQLite-based "blackboard" for sharing context between Claude Code sessions and subagents. Rather than maximum concurrnecy, the goal is session-independence for agentic coding. Never cling to a context window or terminal tab because the context is already saved. This opens up the ability to move between interactive hands-on work and autonomous containerized workers.
Creates a persistent database that stores:
- Threads: Lightweight changesets that model context
- Plans: Captured when exiting plan mode (part of a thread)
- Steps: Parsed from TodoWrite tool usage (or manually managed)
- Breadcrumbs: Progress records from subagents
- Reflections: Session insights and learnings
- Corrections: Recorded mistakes and their solutions
- Bug Reports: Blocking issues with reproduction steps
# In Claude Code, add the marketplace
/plugin marketplace add bfollington/claude-blackboard
# Install the plugin
/plugin install blackboard@bfollington# Clone the repo
git clone https://github.com/bfollington/claude-blackboard.git
# In Claude Code, add as local marketplace
/plugin marketplace add ./claude-blackboard
# Install
/plugin install blackboard@claude-blackboard- Deno 2.x (required for the blackboard CLI)
# Install Deno if not already installed curl -fsSL https://deno.land/install.sh | sh
- Ensure
~/.deno/binis in your PATH:export PATH="$HOME/.deno/bin:$PATH"
If you launch claude and run /blackboard:install claude will attempt to guide you through the setup process.
After installing the plugin, you need to install the blackboard CLI command:
# Navigate to the plugin directory (usually in ~/.claude/plugins/)
cd ~/.claude/plugins/cache/claude-blackboard/<version>/blackboard/cli
# Install the CLI globally
deno task installThis installs the blackboard command to ~/.deno/bin, making it available globally with a single Bash(blackboard:*) permission in Claude Code.
The plugin automatically creates .claude/blackboard.db (and .db-shm and .db-wal files) in your project on session start. The database is project-specific and should be gitignored.
The blackboard CLI provides all functionality through a unified command with subcommands for both interactive use and hook handlers.
-
Planning: Enter plan mode (Shift+Tab twice), describe what you want to build. When you approve and Claude calls
ExitPlanMode:- The plan is stored in the blackboard
- Orchestration instructions are injected
-
Step Creation: Claude breaks the plan into steps using
TodoWrite. Each todo becomes a trackedplan_step. -
Staged Execution: Claude spawns subagents (using the
implementeragent) to work on steps. Each subagent:- Queries the database for context
- Implements its assigned step(s)
- Records a breadcrumb before returning
3.a. At any stage, end the session etc. and you can resume it safely - plans and todos are automatically captured in the DB.
- Completion: When all steps are done, run
/reflectto capture learnings.
You can perform any operations Claude would manually using the blackboard CLI.
Create threads and next-ups visually, edit plans in your system editor and kick off containerized workers.
Blackboard workers run inside Docker containers. By default, they use the plugin's base Dockerfile, but you can customize the worker environment for your project's specific needs.
To add project-specific dependencies (language runtimes, packages, build tools):
-
Generate a template Dockerfile:
blackboard init-worker
-
Edit
Dockerfile.workerin your project root to add your dependencies. The template includes examples for Python, Rust, Go, and Node.js projects. -
Build and spawn workers with your custom image:
blackboard spawn my-thread --build
When you run blackboard spawn --build or blackboard farm --build, the CLI looks for a Dockerfile in this order:
Dockerfile.worker(project root) - Your project-specific customizationsblackboard/docker/Dockerfile(plugin directory) - The default base image
If neither exists, you'll be prompted to run blackboard init-worker.
Your custom Dockerfile must preserve these essentials:
- Claude Code CLI (
npm install -g @anthropic-ai/claude-code) - Deno + blackboard CLI installation
- Non-root
workeruser (Claude CLI security requirement) - The entrypoint script
- Environment variables:
CLAUDE_PROJECT_DIR=/app/workandCLAUDE_PLUGIN_ROOT=/app
The template generated by blackboard init-worker includes all of these with clearly marked sections for your additions.
| Command | Description |
|---|---|
/crumb |
Record a breadcrumb (progress marker) |
/reflect |
Capture a reflection on the session |
/oops |
Record a mistake and its resolution |
/bug-report |
File a blocking bug with repro steps |
/status |
Show current blackboard state |
/query |
Run ad-hoc SQL against the database |
blackboard/
├── .claude-plugin/
│ └── marketplace.json # Marketplace manifest
├── commands/ # Slash commands
│ ├── crumb.md
│ ├── reflect.md
│ ├── oops.md
│ ├── bug-report.md
│ ├── status.md
│ └── query.md
├── agents/
│ └── implementer.md # Subagent for staged execution
├── hooks/
│ └── hooks.json # Hook configuration
├── scripts/
│ └── check-cli.sh # CLI installation check
├── schema.sql
└── README.md
├── cli/ # Deno-based CLI (replaces bash scripts)
│ ├── deno.json
│ ├── mod.ts # Entry point
│ └── src/
│ ├── cli.ts # Command tree
│ ├── commands/ # Interactive commands
│ ├── hooks/ # Hook handlers
│ ├── db/ # Database layer
│ ├── output/ # Output formatting
│ ├── types/ # TypeScript types
│ └── utils/ # Utilities
plans- Stored plans with status trackingplan_steps- Individual steps broken down from plansbreadcrumbs- Progress markers from subagentsreflections- Session insightscorrections- Recorded mistakes and fixesbug_reports- Blocking issues
active_plan- Current active/in-progress planpending_steps- Steps not yet completedrecent_crumbs- Last 10 breadcrumbs with context
- Check it's installed:
/plugin - Run Claude Code with
--debugto see loading details
If you see errors about the blackboard command not being found:
- Install Deno 2.x:
curl -fsSL https://deno.land/install.sh | sh - Add
~/.deno/binto your PATH - Install the CLI:
cd ~/.claude/plugins/bfollington-claude-blackboard/blackboard/cli deno task install
- Verify installation:
blackboard --version
The database is created automatically on session start. To manually initialize:
blackboard hook init-db- Verify hooks in
/hooks - Run with
--debugto see hook execution - Ensure the
blackboardCLI is installed and in PATH
- Make changes to files in
blackboard/directory - Uninstall:
/plugin uninstall blackboard@marketplace-name - Reinstall:
/plugin install blackboard@marketplace-name
The CLI is written in TypeScript using Deno. To work on it:
cd blackboard/cli
# Run in development mode with watch
deno task dev status
# Install your local changes globally
deno task install
# Run tests (if available)
deno test
# Format code
deno fmt
# Lint code
deno lintThe CLI uses:
- @cliffy/command for the command-line interface
- @db/sqlite for native SQLite access via FFI
- Prepared statements to prevent SQL injection
- TypeScript for type safety
