Octopus Blackboard

io.github.octoryn由 GitHub 帳號 octoryn 發布v0.3.1更新於 Oct 24, 2026

Shared memory & coordination for AI coding agents — a blackboard, not an orchestrator.

發布方自己的服務:Octopus.do

概覽

AI 產生的概覽

一個本機優先的共享黑板,讓多個 AI 程式代理在同一個儲存庫上記錄認領、任務、決策、訊息和提交歸屬。

可以做什麼
讀寫黑板:查看狀態、時間軸、筆記、認領、風險、證據、檔案變更和決策,並在兩個代理認領同一工作或檔案時提出衝突提醒。協調任務:定義看板任務、指派到某個代理的收件匣、更新進度,以及傳送訊息、交接和心跳。追蹤歸屬:開始和結束工作階段、關聯提交、記錄 AI 或人工審查,並查詢誰改過某個檔案、解釋某次提交、追溯某一行或列出未經審查的 AI 提交。治理與移轉:執行唯讀的 CI 檢查、匯出和匯入帶簽章的歸屬包、產生提交 trailer、簽章並驗證雜湊鏈、清理或去識別化條目,以及匯入 CLI 工作階段紀錄。
適用情境
當多個 AI 程式代理或 CLI 在同一個程式碼儲存庫上工作時適用,可讓它們看到彼此的認領、決策和檔案變更,並保留可稽核、可重播的紀錄,說明哪次提交由哪個代理產生。
執行需求
透過 npx 以本機 stdio 程序執行,需要 Node 22 或更新版本。黑板目錄(.octoboard/)會從工作目錄往上尋找或自動建立,也可用 OCTOBOARD_DIR 指定。代理身分來自 OCTOBOARD_AGENT,預設值為 anon。選用的 Postgres 同步需要 pg 驅動程式。
安裝前請注意
代理會寫入共享黑板,可建立任務、訊息、交接、認領和歸屬紀錄;黑板只提示衝突,不會阻擋操作。去識別化並非加密抹除,不應在黑板上存放機密。簽章金鑰保存在黑板目錄下的本機位置。團隊同步會把歸屬紀錄推送到共享檔案或 Postgres 資料庫。Git 整合只讀取歷史並附加 git notes。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Octopus Blackboard,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Octopus Blackboard]

Octopus Blackboard

A shared memory and coordination layer for AI coding agents.

Agents do not need another boss. They need a shared blackboard.

简体中文

Part of Octopus Core — the open infrastructure stack for governed AI. One job per repo, along the agent lifecycle: Scout · Observe · Experience · Blackboard · Workstate · Runtime · Replay — with Inspect governing every stage. The whole stack rides one root primitive — Evidence, the canonical, tamper-evident atom that is the root category everything is built on.

This repo — Blackboard · Coordinate: Shared cognition for coding agents.

[How it works: agents connect over MCP to a shared blackboard that records and exposes but never orchestrates, producing a conflict-aware kanban, AI attribution, a CI review gate, and a tamper-evident audit trail]


Claude Code, Codex, Gemini CLI, Cursor, and your local agents all work on the same repo — but they are blind to each other. One refactors auth while another rewrites the same file. Context is scattered across CLIs. Nobody can replay what happened.

Octopus Blackboard is not an orchestrator. It does not schedule agents, trigger them, or decide anything on their behalf. It is a passive, local-first shared memory that answers six questions:

text
Who is working on what      →  agents, tasks, claimsWhat changed                →  files_changedWhat was decided            →  decisionsWhat evidence exists        →  evidenceWhat risks are open         →  risksWhat was left for whom       →  messages, handoffs

Every agent only needs to be able to read the board, write the board, leave messages, and attach evidence. That's the whole contract.

Why

[Without a shared board, agents work blind — duplicate edits, no attribution, unseen conflicts. With Octopus Blackboard they share memory and produce a conflict-aware kanban, attribution, a review gate, and an audit trail]

Enterprises are not primarily afraid that agents aren't smart enough. They are afraid that:

  • Multiple AI tools edit the same code simultaneously
  • Context is scattered across different CLIs
  • There is no shared memory, no audit, no handoff
  • There is no conflict awareness and no way to replay

The blackboard cuts straight through this. Every write appends a tamper-evident, hash-chained entry to an append-only timeline, so the entire history is auditable and replayable — and any after-the-fact edit to an earlier entry breaks verification.

Get Started in 2 Minutes

Blackboard is the easiest way into the Octopus stack — pure coordination memory that works today with just Claude Code and Cursor, no orchestrator required. One command sets everything up:

bash
npx octopus-blackboard quickstart

That single command: creates the local board (.octoboard/) if it isn't there, auto-detects your MCP client (.claude/ → Claude Code, .cursor/ → Cursor, … otherwise a generic snippet), prints the exact paste-ready config for it, and proves the board works with one write + one read.

