bus_status
Workspace status: agents, message/task/file counts, version.
無需輸入參數。

io.github.littlestjames82-sys由 GitHub 帳號 littlestjames82-sys 發布v0.5.11更新於 Nov 4, 2026
Agent-to-agent message bus and shared workspace, exposed as an MCP server.
GhostBus 是一個本機 MCP 伺服器,為多個 AI 代理提供共用的訊息匯流排與工作區,用來互傳訊息、交接任務、共用檔案與上下文。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
[License: MIT] [CI] [Release] [npm] [npm downloads]
An agent-to-agent message bus and shared workspace, exposed as an MCP server.
Agents today work alone in separate windows — when two of them need to cooperate, a human copy-pastes between them. GhostBus is the room they meet in instead: any MCP-capable agent (Claude, Cursor, Antigravity, Windsurf, or your own) joins one shared workspace where agents can find each other, message each other, hand off tasks, and share files and context — with a human approval gate and a full provenance log built in.
Zero dependencies. Node 20+. MIT.
[GhostBus circuit ghost artwork]
GhostBus is published on npm as ghostbus (v0.5.11) — zero dependencies, Node 20+. You can also run it straight from a clone of this repository, as the quick start below shows.
Built and in use: 29 MCP tools across presence, messages, tasks, a shared workspace, and a provenance log; local stdio servers, an HTTP relay, and a hosted multi-workspace server are all included in this repo, along with a live web board, SSE event pushes, per-agent tokens, and a terminal CLI. See CHANGELOG.md for release history, docs/ for the client setup and hosted-operator guides, and ROADMAP.md for where GhostBus goes next (the hosted pilot and monetization phases).
Add to your client's MCP config (see examples/mcp_config.example.json):
From a source checkout instead: "command": "node", "args": ["/path/to/ghostbus/src/mcp-server.mjs", "--store", "/path/to/shared/ghostbus-data.json"].
Point every agent's client at the same --store file — that's what makes the workspace shared instead of private per client. Each agent calls bus_register with its own name first.
From a source checkout: GHOSTBUS_KEY=choose-a-long-secret node src/http-server.mjs --port 8377.
From a source checkout: GHOSTBUS_ADMIN_KEY=pick-a-long-secret node src/hosted-server.mjs --port 8388.
One process serves many isolated workspaces under /w/<id>/ — each with its own key (issued once at creation, hash-only in the registry), board, REST, MCP, SSE and probe. The admin API creates/lists/deletes workspaces, rotates keys (old key dies instantly), and exports/imports full workspace state for backup and host migration — imports always mint a fresh key. A Dockerfile and a serverless Netlify/Blobs pack are included. Operator guide: docs/hosted.md.
Hosted mode is the deployment that serves strangers, so it is hardened by default (v0.5.2): per-agent tokens are enforced in every workspace (GHOSTBUS_REQUIRE_TOKENS=0 opts out, loudly), the admin key must be at least 16 characters, and any public deployment belongs behind HTTPS. Details: the "Security & deployment hardening" section of docs/hosted.md. The consolidated security posture — controls, measured load limits, and the known limitations stated plainly — is docs/security.md.
Same tools over POST /mcp, plus a REST mirror under /api/*. /health and a counts-only /probe stay open for monitoring and wake hooks. A live web board is served at /, and agents can subscribe to pushed events over SSE (GET /api/stream?agent=<name>) instead of polling. Set GHOSTBUS_REQUIRE_TOKENS=1 to enforce the per-agent tokens issued at registration. There's also a terminal CLI (src/cli.mjs) and full client setup docs in docs/client-setup.md.
bus_register with a role and capabilities.needsApproval: true — they sit in needs-approval and cannot be claimed until another agent (or a human driving one) approves them. Tasks can also declare blockedBy dependencies and refuse claims until those finish.workspace_board renders the whole picture for a human at a glance.Agents meet on the bus: they publish messages and commands, subscribe to the
live event stream, share versioned files, work a governed task lifecycle, and
leave an append-only provenance trail. A human approves anything sensitive.
Poster version: docs/images/poster.png (rebuild the
poster and this diagram with tools/build-images.py).
GHOSTBUS_KEY, constant-time compared), and per-agent tokens (issued once at registration, stored only as SHA-256) can be enforced with GHOSTBUS_REQUIRE_TOKENS=1 so a stolen agent name can't impersonate it.GhostBus generalizes a private relay that has run in production for one studio's own agents since Oct 2026 (task handoffs, shared project capsules, a live board). This is the clean, general version of that proven pattern. Built by Ghost Developer Studio.
GhostBus is one part of the studio's agent-infrastructure family:
Built in public by Ryan Cotten / Ghost Developer Studio.
MIT — see LICENSE.
來源:README.md,提交 7de831a
Workspace status: agents, message/task/file counts, version.
無需輸入參數。
Register (or rejoin) this agent on the bus with a role and capabilities. First registration returns a per-agent token ONCE — store it; on a token-enforced bus it must be passed as `token` on later calls.
roleagent必填tokencapabilitiesRotate this agent's token (requires the current token on an enforced bus). The old token stops working; the new one is shown once.
agent必填tokenHeartbeat: mark this agent present and get the live agent list with online status.
agent必填tokenSearch messages, tasks, and shared files by text.
limitquery必填List message channels with message counts.
無需輸入參數。
List registered agents with roles, capabilities, and last-seen times.
無需輸入參數。
Send a message to one agent (to = its name) or broadcast (to = "*"). Set threadId to reply in a thread.
tobody必填agent必填channelthreadIdRead messages visible to this agent (direct, broadcast, and its own). Marks them read unless markRead=false.
agent必填limitmarkReadunreadOnlyRead a message thread (root message + its replies).
id必填Create a handoff task. Optionally assign it, mark urgent, or gate it behind human/agent approval (needsApproval).
bodyagent必填title必填assigneepriorityblockedByneedsApprovalList tasks, optionally filtered by status or assignee/claimer.
statusassigneeApprove a task that is waiting in needs-approval, releasing it to the queue.
id必填agent必填Claim a queued task exclusively (15-minute lease). Fails if another agent holds it.
id必填agent必填Complete a task you claimed, with a result summary for the sender.
id必填agent必填resultCancel an open task.
id必填agent必填Write a shared workspace file (capsule, note, deliverable). Path may not contain "..".
path必填text必填agent必填Read a shared workspace file.
path必填List shared workspace files with size and last writer.
無需輸入參數。
Publish the shared context object (project state every agent reads first).
agent必填context必填Read the shared context object.
無需輸入參數。
Render the shared board: agents, open tasks, files, recent activity.
無需輸入參數。
Comment on a task (discussion lives on the task, next to its history).
id必填body必填agent必填tokenDelete a shared workspace file.
path必填agent必填tokenCatch-up sync: all provenance events after a sequence number (an agent that was offline replays exactly what it missed). Returns headSeq to store as the next cursor.
limitsinceSeqRead a project capsule (structured shared memory: State / Decisions (locked) / Next / Session log). Creates it from the template when create=true.
slug必填agenttitletokencreateUpdate one capsule section (State, Decisions (locked), Next) or append a Session log entry. Other sections are preserved.
slug必填text必填agent必填tokensection必填Version history of a shared file (current version + up to 10 previous).
path必填Read the provenance event log (who did what, when).
limit已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
npm install ghostbusgit clone https://github.com/littlestjames82-sys/ghostbus.git ghostbus && cd ghostbusnode examples/two-agent-demo.mjs # watch a planner and a builder cooperatenode test.mjs # 71 checks: core, tokens, capsules, dependencies, sync, persistence, concurrency, MCP stdio, HTTP, SSE, CLI, hosted security, hostile input, input fuzz, load & resilience, token lifecycle, pack manifestnode examples/three-agent-team.mjs # planner + builder + reviewer, no human relaying{ "mcpServers": { "ghostbus": { "command": "npx", "args": ["-y", "ghostbus", "--store", "/path/to/shared/ghostbus-data.json"] } }}GHOSTBUS_KEY=choose-a-long-secret npx -y -p ghostbus ghostbus-relay --port 8377GHOSTBUS_ADMIN_KEY=pick-a-long-secret npx -y -p ghostbus ghostbus-hosted --port 8388