Harness Council
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Harness Councilspawn an explore worker to map the auth system"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Harness Council
Local multi-harness orchestration for Claude Code, Grok CLI, and AGY CLI — spawn AI coding agents from different vendors as visible terminal workers, pass context between them, and watch them work in a 2×2 grid.
Council owns jobs + shared context. Harnesses own intelligence. cmux owns visibility.
You + Claude (plan) ──spawn──► AGY (explore) / Grok (code)
▲ │
└──────── result + notify ─────┘
(visible splits in cmux)Guides
Doc | Contents |
Install, daemon, cmux, Claude MCP, plugin, config, troubleshooting | |
Roles, CLI/MCP, explore→code flow, 2×2 layout, auto-close | |
Any harness as the top orchestrator — AGENTS.md/GROK.md snippet, routing precedence |
Related MCP server: Claude Code MCP - Agent Orchestration Platform
Requirements
Tool | Role | Notes |
Node.js 22+ | runtime | uses |
visibility | recommended — splits/tabs for workers | |
orchestrator / worker | optional | |
Grok CLI | worker | optional, |
AGY CLI | worker | optional |
Only the harnesses you actually route to need to be installed — any one of them can be the top orchestrator (docs/ORCHESTRATOR.md).
Quick start
git clone https://github.com/dorukanc/harness-council.git
cd harness-council
npm install && npm run build
npm link # or: export PATH="$PWD/bin:$PATH"
council setup
council daemon start
council spawn --role explore "Map the auth system"
council spawn --role code --effort high "Implement rate limiting"
council list
council result <job_id>What you see in cmux
Default layout is a 2×2 grid of splits, then tabs if more workers start:
First worker → split right
Next → split down
Up to 4 worker panes (2×2)
More → tabs on worker panes
When a job completes successfully, its surface auto-closes so space frees for the next worker. Failed jobs stay open for inspection.
[display]
layout = "grid"
grid_max = 4
close_on_complete = true
close_on_failed = falseClaude Code
MCP (recommended):
{
"mcpServers": {
"harness-council": {
"command": "council",
"args": ["mcp"]
}
}
}Optional plugin: plugins/claude-code (skill + /spawn + stop-hook). Details in docs/SETUP.md.
Register the MCP server once at user scope and every project works with no per-project setup — no CLAUDE.md line required. The council-runtime skill loads itself when you ask for delegation.
Per-project overrides (optional)
Only when a repo should route differently from your defaults:
council init # writes .harness-council.toml + a CLAUDE.md block
council init --file AGENTS.md --no-tomlBoth writes are idempotent — re-running updates the managed block between
<!-- harness-council:start --> / <!-- harness-council:end --> and leaves the rest of
your file alone. The generated TOML is fully commented: it documents what the project
resolves to today, and stays inherited from ~/.harness-council/config.toml until you
uncomment a key.
Default roles
Role | Harness | Purpose |
| claude | Planning |
| grok | Implementation |
| agy | Cheap scout / research |
| grok (read-only) | Second pass |
Configure in ~/.harness-council/config.toml or project .harness-council.toml.
Architecture
council CLI / MCP → local daemon → SQLite jobs + context store
→ adapters (claude | grok | agy)
→ cmux grid layout + auto-closeDevelopment
npm test
npm run typecheck
npm run build
npm run council -- setupHow the daemon talks to cmux
cmux's default socket auth (cmuxOnly) verifies process ancestry, so a detached daemon can never open splits. When started from inside cmux, the daemon therefore runs in its own council · daemon tab; closing that tab stops it. Outside cmux everything still works headlessly.
Status
v0.1 — daemon (cmux-tab hosted), CLI, adapters, grid layout, auto-close, MCP, Claude plugin (local marketplace install), orchestrator-agnostic docs.
Contributing
Issues and PRs welcome. Before submitting:
npm run typecheck && npm testAdding a new harness is intentionally small: implement the HarnessAdapter interface in src/adapters/ (binary resolution, readiness, command building, result parsing) and register it in src/adapters/index.ts.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
The operating system for self-organised AI agent teams.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceOrchestrates multiple AI models (Gemini, OpenAI, Claude, local models) within a single conversation context, enabling collaborative workflows like multi-model code reviews, consensus building, and CLI-to-CLI bridging for specialized tasks.-
- AlicenseAqualityDmaintenanceOrchestrates multiple Claude Code agents across iTerm2 sessions with process-level isolation, enabling collaborative AI development workflows on multiple codebases with task-based inter-agent communication and persistent state management.71MIT
- AlicenseAqualityCmaintenanceTerminal multiplexer MCP server for orchestrating parallel AI agents. Manages workspaces, panes, surfaces with send_input/read_screen/spawn_agent/stop_agent tools. Supports Claude Code, Codex, Gemini, Cursor CLI agents with lifecycle management, browser automation, and agent status push via Claude --channels.2026Apache 2.0
- AlicenseAqualityAmaintenanceEnables one AI coding agent to delegate tasks to, and build consensus across, multiple other coding CLIs (Claude Code, Codex, etc.) by orchestrating them as headless subprocesses.186MIT