Then just:

  1. Paste the printed config block into the file it names.
  2. Reload your MCP client (restart it, or reopen the project).
  3. You're done. Ask your agent to call board_status, then board_note "hello" — that's your first board action, on a shared, tamper-evident timeline.

Re-running quickstart is always safe: it never clobbers an existing board or its history. New to the idea of adopting a coordination layer first? See Why adopt Blackboard first.

Install

bash
npm installnpm run build      # compiles to dist/

Requires Node ≥ 22. The board is a single SQLite file under .octoboard/, discovered by walking up from your working directory (like .git).

See it in action

examples/two-agents.sh plays out the flagship scenario — Claude Code and Codex sharing one board on the same repo: a claim conflict, a live same-file collision, a decision, attribution, a handoff that lands in the other agent's inbox, an AI review, the human-approval CI gate (blocked → passes), the accountability scorecard, blame→narrative, and a verified hash chain with session signatures. Run it in an empty directory:

bash
bash examples/two-agents.sh          # needs `octoboard` on PATH

CLI

bash
octoboard init                                   # create .octoboard/ hereoctoboard status                                 # who's on the board, right now
octoboard note "Codex is refactoring auth middleware"octoboard claim trust-layer-policy-schema        # claim work; warns on conflictoctoboard message claude "Review policy edge cases before merge"octoboard decision "Use hash-chain audit log" --why "tamper-evidence"octoboard risk "Migration may break audit replay" --severity highoctoboard file src/auth.ts --change modified --task trust-layer-policy-schemaoctoboard handoff claude "Tests pass except policy replay" --task trust-layer-policy-schema
octoboard timeline                               # the full hash-chained historyoctoboard verify                                 # confirm the chain is intact

Identity is set with --as <agent> or the OCTOBOARD_AGENT environment variable. Point at a specific board with --board <dir> or OCTOBOARD_DIR.

Conflict awareness

The board never blocks — it surfaces. If two agents claim the same key, or touch the same task's files, both writes are recorded and the second agent is warned:

text
⚠ CONFLICT: "trust-layer-policy-schema" is also held by codex. Both claims recorded.

AI attribution & shared development memory

Git records who pushed a commit. It does not record which AI agent produced the code, in which session, on which machine, whether another AI reviewed it, or whether a human approved it. As AI-native development becomes common, accountability must move beyond Git authorship.

The blackboard adds an attribution layer on top of Git — it never rewrites history. Git stays the source of code; the blackboard becomes the source of attribution.

Sessions

A session is one continuous execution of an agent, and the unit attribution hangs off. Starting one makes every subsequent write attribute to it (the active session is remembered across CLI invocations, per agent):

bash
export OCTOBOARD_AGENT=claude OCTOBOARD_PROVIDER=anthropic \       OCTOBOARD_MODEL=claude-opus-4-8 OCTOBOARD_CLI=claude-code
blackboard session start --label "auth work"   # captures machine, branch, repoblackboard claim policy-engineblackboard file src/policy.ts --change modified# ... make a git commit ...blackboard link HEAD                            # attribute the commit's filesblackboard session stop

Identity is fully provider-independent — --provider, --model, --cli, or the matching OCTOBOARD_* env vars. Any AI CLI (local or cloud) can register itself with no assumptions about a specific vendor.

Linking commits

blackboard link <rev> reads the files a commit touched (via Git) and records one attribution per file for the active session. Optionally it writes an additive git notes entry under refs/notes/blackboard:

bash
blackboard link HEAD --noteblackboard attribute <sha> --file src/x.ts --actor human --name Ran  # manual

Reviews

bash
blackboard review HEAD --by ai   --name codex --outcome approved --note "tests pass"blackboard review HEAD --by human --name Ran   --outcome approved

Querying the shared memory

bash
blackboard who src/auth.ts             # git authors + AI sessions that touched itblackboard who src/auth.ts --line 42   # which session introduced this lineblackboard explain HEAD                # attribution + reviews + related decisionsblackboard commits claude-code         # which commits came from an AI / CLIblackboard unreviewed                  # AI commits never reviewed by a humanblackboard joint claude codex          # files modified by BOTH agentsblackboard timeline --session <id>     # per-session HH:MM timeline

Example explain:

text
commit 5fa3095…  Human Dev <[email protected]>  add auth  produced by:    ai claude [claude-opus-4-8] — src/auth.ts  reviews:    human Ran: approved  git note: blackboard: produced by claude-code (claude-opus-4-8), session 75b2b7e7…

Every attribution, review, session, and decision is also recorded in the hash-chained timeline, so the full accountability history is tamper-evident and replayable. blackboard and octoboard are the same command.

