If you have access to multiple AI coding CLIs (Codex, Cursor, Antigravity, and OpenCode), this plugin lets Claude Code delegate to whichever one is best for the task — without you having to switch tools or run them yourself.
Each CLI is wired up through its native transport (Codex via ASP, Cursor via headless agent -p, Antigravity via its headless agy CLI, OpenCode via headless opencode run --format json). This lets you pick and choose the best features from each — like /cursor:delegate for fast implementation, /codex:review for code review, /antigravity:research for deep research, or /opencode:delegate to offload implementation to OpenCode's Zen models. Sessions, streaming, tool calls, and background jobs all work normally.
Paste into Claude Code:
/plugin marketplace add https://github.com/greenpolo/cc-multi-cli-plugin
/plugin install multi@cc-multi-cli-plugin
/multi:setup
/multi:setup detects which CLIs you have, installs the matching sub-plugins, and wires Exa + Context7 MCPs into each.
Two skills ship with the plugin:
-
multi-cli-anything — adds ANY CLI beyond the four built-in providers (Aider, Qwen, or anything with a headless/print, app-server, or structured transport) as a subagent that Claude can invoke at will. Claude scaffolds the new plugin in the marketplace.
-
customize — change which CLI handles what. "Make Codex the executor instead of Cursor." Claude does the file edits, reinstalls, and tells you what restarts are needed.
Just ask Claude in plain English. The skills activate automatically.
Provider commands live under each CLI's namespace; the cross-cutting /multi:* commands operate the shared runtime.
| Command | What it does |
|---|---|
/codex:execute |
Delegate a specific plan or plan step to Codex |
/codex:rescue |
Hand a stuck or open-ended problem to Codex for an independent investigation |
/codex:review |
Codex code review of your working tree or a branch (read-only) |
/codex:adversarial-review |
Adversarial design/code review — challenges the approach, not just the diff (read-only) |
/cursor:delegate |
Delegate an implementation task or plan step to Cursor (agentic; writes code; supports --until-done) |
/cursor:research |
Read-only external web/documentation research via Cursor |
/cursor:explore |
Read-only codebase exploration via Cursor |
/antigravity:research |
Deep external research with Antigravity (Gemini 3.5 Flash, read-only; experimental) |
/antigravity:explore |
Fast codebase exploration with Antigravity (Gemini 3.5 Flash, read-only; experimental) |
/opencode:delegate |
Delegate an implementation task to OpenCode (agentic; writes code; supports --until-done; default model: opencode/claude-opus-4-8 via Zen) |
/opencode:research |
Read-only external web/documentation research via OpenCode |
/opencode:explore |
Read-only codebase exploration via OpenCode |
/multi:setup |
One-shot wizard — detects CLIs, configures Exa + Context7 MCPs |
/multi:status |
Show active and recent background jobs for this repo |
/multi:result |
Show the stored final output for a finished job |
/multi:cancel |
Cancel an active background job |
Claude can also auto-dispatch the provider commands without you typing them.
All of them are interchangeable, and can be altered to whatever you want using the customize skill.
These are upstream CLI quirks and current limitations. If you hit something not listed, check the companion's stderr (the forwarders append 2>&1) — a bad model id, an auth failure, or a sandbox block surfaces there. (ACP_TRACE=1 still exists for ACP-based CLIs, but none of the shipped providers use ACP: Cursor runs headless agent -p and Antigravity headless agy.)
-
Cursor runs in headless
agent -pmode (not ACP). The adapter delivers the prompt on stdin, selects the model with--model(defaultauto), and parsesjson/stream-jsonoutput. This sidesteps the older ACP-mode bugs (silent MCP drop, model-hint quirks). MCP servers come from Cursor's own~/.cursor/mcp.json, which/multi:setupmaintains. -
Cursor's shell is slow/unreliable on Windows. Cursor's terminal tool can stall or wait out a per-command timeout on Windows (host-PATH/WSL, open upstream). So
/cursor:delegatedoes not run build/test verification itself — it lists the commands in a## Verificationblock and Claude runs them. File writes and web/codebase reads are unaffected. -
Antigravity runs via the headless
agyCLI (experimental). Install theagyCLI (https://antigravity.google) and runagyonce interactively to sign in — the desktop app is not required./multi:setupreports whetheragyis detected. -
Antigravity reads its answer from a transcript, not stdout.
agy's headless print mode (agy -p) currently emits nothing to stdout when piped (an upstream bug, gemini-cli#27466, unfixed as of agy 1.0.3), so the adapter recovers the model's answer fromagy's on-disk conversation transcript. Consequences: read-onlyresearch/exploreonly (no write-delegate), the model is fixed to Gemini 3.5 Flash (no per-call--model), and there are no token-usage metrics on this path. This is a deliberate workaround pending the upstream stdout fix. -
OpenCode has no
--read-onlyflag. For read-only roles (/opencode:research,/opencode:explore), the adapter enforces read-only by injecting a custom primary agent viaOPENCODE_CONFIG_CONTENTwith write/edit/bash denied, plus anOPENCODE_PERMISSIONdeny floor. A stale bunopencode.exemay shadow the npm.cmdshim on Windows — the adapter never resolves toopencode.exe; setOPENCODE_CLI_PATHto force the right binary if needed. -
OpenCode token offload:
anthropic/*models = zero offload. Calling OpenCode with ananthropic/*model routes through the same Claude subscription as Claude Code — no cost savings. Useopencode/*(Zen),openai/*,google/*,github-copilot/*, orollama/*models for real offload. The adapter default isopencode/claude-opus-4-8(Zen, billed separately). Override withOPENCODE_CLI_DEFAULT_MODEL. -
OpenCode
--effortis not supported. The--effortflag is Codex-only; OpenCode ignores it.--until-doneis supported. -
OpenCode MCP servers are not managed by
/multi:setup. OpenCode reads MCP configuration from its ownopencode.json; use OpenCode's interactive wizard to wire Exa/Context7 there.
When upstream CLIs change behavior, the plugin's adapters absorb it — these notes track the current state.
Apache 2.0. See NOTICE for upstream credits.
