← All projects
Open Source · Claude Code plugin

multi-agent.

Independent second opinions, natively.

You already have an agent defined for one coding CLI, a plain .claude/agents/*.md file. multi-agent runs that same agent on other model CLIs: grok, codex, claude. Each target executes it natively through its own agent runtime, no API keys and no re-implementation. When independent models converge on a finding you get confidence. When they diverge you get coverage.

PythonClaude Code pluginMIT
multi-agent: Independent second opinions, natively.
install and run
claude ▸ /plugin marketplace add serdardb/multi-agent claude ▸ /plugin install multi-agent@multi-agent claude ▸ /reload-plugins └ required the first time claude ▸ /arena └ pick agent, models, rounds, judge; watch in /workflows claude ▸ /multi-agent security-guard codex "review the webhook subsystem"
One arena run Round 1: every model audits independently cross-critique: KEEP / WITHDRAW / ADOPT / NEW, citing code more rounds only while positions keep moving judge re-checks disputed claims against the real files scoreboard ranks the models

Two commands, one engine

The same agent file drives both. One is a deterministic tournament, the other a live pair of extra eyes.

/arena

multi-model debate
KindDeterministic adversarial arena
Runs onClaude Code Workflows
ModelsAny of grok · codex · claude
OutputJudge-verified ranked findings + scoreboard

Rounds are convergence gated: min 2, max 4 by default, and the debate stops the moment nobody changes position. /workflows shows exactly the rounds that executed, nothing invented.

/multi-agent

live second opinion
KindSingle model, live and steerable
Runs asForked background agent
Targetscodex · grok
OutputSeverity-ranked findings, session stays open

You watch the target model think and run tools in real time, and you can talk to it while it works: ask a question or hand it a directive, it answers and keeps auditing.

the engine, headless
$ python3 plugin/arena.py list └ usable models + available agents, as JSON $ python3 plugin/arena.py suggest-mode --topic "audit the webhooks" └ asks a model which approach fits $ python3 plugin/arena.py once --model grok --agent security-guard └ one model, one pass, arena-v1 out $ python3 plugin/arena.py run --agent security-guard --models grok,codex,claude --judge └ the full pipeline, host optional

One core, one adapter per CLI

core.py never learns about a specific model: it normalizes your agent into a portable form, maps its tools onto a neutral capability vocabulary, and each adapter maps those onto its CLI's own tool names. Tools with no mapping are reported, never silently dropped. Adding a CLI is one adapter file; the core changes only for new features. Every spawned process starts in its own group and dies as a tree, no orphans.

Findings are a contract

Whatever a model produces is normalized into findings-v1: file, line, severity from critical to low, category, description and a proposed fix. Cross-model findings stay unverified claims until the judge confirms them against the real files, and the scoreboard only counts what survived that check.

Costs, stated plainly

A full adversarial run is heavy: many model turns, several rounds, minutes to tens of minutes, real token spend. Each round waits for the slowest model. For quick work use fewer models and rounds, or the single-model /multi-agent. Roadmap: Codex and Grok native wrappers, and an MCP server exposing the arena to any MCP-capable CLI.