Governance & accountability chain

[The accountability chain: agent does work → attribute the commit → export/import → CI gate blocks unreviewed AI → human approves → merge, all recorded on the tamper-evident timeline]

The point of attribution is to enforce something. The chain from work to a merge gate:

text
agent work → commit attribution → export/import → CI check → human-review gate

CI gate (check)

Turn queries into an enforceable gate. Read-only — it reports pass/fail and exits non-zero; the CI system decides what to do. The blackboard never blocks.

bash
# In CI, on a PR branch — fail the build if any AI commit isn't human-APPROVED# (a rejected / changes-requested review does not clear the gate):blackboard check --range origin/main..HEAD --require-human-reviewecho $?   # 0 = pass, 1 = violations
blackboard check --verify-chain --require-attribution --range origin/main..HEADblackboard check            # default gate: verify chain + require human review

Portability (export / import / trailers)

Attribution is local-first; these make it survive git push into a team board or CI:

bash
blackboard export --range origin/main..HEAD --out attribution.json  # on the dev machineblackboard import attribution.json                                   # on the team board / CIblackboard trailers HEAD                                             # trailer lines for a commit message

import is idempotent (keyed by row id). The bundle carries attributions, reviews, sessions, and related decisions.

Subscribe (watch)

Complete the read/write/subscribe/message contract. Passive: it polls and reports; it never pushes work.

bash
blackboard watch --for claude     # only messages/handoffs/conflicts addressed to meblackboard watch                  # the full streamblackboard watch --once           # one-shot poll (for scripts)

Signed sessions (sign / verify)

Minimal identity (v0): each session gets an Ed25519 keypair (private key stays local under .octoboard/keys/, gitignored). Signing the timeline head lets verify distinguish trusted state from merely asserted:

bash
blackboard sign        # sign the current head with the active session keyblackboard verify      # chain integrity + which sessions have signed, trusted/stale

A session auto-signs its head on session stop. A signature over a head becomes stale the moment any earlier history is altered — so tampering is visible even though the signature itself stays cryptographically valid. This is not yet a full PKI (no key distribution or revocation).

Ingesting CLI transcripts

Populate the board from a CLI's session transcript instead of calling the API by hand — file edits, decisions, and notes flow onto the active session:

bash
blackboard ingest ~/.claude/transcript.jsonl --format claude-codeblackboard ingest session.jsonl --format codex        # also: gemini, grokblackboard ingest events.json    --format generic --dry-run

claude-code/codex/gemini/grok use a conservative tool-use JSONL heuristic (it finds file edits from file_path/notebook_path and patch/write tool calls). generic reads a normalized schema — the stable integration path for any CLI:

json
{ "events": [  { "type": "file", "path": "src/auth.ts", "change": "modified" },  { "type": "decision", "title": "use ed25519", "rationale": "small keys" },  { "type": "note", "text": "left policy edge cases for review" }] }

Team backend

