cardea
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., "@cardeaget a second opinion on this pull request"
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.
Cardea
One subscription, login, or key can run out. Different models are also good at different work. Cardea gives you one CLI, local dashboard, and MCP server that can route tasks across Claude Code, Codex, Grok, and any OpenAI-compatible endpoint by cost and strength.
Measured results and practical routing rules live in docs/ROUTING.md. In our own use, moving implementation to workers and reviewing in a fresh context cut coordinator-side cost by an estimated 85% — one project, so read the caveats.
Bring your own keys, or load Cardea into the LLM you already use.
Quick Start
Install the latest release (Node 20.10+, no npm account or registry needed):
npm install -g https://github.com/SeaHorseCapn/cardea/releases/latest/download/cardea-cli.tgz
cardea doctorOr from a clone, if you want to hack on it:
git clone https://github.com/SeaHorseCapn/cardea.git
cd cardea
npm install
npm run build
npm linkInstall the vendor CLIs you want Cardea to use, then log in to each one once:
claude
codex
grok
cardea doctorBy default, Cardea uses those CLI logins for claude, codex, grok, and the coordinator. It scrubs each worker's API-key environment variable from the child process, so a stray exported key will not override the vendor CLI login. Cardea requires Node >=20.10.
Related MCP server: Relay
Three Ways To Use It
CLI
cardea "Review this repository for release blockers"
cardea "Check this implementation with a second opinion" --model codex
cardea "Compare approaches for this API" --panel --tier fast
cardea doctor --liveUseful flags:
Flag | Meaning |
| working directory for coordinator and workers |
| run one configured worker directly |
| send the prompt to enabled workers, then synthesize |
| let workers modify files, except under protected paths |
| coordinator plan-mode vs auto-accept-edits |
| per-delegation timeout |
| raw |
Dashboard
cardea serveOpen http://127.0.0.1:4317. The dashboard is not authenticated; bind it only to localhost or a private network you control.
MCP Inside Your LLM
Claude Code:
claude mcp add cardea -- cardea mcpCodex CLI config.toml:
[mcp_servers.cardea]
command = "cardea"
args = ["mcp"]Generic MCP JSON:
{
"mcpServers": {
"cardea": {
"command": "cardea",
"args": ["mcp"]
}
}
}The MCP tools are list_workers, delegate, fan_out, and panel. panel returns separate answers; the host LLM synthesizes them. Start with cardea mcp --allow-writes if you want MCP delegate calls to be allowed to request writes.
Using API Keys Instead
API keys are opt-in. Configure one worker explicitly:
{
"workers": {
"codex": {
"auth": "api-key"
}
}
}Then export the matching key in the same shell that starts Cardea:
export OPENAI_API_KEY=...
cardea doctorTo opt all default CLI workers and the coordinator into API-key auth:
{
"coordinator": {
"auth": "api-key"
},
"workers": {
"claude": { "auth": "api-key" },
"codex": { "auth": "api-key" },
"grok": { "auth": "api-key" }
}
}Each CLI worker supports:
auth: "cli-login": default; scrub that worker's key env var and use the account logged into the vendor CLI.auth: "api-key": require the key env var and fail fast if it is missing.auth: "auto": pass the key through when its env var is set, otherwise use the vendor CLI login.
Coordinator auth uses the same modes under coordinator.auth; its default is also cli-login. API-key auth may be useful for automation. See ACCESS.md.
Cardea never reads keys from config and never stores key values.
Workers And Tiers
Defaults are configurable in ~/.cardea/config.json.
Worker | Kind | Default auth | Auth env | Fast | Standard | Deep |
| Claude Code CLI |
|
|
|
|
|
| Codex CLI |
|
| reasoning low | reasoning medium | reasoning high |
| Grok CLI |
|
|
|
|
|
| OpenAI-compatible |
| configurable | unset | unset | unset |
OpenAI-compatible workers are text-only: no tools and no file access.
OpenAI-Compatible Workers
Define as many named endpoint workers as you need:
{
"workers": {
"openrouter": {
"kind": "openai-compatible",
"enabled": true,
"baseUrl": "https://openrouter.ai/api/v1",
"apiKeyEnv": "OPENROUTER_API_KEY",
"tiers": {
"fast": { "model": "openai/gpt-4o-mini" },
"standard": { "model": "anthropic/claude-sonnet-4.5" },
"deep": { "model": "openai/gpt-5" }
}
},
"ollama": {
"kind": "openai-compatible",
"enabled": true,
"baseUrl": "http://127.0.0.1:11434/v1",
"auth": "auto",
"tiers": {
"fast": { "model": "llama3.2:3b" },
"standard": { "model": "qwen2.5-coder:14b" },
"deep": { "model": "qwen2.5:32b" }
}
}
}
}Then run cardea "summarize these notes" --model openrouter --tier fast.
Fan Out Pattern
Use a cheap wide pass, then escalate only the interesting results:
cardea "Use fan_out fast over the changed files, identify only the risky ones, then ask a deep worker to verify those findings."The coordinator also has a fan_out tool. It runs one template over up to 20 items in parallel.
Safety
Runs are persisted to ~/.cardea/runs/*.jsonl. safety.protectedPaths defaults to []; add paths that should always stay read-only:
{
"safety": {
"protectedPaths": ["/path/to/critical/repo"]
}
}--allow-writes lets workers write only when requested and never under protected paths. MCP has a second gate: writes are refused unless the server was started with cardea mcp --allow-writes.
Troubleshooting
Run:
cardea doctor
cardea doctor --liveVendor model IDs change. Override them per tier:
{
"workers": {
"grok": {
"tiers": {
"fast": { "model": "grok-4.6" },
"standard": { "model": "grok-4.6" },
"deep": { "model": "grok-4.5" }
}
}
}
}If an API-key worker fails, confirm the named env var is exported in the same shell that starts Cardea. If a CLI-login worker fails, sign into that vendor CLI interactively and rerun cardea doctor --live.
Architecture
src/core never imports from src/cli or src/server; the contract is RunOptions in, a JSON-serializable CardeaEvent stream out. The CLI, dashboard, and MCP server use the same core worker adapters and event stream.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI work orchestration for plans, tasks, teams, and coding-agent dispatch.
- ParleyOAuthdev.weldra
Coordination hub for AI coding agents: message teammates, ask humans, audit every event.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Delegate tasks between AI agents on different platforms and collect the results.
Related MCP Servers
- AlicenseAqualityDmaintenanceMulti-agent orchestration server that enables parallel task delegation, sequential pipelines, cron scheduling, and cross-model peer review via CLI providers like Codex, Antigravity, OpenCode, and Claude Code.4216 npm5MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI to delegate boilerplate, drafts, tests, and refactors to free LLM providers, saving tokens and running tasks in parallel.968 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables Codex to delegate bounded work to external LLMs through role-based MCP tools, with worker health checks and audit logging.MIT
- AlicenseNot gradedqualityBmaintenanceEnables a model in Claude Code, Codex, or Grok to allocate tasks to other agent CLIs on the machine, choosing the lane, model, and reasoning effort, and have a different model verify the result blind.Apache 2.0