{"id":45856031,"url":"https://github.com/mco-org/mco","last_synced_at":"2026-03-04T09:00:34.387Z","repository":{"id":340734748,"uuid":"1167337904","full_name":"mco-org/mco","owner":"mco-org","description":"Orchestrate AI coding agents. Any prompt. Any agent. Any IDE. Neutral orchestration layer for Claude Code, Codex CLI, Gemini CLI, OpenCode, Qwen Code — works from Cursor, Trae, Copilot, Windsurf, or plain shell.","archived":false,"fork":false,"pushed_at":"2026-03-03T05:07:30.000Z","size":680,"stargazers_count":112,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-03T09:33:45.496Z","etag":null,"topics":["ai-agents","ai-ide","claude","cli","code-review","codex","copilot","cursor","developer-tools","gemini","multi-agent","orchestration","qwen","trae","windsurf"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mco-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T07:25:48.000Z","updated_at":"2026-03-03T07:28:22.000Z","dependencies_parsed_at":"2026-03-03T08:01:04.368Z","dependency_job_id":null,"html_url":"https://github.com/mco-org/mco","commit_stats":null,"previous_names":["tt-a1i/multi-cli-orchestrator","tt-a1i/mco"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/mco-org/mco","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mco-org%2Fmco","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mco-org%2Fmco/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mco-org%2Fmco/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mco-org%2Fmco/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mco-org","download_url":"https://codeload.github.com/mco-org/mco/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mco-org%2Fmco/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30076935,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-ide","claude","cli","code-review","codex","copilot","cursor","developer-tools","gemini","multi-agent","orchestration","qwen","trae","windsurf"],"created_at":"2026-02-27T04:09:26.694Z","updated_at":"2026-03-04T09:00:34.340Z","avatar_url":"https://github.com/mco-org.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eMCO\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/assets/logos/mco-logo-readme.svg\" alt=\"MCO Logo\" width=\"520\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/npm/v/@tt-a1i/mco\" alt=\"npm version\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License: MIT\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/providers-5%20built--in-green\" alt=\"Providers: 5 built-in\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eMCO — Orchestrate AI Coding Agents. Any Prompt. Any Agent. Any IDE.\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eMCO equips your primary agent with an agent team: dispatch Claude, Codex, Gemini, OpenCode, and Qwen in parallel to execute tasks, review outputs, and synthesize consensus.\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eEnglish | \u003ca href=\"./README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\u003c/p\u003e\n\n\u003ctable align=\"center\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/anthropics/claude-code\"\u003e\u003cimg src=\"https://github.com/anthropics.png?size=96\" alt=\"Claude Code\" width=\"48\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/google-gemini/gemini-cli\"\u003e\u003cimg src=\"https://github.com/google-gemini.png?size=96\" alt=\"Gemini CLI\" width=\"48\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/openai/codex\"\u003e\u003cimg src=\"https://github.com/openai.png?size=96\" alt=\"Codex CLI\" width=\"48\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/sst/opencode\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/sst/opencode/master/packages/console/app/src/asset/brand/opencode-logo-light-square.svg\" alt=\"OpenCode\" width=\"48\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/QwenLM/qwen-code\"\u003e\u003cimg src=\"https://github.com/QwenLM.png?size=96\" alt=\"Qwen Code\" width=\"48\" /\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eClaude Code\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eGemini CLI\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eCodex CLI\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eOpenCode\u003c/strong\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eQwen Code\u003c/strong\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003eclaude\u003c/code\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003egemini\u003c/code\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003ecodex\u003c/code\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003eopencode\u003c/code\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003eqwen\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e AI coding agents are now standard tools for every developer. But one agent is just one perspective.\n\u003e\n\u003e Work like a Tech Lead: assign one task to multiple agents, run in parallel, and compare outcomes before acting.\n\u003e\n\u003e One command. Five agents working at once.\n\n### Works with OpenClaw\n\nRunning [OpenClaw](https://github.com/open-claw/open-claw) on your machine? It can use MCO as its multi-agent backbone. Just tell OpenClaw what you need:\n\n\u003e \"Use mco to run a security review on this repo with Claude, Codex, and Gemini. Synthesize the results.\"\n\nOpenClaw reads `mco -h`, learns the CLI, and orchestrates the entire workflow autonomously. Your local machine becomes a multi-agent review team — OpenClaw is the manager, MCO is the dispatcher, and Claude/Codex/Gemini/OpenCode/Qwen are the team members.\n\nThis works the same way from **Claude Code, Cursor, Trae, Copilot, Windsurf**, or any agent that can run shell commands.\n\n## What is MCO\n\nMCO (Multi-CLI Orchestrator) is a neutral orchestration layer for AI coding agents. It dispatches prompts to multiple agent CLIs in parallel, aggregates results, and returns structured output — JSON, SARIF, or PR-ready Markdown. No vendor lock-in. No workflow rewrite.\n\nWith the rise of agentic coding — led by projects like [OpenClaw](https://github.com/open-claw/open-claw) and the broad availability of Claude Code, Codex CLI, Gemini CLI, and more — every developer now has access to powerful AI agents. MCO takes the next step: instead of relying on a single agent, you orchestrate a team.\n\nMCO is designed to be called by any orchestrating agent or AI-powered IDE — Claude Code, Cursor, Trae, Copilot, Windsurf, or **OpenClaw**. The calling agent organizes context, assigns tasks, and uses MCO to fan out work across multiple agents simultaneously. For example, OpenClaw running on your machine can call `mco review` to dispatch code reviews to Claude, Codex, and Gemini in parallel — turning your local setup into a multi-agent review team with a single command. Agents can also orchestrate each other: Claude Code can dispatch tasks to Codex and Gemini via MCO, and vice versa.\n\n## One Agent is a Tool. Five Agents are a Team.\n\nNo single AI model sees everything. Each model has its own training data, reasoning style, and blind spots. Using just one agent is like having a team of five engineers and only asking one for their opinion.\n\n**MCO turns this into a team workflow:**\n\n1. **Assign** — You give MCO a task and a list of agents. Like a Tech Lead assigning the same code review to five team members.\n2. **Execute in parallel** — All agents work simultaneously. Wall-clock time ≈ the slowest agent, not the sum.\n3. **Review and deduplicate** — MCO collects each agent's findings, deduplicates identical issues across agents, and tracks which agents found what (`detected_by`).\n4. **Synthesize consensus** — Optionally, one agent summarizes the combined results: what everyone agrees on, where they diverge, and what to do next.\n\n**In practice, different agents catch different things:**\n\n- One agent spots a race condition in your async code but overlooks an SQL injection in the ORM layer.\n- Another finds the injection immediately but misses the race condition entirely.\n- A third catches neither of those but flags a subtle memory leak in the resource cleanup path.\n\nThese aren't hypothetical — different models genuinely have different strengths. Some are better at security analysis, some at logic flow, some at performance patterns. By running 3–5 agents in parallel on the same codebase, you get a **union of perspectives** rather than the intersection. The result is a more thorough review than any single agent could produce, regardless of which one you pick.\n\nThis principle extends beyond code review:\n\n- **Architecture analysis** — different agents surface different design risks and trade-offs\n- **Bug hunting** — broader coverage across code paths and edge cases\n- **Refactoring assessment** — multiple perspectives on impact and safety of proposed changes\n\nThe question isn't \"which AI agent is best\" — it's \"why limit yourself to one?\"\n\n## Key Highlights\n\n- **Parallel fan-out** — dispatch to multiple agents simultaneously, wait-all semantics\n- **Any IDE, any agent** — works from Claude Code, Cursor, Trae, Copilot, Windsurf, or plain shell\n- **Agent-to-agent orchestration** — agents can dispatch tasks to other agents through MCO\n- **Dual mode** — `mco review` for structured code review findings, `mco run` for general task execution\n- **Cross-agent deduplication** — identical findings from multiple agents are merged automatically with `detected_by` provenance\n- **LLM synthesis** — `--synthesize` runs an extra pass to produce consensus/divergence summary across all agents\n- **CI/CD integration** — `--format sarif` for GitHub Code Scanning, `--format markdown-pr` for PR comments\n- **Environment health check** — `mco doctor` probes binary presence, version, and auth status for all providers\n- **Token usage tracking** — `--include-token-usage` for best-effort per-agent and aggregate token consumption\n- **Progress-driven timeouts** — agents run freely until completion; cancel only when output goes idle\n- **Extensible adapter contract** — uniform interface for any CLI agent, not limited to built-in providers\n- **Machine-readable output** — JSON, SARIF, or Markdown output for downstream automation\n\n## Built-in Providers\n\n| Provider | CLI | Status |\n|----------|-----|--------|\n| Claude Code | `claude` | Supported |\n| Codex CLI | `codex` | Supported |\n| Gemini CLI | `gemini` | Supported |\n| OpenCode | `opencode` | Supported |\n| Qwen Code | `qwen` | Supported |\n\nThe adapter architecture is extensible — adding a new agent CLI requires implementing three hooks: auth check, command builder, and output normalizer.\n\n## Use Cases\n\n| Scenario | Command | What happens |\n|----------|---------|--------------|\n| PR code review | `mco review --format markdown-pr` | Multiple agents review in parallel, output a PR-ready comment |\n| Security scan in CI | `mco review --format sarif` | Results upload directly to GitHub Code Scanning |\n| Architecture analysis | `mco run --providers claude,gemini,qwen` | Multi-perspective architecture assessment |\n| Pre-deploy health check | `mco doctor --json` | Verify all agents are installed and authenticated |\n| Consensus decision | `mco review --synthesize` | Summarize what agents agree on and where they diverge |\n\n## Quick Start\n\nInstall via npm (Python 3 required on PATH):\n\n```bash\nnpm i -g @tt-a1i/mco\n```\n\nOr install from source:\n\n```bash\ngit clone https://github.com/mco-org/mco.git\ncd mco\npython3 -m pip install -e .\n```\n\nRun your first multi-agent review:\n\n```bash\nmco review \\\n  --repo . \\\n  --prompt \"Review this repository for high-risk bugs and security issues.\" \\\n  --providers claude,codex,qwen\n```\n\n### Agent-Friendly CLI\n\nMCO's CLI is fully self-describing. Run `mco -h` or `mco review -h` to see grouped flags, defaults, and usage examples — all in the terminal. This means any AI agent that can execute shell commands can learn MCO's interface autonomously by reading the help output, without requiring documentation or prior training.\n\nIn practice, you simply tell your IDE agent what you want:\n\n\u003e \"Use mco to dispatch a security review to Claude and Codex, and a performance analysis to Gemini and Qwen — run them in parallel.\"\n\nThe agent reads `mco -h`, understands the flags, composes the commands, and orchestrates the entire workflow on its own. You describe the intent; the agent handles the rest.\n\n## Usage\n\n### Review Mode\n\nStructured code review with findings schema. Each provider returns normalized findings with severity, category, evidence, and recommendations.\n\n```bash\nmco review \\\n  --repo . \\\n  --prompt \"Review for security vulnerabilities and performance issues.\" \\\n  --providers claude,codex,gemini,opencode,qwen \\\n  --json\n```\n\n### Run Mode\n\nGeneral-purpose multi-agent execution. No forced output schema — providers complete the task freely.\n\n```bash\nmco run \\\n  --repo . \\\n  --prompt \"Summarize the architecture of this project.\" \\\n  --providers claude,codex \\\n  --json\n```\n\n### Doctor\n\nCheck that your agents are installed, reachable, and authenticated before running tasks:\n\n```bash\nmco doctor\nmco doctor --json\n```\n\n### Output Formats (Review Mode)\n\n| Format | Flag | Use case |\n|--------|------|----------|\n| Human-readable report | `--format report` (default) | Terminal reading |\n| PR Markdown | `--format markdown-pr` | Post as GitHub PR comment |\n| SARIF 2.1.0 | `--format sarif` | Upload to GitHub Code Scanning |\n| Machine JSON | `--json` | Downstream automation |\n\n### Result Modes\n\n| Mode | Behavior |\n|------|----------|\n| `--result-mode stdout` | Print full result to stdout, skip artifact files (default) |\n| `--result-mode artifact` | Write artifact files, print summary |\n| `--result-mode both` | Write artifacts and print full result |\n\nUse `--save-artifacts` to keep stdout mode while still writing artifacts.\n\n### Path Constraints\n\nRestrict which files agents can access:\n\n```bash\nmco run \\\n  --repo . \\\n  --prompt \"Analyze the adapter layer.\" \\\n  --providers claude,codex \\\n  --allow-paths runtime,scripts \\\n  --target-paths runtime/adapters \\\n  --enforcement-mode strict\n```\n\n## Defaults and Overrides\n\nMCO is zero-config by default. You can run it directly with built-in defaults and override behavior with CLI flags only.\n\n### Key Runtime Flags\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| `--providers` | `claude,codex` | Comma-separated provider list |\n| `--stall-timeout` | `900` | Cancel when no output progress for this duration (seconds) |\n| `--review-hard-timeout` | `1800` | Hard deadline for review mode; `0` disables |\n| `--max-provider-parallelism` | `0` | `0` = full parallelism across selected providers |\n| `--enforcement-mode` | `strict` | `strict` fails closed on unmet permissions |\n| `--strict-contract` | off | Enforce strict findings JSON contract (review mode) |\n| `--format` | `report` | Output format: `report`, `markdown-pr`, `sarif` (review-only for last two) |\n| `--include-token-usage` | off | Best-effort per-provider and aggregate token usage |\n| `--synthesize` | off | Run extra LLM pass for consensus/divergence summary |\n| `--synth-provider` | `claude` | Which provider runs the synthesis pass |\n| `--provider-timeouts` | unset | Per-provider stall-timeout overrides (`provider=seconds`) |\n| `--provider-permissions-json` | unset | Provider permission mapping JSON (see below) |\n| `--save-artifacts` | off | Write artifacts while keeping stdout result delivery |\n| `--task-id` | auto-generated | Stable task identifier for artifact paths |\n| `--artifact-base` | `reports/review` | Base directory for artifact output |\n\nDefault provider permissions:\n\n| Provider | Key | Default |\n|----------|-----|---------|\n| `claude` | `permission_mode` | `plan` |\n| `codex` | `sandbox` | `workspace-write` |\n\nOverride example:\n\n```bash\nmco review \\\n  --repo . \\\n  --prompt \"Review for bugs.\" \\\n  --providers claude,codex,qwen \\\n  --save-artifacts \\\n  --stall-timeout 900 \\\n  --review-hard-timeout 1800 \\\n  --max-provider-parallelism 0 \\\n  --provider-timeouts qwen=900,codex=900\n```\n\nRun `mco review --help` for the full flag list.\n\n## Exit Codes\n\n| Code | Meaning |\n|------|---------|\n| `0` | Success |\n| `2` | FAIL / input / config / runtime error |\n| `3` | INCONCLUSIVE (review mode only, with `--strict-contract`) |\n\n## How It Works\n\n```\nYou (Tech Lead)\n     │\n     ▼\n  mco review / mco run\n     │\n     ├─→ Claude Code  ──┐\n     ├─→ Codex CLI      │\n     ├─→ Gemini CLI     ├─→ Deduplicate → Synthesize → Output\n     ├─→ OpenCode       │\n     └─→ Qwen Code   ───┘\n                              │\n                    ┌─────────┼─────────┐\n                    ▼         ▼         ▼\n                  JSON    SARIF    Markdown-PR\n               (stdout)  (CI/CD)  (PR comment)\n```\n\nThe calling agent (or user) invokes `mco` with a prompt and a list of providers. MCO fans out to all selected agents in parallel and waits for all to finish.\n\nEach provider runs as an independent subprocess through a uniform adapter contract:\n\n1. **Detect** — check binary presence and auth status\n2. **Run** — spawn CLI process with prompt, capture stdout/stderr\n3. **Poll** — monitor process + output byte growth for progress detection\n4. **Cancel** — SIGTERM/SIGKILL on stall timeout or hard deadline\n5. **Normalize** — extract structured findings from raw output\n\nExecution model is **wait-all**: one provider's timeout or failure never stops others.\n\n### Retry and Resilience\n\n- Transient errors (timeout, rate-limit, network) are retried automatically with exponential backoff (default: 1 retry).\n- A single provider failure never blocks other providers.\n- Every invocation executes providers and returns fresh output (no result-cache replay).\n\n### Running Inside Claude Code\n\nMCO automatically strips the `CLAUDECODE` environment variable before spawning provider subprocesses. You can safely run `mco` from within a Claude Code session.\n\n## Artifacts\n\nWhen artifact writing is enabled (`--save-artifacts` or `--result-mode artifact/both`), MCO writes:\n\n```\nreports/review/\u003ctask_id\u003e/\n  summary.md          # Human-readable summary\n  decision.md         # PASS / FAIL / ESCALATE / PARTIAL\n  findings.json       # Aggregated normalized findings (review mode)\n  run.json            # Machine-readable execution metadata\n  providers/          # Per-provider result JSON\n  raw/                # Raw stdout/stderr logs\n```\n\n## License\n\nMIT — see [LICENSE](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmco-org%2Fmco","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmco-org%2Fmco","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmco-org%2Fmco/lists"}