Boards stay local-first; sync shares the portable attribution records (never a board's private hash chain) into a team store — a shared file or Postgres.

bash
blackboard sync push --target /shared/team.json          # file (shared drive)blackboard sync pull --target postgres://host/blackboard # team database (needs `pg`)

export signs the bundle with your active session key; import verifies it and import --require-signed refuses unsigned or tampered bundles — so imported attribution has origin authenticity, not just id-dedup.

Tamper-evidence goes further than the in-DB chain if you anchor the head externally:

bash
blackboard anchor --git-note              # record seq:hash on the commit (or --out file)blackboard verify --against git-note      # prove history wasn't truncated/altered

Liveness and compliance:

bash
blackboard session heartbeat        # mark your session alive (active vs stale)# `blackboard file ...` now warns if another LIVE session is editing the same file
blackboard prune --before 2026-01-01T00:00:00Z   # retention: drop old messages/                                                 # evidence/file-changes (timeline kept)blackboard redact 42 --reason PII                # hide a timeline entry's content

prune never touches the append-only timeline (the audit trail). redact blanks the content across every read path — the timeline overlay and the underlying source row (a message body, evidence note, etc.) so inbox/status/ the dashboard can't leak it — while keeping the hash chain valid. It is not cryptographic erasure: the original summary stays in the timeline row so the chain still verifies, so don't store secrets you must be able to destroy. For tamper-evidence against an attacker with database write access, anchor the head hash externally (a commit, a log, a second machine) — verify shows an unanchored warning when it can't confirm the tail.

Tasks & kanban

Tasks are kanban cards — number, content, owner (which agent / CLI), project, blast radius, risk, and live progress. "Notifying an agent" is passive: assigning a task drops a "please look at task #N" message in that agent's inbox; the agent reads it and decides to act — the board never launches anyone.

[The read-only blackboard serve dashboard, a live kanban of tasks]

The live blackboard serve dashboard — read-only, auto-refreshing. Each card shows the task number, progress bar, assignees, active-agent count (⚡), project, and a risk-coloured border.

bash
blackboard task add auth-mw --title "Refactor auth middleware" \  --project octopus-api --impact "src/auth.ts, src/db.ts" --risk highblackboard assign 1 claude       # → drops "please look at task #1 …" in claude's inboxblackboard progress 1 40         # → moves #1 to in-progress, 40%blackboard tasks                 # kanban view, grouped by statusblackboard task show 1           # full card: owner, project, impact, risk, files

The read-only serve dashboard renders these as a live kanban (columns by status; each card shows number, title, a progress bar, assignees, active-agent count, project, and a risk-coloured left border). Agents drive it via the MCP tools board_task_define, board_assign, board_progress, board_tasks — an agent calls board_progress as it works so the bar moves in real time.

Visibility

bash
blackboard report          # scorecard: review coverage %, AI/human ratio, per-agentblackboard blame src/auth.ts 42   # trace a line → the session that wrote it, and its                                  # other work, decisions, and handoffs (blame → narrative)blackboard serve           # read-only local web dashboard (http://localhost:4319)

The dashboard is dependency-free (node:http), strictly read-only (non-GET is refused), and auto-refreshes: live timeline, sessions, conflict/attribution state, and the accountability scorecard.

MCP server — connect any CLI

The blackboard speaks standard MCP over stdio, so any MCP-capable client (Claude Code, Cursor, Codex, Gemini CLI, VS Code, Windsurf, …) can read and write the board. Generate the exact config for your client in one step:

bash
blackboard mcp-config cursor        # → ~/.cursor/mcp.json blockblackboard mcp-config claude-code   # → project .mcp.json blockblackboard mcp-config codex         # → ~/.codex/config.toml (TOML)blackboard mcp-config gemini        # → ~/.gemini/settings.json blockblackboard mcp-config vscode        # → .vscode/mcp.json (servers block)blackboard mcp-config               # → generic mcpServers JSON (any client)

Each prints where to paste it and the ready-to-use snippet, e.g.:

json
{  "mcpServers": {    "blackboard": {      "command": "npx",      "args": ["-y", "octopus-blackboard-mcp"],      "env": { "OCTOBOARD_AGENT": "cursor" }    }  }}

The agent identity defaults to the client name (so Cursor writes as cursor, Codex as codex); override with --agent. The board is auto-discovered from .octoboard/ in the working directory, or pin it with --dir. Two CLIs pointed at the same .octoboard/ now share one board — that's the whole point.

Tools exposed — coordination: board_status, board_timeline, board_note, board_claim, board_task_define, board_task, board_tasks, board_assign, board_progress, board_message, board_inbox, board_handoffs, board_decision, board_evidence, board_file_changed, board_risk, board_handoff, board_heartbeat, board_since; attribution: session_start, session_stop, board_link, board_attribute, board_review, board_who, board_explain, board_blame, board_unreviewed, board_report; governance & portability: board_check, board_export, board_import, board_trailers, board_sign, board_trust, board_prune, board_redact, board_ingest. Each accepts an optional agent argument to override the acting identity per call.

The recommended pattern: an agent calls board_status before starting work to see what everyone else is doing, and writes as it goes.

Data model

LayerTablesPurpose
Who is presentagents, sessionsprovider-independent identity, session context
What's happeningtasks, messages, handoffscoordination — claim, message, hand off
Who produced whatattributions, reviewsAI/human attribution & review, keyed by commit
Settled factsdecisions, evidence, files_changed, risks, timelineauditable shared memory

timeline is the append-only hash chain every other write also records into, so the board and its audit log can never diverge.

Architecture

text
better-sqlite3 (local-first, default)  + MCP server   (read / write board)  + CLI          (octoboard ...)  + hash-chain audit log (the timeline)  + optional Postgres sync   (portable attribution records)  + optional git / file watcher (planned)

Status

Public beta (v0.3). Working today: local SQLite board, CLI (octoboard / blackboard), MCP server, a verifiable hash-chained timeline, first-class sessions, provider-independent AI/human attribution keyed to Git commits, reviews, the query layer (who, explain, commits, unreviewed, joint), the read-only serve dashboard, signed import/export bundles, retention, redaction, quickstart, and MCP registry metadata/publishing workflow. Git integration is read-only plus additive git notes — history is never rewritten. Team sync supports a shared JSON file and a Postgres target for portable attribution records; the board's private hash chain remains local by design. Change subscriptions and deeper Octopus cross-repo bridges are still roadmap work.

License

Apache-2.0 © Octoryn. See LICENSE.

來源:README.md,提交 6ddc0fe

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Octopus 整合