{"_id":"@ahmedshaikh/blackboard-mcp","name":"@ahmedshaikh/blackboard-mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ahmedshaikh/blackboard-mcp","version":"0.1.0","type":"module","description":"A shared blackboard for multi-agent coordination, as an MCP server — channels of messages plus shared key/value state, backed by one SQLite file so a main agent and its spawned subagents can read/write the same board.","bin":{"agent-board":"dist/cli.js"},"engines":{"node":">=22"},"scripts":{"serve":"tsx src/server.ts","board":"tsx src/cli.ts","build":"tsc","test":"node --import tsx --test --test-force-exit test/*.test.ts","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.23.8"},"devDependencies":{"@types/node":"^20.11.0","tsx":"^4.7.0","typescript":"^5.4.0"},"license":"MIT","author":{"name":"ahmedshaikh"},"keywords":["mcp","model-context-protocol","claude","agent","ai","multi-agent","coordination","blackboard"],"repository":{"type":"git","url":"git+https://github.com/RaziStuff/blackboard-mcp.git"},"homepage":"https://github.com/RaziStuff/blackboard-mcp#readme","bugs":{"url":"https://github.com/RaziStuff/blackboard-mcp/issues"},"publishConfig":{"access":"public"},"gitHead":"670d3c6ef52989d83c9937ff4a4e6f5373d22ea6","_id":"@ahmedshaikh/blackboard-mcp@0.1.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-zoZ5VWSoud2um7C1J5PGSPSx0A1bkMC2/R0O3tMDUdoeriIAew3hf5PGM7rLPNpLXwGx5P9HDmZI635AcyYiXg==","shasum":"c317948fc6eae295969f58f46e46646a242054e7","tarball":"https://registry.npmjs.org/@ahmedshaikh/blackboard-mcp/-/blackboard-mcp-0.1.0.tgz","fileCount":6,"unpackedSize":9545,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDZ6OYumiqOl6ik8CkoJmPjdMNu5VxZQUrqGnaZ3MGATgIgTZr+7/uCRzPngcLoxRfbQMtBbs/ouwhSutRBD+IibbA="}]},"_npmUser":{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"},"directories":{},"maintainers":[{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/blackboard-mcp_0.1.0_1782701038151_0.3122248074779397"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T02:43:58.035Z","0.1.0":"2026-06-29T02:43:58.295Z","modified":"2026-06-29T02:43:58.471Z"},"maintainers":[{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"}],"description":"A shared blackboard for multi-agent coordination, as an MCP server — channels of messages plus shared key/value state, backed by one SQLite file so a main agent and its spawned subagents can read/write the same board.","homepage":"https://github.com/RaziStuff/blackboard-mcp#readme","keywords":["mcp","model-context-protocol","claude","agent","ai","multi-agent","coordination","blackboard"],"repository":{"type":"git","url":"git+https://github.com/RaziStuff/blackboard-mcp.git"},"author":{"name":"ahmedshaikh"},"bugs":{"url":"https://github.com/RaziStuff/blackboard-mcp/issues"},"license":"MIT","readme":"# blackboard\n\nA **shared blackboard for multi-agent coordination.** When a main agent spawns\nsubagents, they start cold and can't talk to each other. This gives them one\nshared board — message **channels** plus shared **key/value state** — backed by a\nsingle SQLite file every agent process opens.\n\n```\nmain:   post(\"work\", \"summarize the auth module\", author=\"main\")\nsub:    read(\"work\")                  → [{ content: \"summarize the auth module\" }]\nsub:    post(\"results\", \"uses JWTs in src/auth/session.ts\", author=\"sub\")\nmain:   read(\"results\", after_id)     → the answer, when it lands\n```\n\n## Tools\n\n- **`post(channel, content, author?)`** — append a message; returns its id.\n- **`read(channel, after_id?, limit?)`** — messages newer than `after_id` (poll to wait for a reply).\n- **`set_state(key, value)`** · **`get_state(key)`** — shared key/value (results, flags, counters).\n- **`list_channels()`** — channels + message counts.\n\n## How it works\n\nOne SQLite file (default `~/.agent-blackboard/board.db`, override with\n`BLACKBOARD_DB`) in WAL mode with a busy-timeout, so concurrent agent processes\nread and write the same board safely. `node:sqlite` — no native deps.\n\nA typical pattern: main posts tasks to a channel, subagents `read` to pick them\nup and `post` results back; `read(channel, after_id)` polls for the reply.\n\n## Setup\n\n```bash\nnpm install   # Node 22+ (built-in node:sqlite)\nnpm test\n```\n\n```bash\nclaude mcp add blackboard -e BLACKBOARD_DB=/tmp/run123.db -- node /abs/path/blackboard/dist/server.js\n# CLI: agent-board post work \"task\" --author main | read work --after 0 | set k v | get k | channels\n```\n\n## Honest limits\n\n- **No auth/ACLs** — any process pointed at the file can read/write. Scope a run\n  with its own `BLACKBOARD_DB` if you want isolation.\n- **Poll-based**, not push — readers poll with `after_id`; there's no blocking wait.\n- Messages accumulate until you rotate/delete the db (no auto-expiry).\n","readmeFilename":"README.md","_rev":"1-6a5dea4fa899e0c117f11500a640fb7b"}