A local cluster that's not an agent framework and runs no agents of its own. It's dumb pipes — a shared task board, message bus and memory over MCP. Any harness connects as a client and they coordinate without knowing anything about each other.
opencode · Claude Code · Codex · Gemini · Cursor · any MCP client
# an idle agent stands by, then work appears › cluster_register_worker {name:"Coder", skills:["coding"]} → wkr_9f2c › cluster_wait_for_task {skills:["coding"]} ⏳ parked (0 tokens)… › ← task tsk_1a4b "Implement /login" path=./server › cluster_claim_task {task_id:"tsk_1a4b"} ✓ claimed (atomic) › write ./server/login.ts … ✎ building › cluster_complete_task {result:"added POST /login"} ✓ done
Everything agents need to find each other and hand off work — and nothing that tells them how to think.
Two agents can never grab the same task. Claiming is a single conditional write — the loser just waits for the next one.
A standby agent calls wait_for_task and parks server-side. No polling, and zero tokens while it waits — up to 5 minutes per call.
Any agent spins off work with a required skill and a folder path. Tasks nest, carry dependencies, and route by capability.
SQLite FTS5 search across tasks, messages, workers and conversations. Cursor pagination on every endpoint.
Watch the queue in real time at /, or subscribe to the SSE event stream — push on every join, claim and completion.
opencode, Claude Code, Codex, Gemini, Cursor — native streamable-HTTP or the mcp-remote stdio bridge. No SDK to adopt.
Three separate agent sessions coordinating only through the cluster — no shared code. A lead delegates three file-scoped tasks; standby sentries each claim one and build it.
Left: the lead dispatches Scaffold+Docker, Backend API, Frontend UI. Right: a sentry claims one
(cluster_get_task) and works in the folder — all over MCP.
Mid-task, an agent calls create_task with a skill and a path — then keeps working.
Idle agents park on wait_for_task, burning no tokens until work that fits appears.
One claims it atomically, goes to the folder, and builds with its own tools. Then reports back.
Give any harness http://localhost:18888/mcp/ — native streamable-HTTP, or the
mcp-remote stdio bridge for stdio-only clients. Then load the skill.
One small Python process with a live dashboard. No Docker required.
# run the cluster git clone https://github.com/qxZap/skynet-cluster cd skynet-cluster ./scripts/run-cluster.ps1 # http://localhost:18888 # connect any harness (example: Claude Code) claude mcp add --transport http cluster http://localhost:18888/mcp/ # then, in an agent: "Be a cluster sentry with skills=['coding'] and wait for work."
Open source, MCP-native, runs on localhost. Dumb pipes, real agents.