deliberation
antonbabenko · antonbabenko/deliberation
An MCP server and Claude Code plugin that asks Codex, Gemini, Grok and OpenRouter models for second opinions or consensus reviews of plans and code.
Ask Codex, Gemini, Grok, and 400+ OpenRouter models (Qwen, Kimi, DeepSeek) for second opinions or arbiter-mediated consensus. One MCP server for Claude Code, Codex, Cursor, Kiro, OpenCode. Measures the models' usefulness, too.
Preview
What you can do with it
- Get several models to review an architecture plan before you build it
- Run a consensus check to find the real bug in tricky code
- Compare verdicts from different models on a security concern in a dashboard
Safety check
No risky patterns found in the files we scanned.
Automated scan of the repo files. Always review code you run.
From the README
Deliberation
Get a second opinion in Claude Code from GPT, Gemini, and Grok - plus 400+ more models through OpenRouter, including Qwen, Kimi, and DeepSeek. Seven domain experts (Architect, Code Reviewer, Security Analyst, and four more) review your plans, find bugs, and debate edge cases until they agree.
Recent blog post: Meet Deliberation: 400+ models is easy, knowing which ones earn a place is hard.
📸 See a full /consensus run: round 1 disagreement to round 5 convergence
... a few moments later ...
📸 See /ask-all stage a 2-round architect debate: three models, three verdicts, then each critiques the others - disagreement matrix included
When three models argue, the real bug reveals itself. Round 1 = independent top findings. Round 2 = each model dunks on the others' picks. The disagreement matrix shows where they diverge; the conclusion shows what to actually fix first.
📸 See the local dashboard draw a /consensus run as a timeline: one lane per voice, verdicts on each, final report alongside
The dashboard (/deliberation:dashboard, opt-in with "dashboard": { "enabled": true }) is a read-only page on 127.0.0.1. Live follows runs as they happen, Runs keeps the history, Config shows the effective config, and Stats shows usage and provider health. For a run you get:
- the header: tool, elapsed time, status, round, tokens, errors, and expert
- the phase strip: blind, peers, adjudicate, converged or revise, each with its time offset
- the timeline: rounds across the top, then one lane for the arbiter and one for each panel voice, with each call drawn as a pulse and labelled with its verdict. Drag across the plot to place two cursors and measure the time between them
- the event table: every journal event with its sequence number, time, kind, and round
- the side panel: the final report and the prompt
The CAPTURE and PII badges show what was recorded. The default capture is metadata only, and PII is redacted unless dashboard.showPII is on.
What is Deliberation?
Claude can ask GPT, Gemini, Grok, or any OpenAI-compatible model (via OpenRouter) for help through MCP. The plugin handles the wiring for each provider so you just write the prompt. Each expert has a distinct specialty and can advise or implement.
You can use any subset of the providers. The plugin detects which are configured and routes
accordingly. OpenRouter is advisory-only and config-driven: models are declared in
~/.config/deliberation/config.json (Windows: %APPDATA%\deliberation\config.json; override
with DELIBERATION_CONFIG) and hot-reload without restarting Claude Code.
| What you get | Why it matters |
|---|---|
| 7 domain experts | The right specialist for each problem type |
| GPT, Gemini, Grok, or OpenRouter models | Use your preferred provider(s) |
| Dual mode | Experts analyze (read-only) or implement (write) |
| Auto-routing | Claude detects when to delegate from your request |
| Synthesized responses | Claude interprets expert output, never raw passthrough |
| Local dashboard (opt-in) | Watch each run as a live state graph in your browser, plus history, health, and usage stats |
Install
Claude Code plugin (recommended):
1. Add the marketplace - antonbabenko/agent-plugins
/plugin marketplace add antonbabenko/agent-plugins
2. Install the plugin
/plugin install deliberation@antonbabenko
3. Run setup
/deliberation:setup
Claude now routes complex tasks to your GPT, Gemini, Grok, and OpenRouter experts (GPT, Grok, and OpenRouter advise; only Gemini can also implement).
Setup is a one-time step. The MCP servers are registered by the plugin manifest, so they load automatically and stay current across updates.
Updating (Claude Code)
/plugin marketplace update antonbabenko # pull the new version from the marketplace
/deliberation:reload-mcp # audit processes & recycle dashboard daemon
/reload-plugins # reconnect the MCP servers (or restart Claude Code)
Updating on non-Claude hosts: hosts that run the standalone server via npx -y @antonbabenko/deliberation-mcp get the latest published version on each fresh resolve. npx
caches resolved packages, so if a host serves an old build, clear the npx cache
(rm -rf ~/.npm/_npx) or pin/refresh the version. Run bash scripts/commands/reload-mcp.sh
(or trigger the reload-mcp skill / command on Codex, Antigravity, OpenCode) to audit
running worker processes and recycle the background dashboard daemon safely.
Alternative: Use deliberation MCP server (standalone, works with any agents)
The orchestration server is also published on its own - npm @antonbabenko/deliberation-mcp, Official MCP Registry name io.github.antonbabenko/deliberation.
One-click install:
Manual config for any MCP clients
Add this to your host's MCP config (most hosts use the mcpServers key):
{
"mcpServers": {
"deliberation": {
"command": "npx",
"args": ["-y", "@antonbabenko/deliberation-mcp"],
"env": {
"XAI_API_KEY": "xai-...",
"OPENROUTER_API_KEY": "sk-or-v1-..."
}
}
}
}
The env block is how you set provider keys outside Claude Code. GPT and Gemini do not read keys here - they use the codex and agy CLIs (logged in separately), so drop those lines if you only use GPT/Gemini. XAI_API_KEY enables Grok; OPENROUTER_API_KEY enables OpenRouter (which also needs models declared in ~/.config/deliberation/config.json - the canonical XDG path, Windows %APPDATA%\deliberation\config.json - or point elsewhere with DELIBERATION_CONFIG). The one