CLI-first orchestration for AI coding agents: run selected agents and models in parallel, compare raw answers, and coordinate review or implementation workflows.
$ npx -y skills add mco-org/mco --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
What's inside

MCO is a lightweight, CLI-first orchestration layer for AI coding agents. Give one task to the agents and models you choose, run them in parallel, and compare their raw answers before you act.
Use MCO for code review, implementation, architecture analysis, CI checks, and any workflow where one model's blind spots matter.
It works from a terminal or from another coding agent such as Claude Code, Codex, Cursor, Copilot, Pi, or OpenClaw.
MCO is actively maintained. For a browser workbench with persistent agent identity and a shared task graph, see Hive.
Install the CLI and its bundled mco-cli Skill:
npx @tt-a1i/mco@latest install
Check the agents available on your machine:
mco doctor --json
Run a read-only multi-agent review:
mco review \
--repo . \
--prompt "Review this repository for high-risk bugs." \
--providers claude,codex,pi
Run a coding task with workspace write access:
mco run \
--repo . \
--prompt "Implement the requested change and run the relevant tests." \
--providers codex,pi \
--execution-mode write
MCO never infers a provider/model team from detected binaries. If neither --providers nor --agent is supplied, a top-level providers config entry is used as the saved default; without one, the team must be selected explicitly. A calling agent should still show and confirm the resolved provider/model team with the user before dispatch.
One agent gives you one perspective. MCO turns selected agents into a review or execution team:
MCO keeps answer text opaque. It does not turn natural-language output into findings, severity, confidence, consensus, or an automatic decision.
For explicit review coordination, --perspectives-json adds a Provider-specific prompt focus. --divide files excludes ignored/local/build directories and round-robins the remaining sorted repository files without overlap, while --divide dimensions rotates review lenses in declaration order without changing target paths. These choices are visible in dry-run and arrange only the prompt or scope; the returned invocation answers remain raw.
| Provider | CLI | Provider ID |
|---|---|---|
| Claude Code | claude | claude |
| Codex CLI | codex | codex |
| Gemini CLI | gemini | gemini |
| OpenCode | opencode | opencode |
| Qwen Code | qwen | qwen |
| GitHub Copilot CLI | copilot | copilot |
| Hermes | hermes | hermes |
| Pi | pi | pi |
| Grok Build | grok | grok |
| Cursor CLI | cursor / agent | cursor |
Each provider CLI remains responsible for its own installation, authentication, model access, and native sandbox behavior.
| Goal | Command |
|---|---|
| General multi-agent task | mco run --providers claude,codex --prompt "..." |
| Thin raw-answer code review | mco review --providers claude,codex --prompt "..." |
| Compare multiple models | mco run --agent fast=pi:model-a --agent careful=pi:model-b --prompt "..." |
| Preview without execution | mco review --providers claude,pi --dry-run --json |
| Live terminal progress | mco review --providers claude,codex --stream live |
| Machine-readable events | mco review --providers claude,codex --stream jsonl |
| File-backed chain | mco run --agent first=pi:model-a --agent next=pi:model-b --chain --result-mode artifact |
| Debate and synthesis | mco review --providers claude,codex --debate --synthesize --result-mode both |
| Discover provider models | mco agent models --providers codex,pi --json |
Pin models for one run without changing provider CLI defaults:
mco review \
--providers codex,pi \
--provider-models-json '{"codex":"gpt-5.4","pi":{"provider":"seal","model":"deepseek-v4-pro"}}' \
--prompt "Review this repository for bugs."
MCO translates one execution profile into each provider's native flags:
| Mode | Intended use | Default |
|---|---|---|
read_only | Inspect and review without workspace mutation | mco review |
write | Create and edit workspace files | mco run |
yolo | Use the provider's broadest bypass profile | Explicit opt-in only |
Important boundaries:
--allow-paths validates MCO's requested scope; it is not an operating-system sandbox.--execution-mode yolo.--target-paths and warn about edit conflicts.See Provider and permission reference for the complete mapping.
MCO's CLI is self-describing. A calling agent can read mco -h, resolve saved defaults, confirm the provider/model team with the user, preview the policy, and then execute.
โUse MCO to run a security review with Claude and Codex, and an architecture review with Pi.โ
The installer and runtime use two different selections:
--agent chooses which calling agents receive the MCO Skill.--providers, saved providers config, or runtime --agent declarations choose the task invocations.npx @tt-a1i/mco@latest install --agent codex --agent claude-code --yes
mco doctor --skill-health --json
You or a calling agent
โ
โผ
mco run / review
โ
โโโ Claude โโโ
โโโ Codex โ
โโโ Gemini โโโโบ raw answers / file-backed stages โโโบ output
โโโ Pi โ
โโโ ... โโโโ
โ
text ยท JSON ยท JSONL ยท Markdown artifacts
Provider processes are isolated behind a shared adapter contract: detect, run, poll, cancel, and transport decode. One invocation failure does not discard successful provider answers.
| Topic | Guide |
|---|---|
| Installation, first run, and common workflows | Workflow guide |
| Providers, models, and permission mappings | Provider reference |
| CLI flags, outputs, artifacts, and exit codes | CLI reference |
| Config files and custom agents | Configuration reference |
| Machine-readable error contract | Error contract |
| Invocation and artifact contract | Invocation contract |
| Provider permission contract | Permission contract |
| Release process | RELEASING.md |
| Release history | CHANGELOG.md |
Run mco <command> --help for the authoritative option list installed with your version.
git clone https://github.com/mco-org/mco.git
cd mco
python3 -m pip install -e .
python3 -m unittest discover -s tests -p 'test_*.py'
npm test
MIT โ see LICENSE.
.github/
CODEOWNERS
ISSUE_TEMPLATE/
bug_report.yml
config.yml
feature_request.yml
pull_request_template.md
workflows/
benchmark.yml
gate.yml
preview-package.yml
publish-npm.yml
.gitignore
AGENTS.md
bin/
mco.js
CHANGELOG.md
CLAUDE.md
docs/
archive/
phase-2026-02/
adapter-contract-tests.md
capability-probe-spec.md
capability-research.md
dry-run-plan.md
implementation-gate-checklist.md
multi-cli-orchestrator-proposal.md
notes.md
README.md
task_plan.md
README.md
assets/
brand/
mco-cover-starry.jpg
mco-icon-1024.png
mco-icon.svg
mco-promo-square.jpg
mco-social-preview.jpg
logos/
mco-logo-option-1-orbit.svg
mco-logo-option-2-shield.svg
mco-logo-option-3-parallel.svg
mco-logo-option-4-monogram.svg
mco-logo-option-5-hex-network.svg
mco-logo-option-6-wave-flow.svg
mco-logo-option-7-circuit-badge.svg
mco-logo-option-8-minimal-stripe.svg
mco-logo-readme.svg
mco-logo.svg
contracts/
cli-json-v0.1.x.md
errors-v0.1.x.md
install-and-skill-sync-v0.1.x.md
invocation-runtime-v1.md
provider-permissions-v0.1.x.md
guides/
workflows.md
implementation/
step0-interface-freeze.md
probes/
2026-02-26/
.probe_codex_home/
sessions/
2026/
02/
26/
rollout-2026-02-26T10-30-34-019c97c8-a15b-7453-bebd-bb882448604b.jsonl
rollout-2026-02-26T10-31-46-019c97c9-bc32-7643-bddc-e43dd4ae712f.jsonl
shell_snapshots/
019c97c8-a15b-7453-bebd-bb882448604b.sh
019c97c9-bc32-7643-bddc-e43dd4ae712f.sh
skills/
.system/
.codex-system-skills.marker
skill-creator/
agents/
openai.yaml
assets/
skill-creator-small.svg
skill-creator.png
license.txt
references/
openai_yaml.md
scripts/
generate_openai_yaml.py
init_skill.py
quick_validate.py
SKILL.md
skill-installer/
agents/
openai.yaml
assets/
skill-installer-small.svg
skill-installer.png
LICENSE.txt
scripts/
github_utils.py
install-skill-from-github.py
list-skills.py
SKILL.md
tmp/
arg0/
codex-arg0sEoNjt/
.lock
apply_patch
applypatch
codex-execve-wrapper
claude/
C0/
parsed.json
raw/
stderr.log
stdout.log
result.json
C1/
parsed.json
raw/
stderr.log
stdout.log
result.json
C2/
parsed.json
raw/
stderr.log
stdout.log
result.json
codex/
C0/
parsed.json
raw/
stderr.log
stdout.log
result.json
C1/
parsed.json
raw/
stderr.log
stdout.log
result.json
C2/
parsed.json
raw/
last_message.json
stderr.log
stdout.log
result.json
gemini/
C0/
parsed.json
raw/
stderr.log
stdout.log
result.json
C1/
parsed.json
raw/
stderr.log
stdout.log
result.json
C2/
parsed.json
raw/
stderr.log
stdout.log
result.json
lock-summary.yaml
opencode/
C0/
parsed.json
raw/
stderr.log
stdout.log
result.json
C1/
parsed.json
raw/
stderr.log
stdout.log
result.json
C2/
parsed.json
raw/
stderr.log
stdout.log
result.json
qwen/
C0/
parsed.json
raw/
stderr.log
stdout.log
result.json
C1/
parsed.json
raw/
stderr.log
stdout.log
result.json
C2/
parsed.json
raw/
stderr.log
stdout.log
result.json
C3/
parsed.json
raw/
stderr.log
stdout.log
result.json
schema_c2.json
summary.md
reference/
cli.md
configuration.md
providers.md
releases/
v0.1.0.md
v0.1.0.zh-CN.md
v0.1.1.md
v0.1.1.zh-CN.md
v0.1.2.md
v0.1.2.zh-CN.md
v0.11.0.md
v0.11.0.zh-CN.md
superpowers/
plans/
2026-03-16-diff-only-review.md
2026-03-16-mcp-server.md
specs/
2026-03-16-diff-only-review-design.md
2026-03-16-mcp-server-design.md
2026-03-16-structured-streaming-design.md
templates/
step5-benchmark-report.md.tpl
LICENSE
mco
package-lock.json
package.json
pyproject.toml
README.md
README.zh-CN.md
RELEASING.md
reports/
adapter-contract/
2026-02-26/
ci-artifact-index.json
ci-artifact-index.md
matrix.json
runtime-gh-raw.log
runtime-gh-report.md
runtime-gh-result.json
step1-adapter-dryrun-artifacts/
step1-claude-1772080886/
raw/
claude.stderr.log
claude.stdout.log
step1-claude-1772081317/
raw/
claude.stderr.log
claude.stdout.log
step1-claude-1772082236/
providers/
claude.json
raw/
claude.stderr.log
claude.stdout.log
step1-codex-1772082254/
providers/
codex.json
raw/
codex.stderr.log
codex.stdout.log
step1-adapter-dryrun.json
step1-adapter-dryrun.md
step3-5provider-baseline.md
step4-parallel-benchmark.md
step5-full-parallel.result.json
step5-full-parallel.stderr.log
step5-full-parallel.stdout.log
step5-parallel-benchmark-summary.json
step5-parallel-benchmark.md
step5-serial.result.json
step5-serial.stderr.log
step5-serial.stdout.log
summary.md
dry-run/
2026-02-26/
artifacts-manifest.json
execution-log.md
gate-decision.md
idempotency_key.txt
idempotency-check.json
providers/
claude_run_a.json
claude_run_b.json
codex_run_a.json
codex_run_b.json
gemini_run_a.json
gemini_run_b.json
opencode_run_a.json
opencode_run_b.json
qwen_run_a.json
qwen_run_b.json
raw/
claude_run_a.err
claude_run_b.err
codex_run_a.err
codex_run_a.out
codex_run_b.err
codex_run_b.out
gemini_run_a.err
gemini_run_b.err
opencode_run_a.err
opencode_run_b.err
qwen_run_a.err
qwen_run_b.err
schema.json
state-transition.json
gate/
2026-02-26-signoff.md
review/
bench-parallel2-20260226/
decision.md
findings.json
providers/
claude.json
codex.json
gemini.json
opencode.json
qwen.json
raw/
claude.stderr.log
claude.stdout.log
codex.stderr.log
codex.stdout.log
gemini.stderr.log
gemini.stdout.log
opencode.stderr.log
opencode.stdout.log
qwen.stderr.log
qwen.stdout.log
run.json
summary.md
bench-parallel2b-20260226/
decision.md
findings.json
providers/
claude.json
codex.json
gemini.json
opencode.json
qwen.json
raw/
claude.stderr.log
claude.stdout.log
codex.stderr.log
codex.stdout.log
gemini.stderr.log
gemini.stdout.log
opencode.stderr.log
opencode.stdout.log
qwen.stderr.log
qwen.stdout.log
run.json
summary.md
bench-parallel2c-20260226/
decision.md
findings.json
providers/
claude.json
codex.json
gemini.json
opencode.json
qwen.json
raw/
claude.stderr.log
claude.stdout.log
codex.stderr.log
codex.stdout.log
gemini.stderr.log
gemini.stdout.log
opencode.stderr.log
opencode.stdout.log
qwen.stderr.log
qwen.stdout.log
run.json
summary.md
bench-parallel2d-20260226/
decision.md
findings.json
providers/
claude.json
codex.json
gemini.json
opencode.json
qwen.json
raw/
claude.stderr.log
claude.stdout.log
... 318 moreFAQ
mco is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes mco-cli. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.