A runtime for coding agents. Wrap Claude Code, Codex, Antigravity, Grok Build, OpenCode, or any custom CLI as persistent programmable sessions; coordinate them in multi-agent councils; run autonomous Planner / Coder / Reviewer loops; or hand a five-question interview to an Opus council that ships a deployed web app at
localhost:19000/forge/<slug>/.
Coding CLIs are designed for humans at terminals. Claw Orchestrator turns them into headless engines and stacks an agent platform on top: a 77-tool API that scales from a single session call up to a fully generated, deployed web app — reachable through the CLI, the OpenClaw gateway, the Model Context Protocol, or directly from TypeScript, and visible through an embedded three-tab dashboard.
claw-promo.mp4
Control · Council · Autoloop · Ultraapp — the four movements in 35s
| Capability | What it does | Reference |
|---|---|---|
| Persistent Sessions | Long-lived coding agents kept alive across requests, with full context, tool, model, and worktree control. | sessions.md |
| Multi-Engine Runtime | One interface over Claude Code, Codex, Antigravity (agy), Grok Build, OpenCode, and arbitrary custom CLIs. | multi-engine.md |
| Multi-Agent Council | Parallel agents in isolated git worktrees, voting on consensus until they agree. | council.md |
| Fan-out | Run one task across N engine/model agents in parallel and collect their answers, with an optional synthesis pass — the cross-engine best-of-N / diverse-perspective primitive (no rounds or worktrees). | tools.md |
| ultracode | session_start({ ultracode: true }) lets Claude orchestrate a dynamic JS workflow and fan out to subagents per task (Claude engine). |
tools.md |
| Autoloop | Three-agent autonomous workspace iteration with independent engine/model selection for Planner, Coder, and Reviewer. Chat with the Planner; it spawns Coder + Reviewer into a self-iterating subloop and pushes you on regression, target-hit, or decision points. | autoloop.md |
| Ultraapp | A three-agent Opus council turns a five-question interview into a deployed web app — Tailwind UI, BYOK, file-queue runtime, smoke test, all live at localhost:19000/forge/<slug>/. |
ultraapp.md |
| Embedded Dashboard | Three-tab UI for Autoloop, Council, and Forge with sidebar lifecycle controls, per-run live event streaming, and cookie-based auth via a /login redirect. |
dashboard.md |
| OpenAI-Compatible Proxy | POST /v1/chat/completions translates OpenAI requests into native Anthropic, OpenAI, and Google calls and streams responses back in OpenAI shape. Point any OpenAI-SDK client at the orchestrator without changing call sites. |
openai-compat.md |
| Durable Run Kernel | Declarative workflows over agent / fanout / council / verifier / human_gate / router / subflow / autoloop / ultraapp_* nodes. Every state transition is checkpointed, so a run survives a process restart and resumes at the node boundary. Retry, per-node timeout, cancel, steer, and bounded loops come from the kernel instead of from five hand-rolled state machines. |
workflow.md |
| Verification Plane | Acceptance contracts the runtime executes itself — commands, HTTP probes, screenshots, diff policy, file assertions — producing an evidence bundle on disk. A run carrying a contract cannot reach completed unless it passes, and one without a contract completes as unverified rather than claiming success. |
verification.md |
| Run Ledger & Spend Caps | Every turn on every engine is appended to a durable JSONL ledger — engine, model, tokens, cost, duration, and the council/fanout/autoloop it belonged to — queryable with clawo runs after a restart. Rows carry both the engine's self-report (ok) and the runtime's own measurement (verified), kept apart. maxBudgetUsd is enforced by the runtime, so a cap holds on Codex, Grok, agy and OpenCode too, not just Claude Code. |
observability.md |
The full 77-tool surface is enumerated in tools.md.
npm install -g @enderfga/claw-orchestrator
clawo serve # dashboard at http://127.0.0.1:18796/dashimport { SessionManager } from '@enderfga/claw-orchestrator';
const manager = new SessionManager();
await manager.startSession({ name: 'fix-tests', engine: 'claude', cwd: '/project' });
const result = await manager.sendMessage('fix-tests', 'Fix the failing tests');clawo serve # dashboard + HTTP server on :18796
clawo session-start fix-tests --engine claude --cwd . # start a session
clawo session-send fix-tests "Fix the failing tests" # send into itEvery command is documented in cli.md.
curl -fsSL https://raw.githubusercontent.com/Enderfga/claw-orchestrator/main/install.sh | bashInstalls via npm, registers the plugin in ~/.openclaw/openclaw.json, restarts the gateway. All 77 tools become available to every OpenClaw agent.
npm install -g @enderfga/claw-orchestrator # clawo-mcp is now on PATHRegister clawo-mcp with any MCP-compatible host: Hermes Agent, Claude Desktop, Cursor, Cline, Continue, Zed, Windsurf, Goose, and others. Per-host stdio-config snippets and the CLAWO_MCP_TOOLS allowlist for tight tool budgets are in mcp.md.
clawo acp # or the dedicated binary: clawo-acpMCP gives tools to an agent; ACP makes you be the agent. clawo acp speaks
Agent Client Protocol over stdio, so Zed, JetBrains,
Neovim, Emacs, the VS Code ACP extension — or dsh via its subagent-acp provider —
can drive Claw Orchestrator as their coding agent.
Every other agent in that ecosystem is a single agent. This one is a fleet: the model
selector is grouped by engine, so one dropdown holds Claude, Codex and Grok models at
once and switching it switches engine mid-session, and /council, /ultraplan and
/ultrareview run multi-agent orchestrations from the chat box. Setup, the dsh YAML
block, and the cancellation and permission limitations are in
acp.md.
| Engine | CLI | Tested Version |
|---|---|---|
| Claude Code | claude |
2.1.260 |
| Codex | codex |
0.153.2 |
| Antigravity | agy |
1.1.25 |
| Grok Build | grok |
1.0.13 |
| OpenCode | opencode |
1.18.27 |
| Custom CLI | any | — |
Any coding CLI that runs as a subprocess can be wired up as a custom engine — see multi-engine.md.
The versions above are not typed in — they are what the weekly sweep last ran. scripts/sweep.ts
measures each core engine's installed, pinned and upstream version, diffs the flags the wrapper
passes against the binary's --help, runs one live turn through the real wrapper class, and
smokes the ACP and MCP entry points. It has no LLM in it, so the thing that reports a wrapper as
broken cannot share the wrapper's failure modes.
scripts/sweep-workflow.json wraps it as a durable run on this project's own kernel: verifier →
router → an agent that drafts the alignment on a sweep/<date> branch → a human gate. That is the
bounded form of recursive self-improvement this project practises — the loop measures, proposes and
verifies; a person merges. The orchestrator never edits its own code unattended, on purpose: the
recovery path has to stay simpler than what it recovers. Its first scripted run found a default
model an engine had silently dropped, which three weeks of by-hand sweeps had walked past.
See CONTRIBUTING.md. Run npm run build && npm run lint && npm run format:check && npm run test before submitting.
MIT — see LICENSE.
