MCP server · CLI · macOS app · Open source (MIT)
JOINT CHIEFS

Don't trust big decisions to one model.

Code review. Architecture. Product features. Security. Joint Chiefs runs your code past OpenAI, Gemini, Grok, and Claude in parallel — plus any local model you point it at via Ollama or an OpenAI-compatible server. Then it has them debate until consensus. That's how you make your best calls. Open-source. One-click macOS install. Zero telemetry.

Prefer the command line? Install via CLI →

// three surfaces, one engine

Use the surface your workflow needs.

Each surface runs the same JointChiefsCore engine. Install the MCP server or the CLI, then in your agent or terminal, mention Joint Chiefs along with what you want reviewed — the debate fires and a consensus comes back. The app isn't required for either. Pick one, two, or all three.

PRIMARY

MCP server

Drops into any MCP-aware client. The host LLM calls joint_chiefs_review and gets a consensus back inline. Stdio-only — no ports, no network exposure.

Set up MCP
SCRIPTABLE

CLI jointchiefs

Pre-commit hooks, CI gates, headless audits, one-off debugging. Streaming SSE output, JSON mode, exit codes, stdin piping. Same engine as the MCP server.

CLI reference
SETUP

macOS setup app

One-shot installer. Add API keys with live test buttons. Copy the standard MCP config snippet. Configure moderator, consensus mode, and tiebreaker. Installs the CLI + MCP binaries for you.

Download DMG
// the protocol

Your code goes in. Four models argue. One consensus comes out.

The debate protocol is a hub-and-spoke implementation of Multi-Agent Debate (Liang et al., 2023). Generals review independently, the moderator synthesizes between rounds, and a judge arbitrates the final call.

Parallel independent review

Every configured provider sees the same code with no peer influence. Different architectures catch different classes of bug.

Anonymized debate rounds

Each model sees the prior round's findings with model identities stripped. Must agree, challenge, or revise — no ignoring inconvenient findings.

Adaptive early break

When positions converge, debate stops. Extra rounds add noise, not signal — a core finding of the MAD paper.

Judge arbitration

The moderator reads the full debate and writes the final synthesis. A well-argued minority position can override a weakly-justified majority.

OpenAI Gemini Grok Claude Ollama (local) OpenAI-compatible (LM Studio · Jan · llama.cpp · Msty · LocalAI)
// research-backed

Multi-model debate beats single-model review.

The MAD paper's central finding: when a single model reflects on its own output, confidence rises regardless of whether the answer is correct. Joint Chiefs avoids this by using multiple independent models with different blind spots.

arXiv2305.19118

Encouraging Divergent Thinking in Large Language Models through Multi-Agent Debate

Demonstrates that adversarial collaboration between LLMs significantly improves factual accuracy and reasoning over single-model inference or single-model self-reflection. Joint Chiefs implements four of the paper's key protocols: adaptive break, tit-for-tat engagement, DoT prevention, and judge arbitration.

Liang, T., He, Z., Jiao, W., et al. (2023). Read the paper on arXiv
// what you get

Built for developers, marketers, and anyone working with models.

MCP-first design

Works inside the AI client you already live in. No context switch, no separate tool to launch.

Structured debate, not majority vote

Models address each finding by title, take a position, defend it across rounds. The moderator judges reasoning, not tallies.

Anonymized synthesis

Model identities are stripped before final arbitration — the judge evaluates arguments, not brands.

Streaming SSE on every provider

Tokens appear live. The orchestrator can tell "slow" from "dead" instead of blocking on a frozen socket.

Local transcripts

Full debate written to disk. Replay, audit, or pipe into your own tooling. Nothing is cached server-side — there is no server.

Configurable strategy

Pick the moderator model, consensus mode (moderator decides, strict majority, best-of-all, voting threshold), tiebreaker, and rounds. Persisted per-user.

One-click setup app

Add keys with live test buttons. Copy-paste the standard MCP config snippet. The app installs the binaries — no build step, no PATH wrestling.

Privacy-first

API keys stay in a permission-locked local file, read by a single binary. No telemetry. The only network traffic is to providers you configured.

Open source (MIT)

Engine, CLI, and MCP server live on GitHub under the MIT license. Read the protocol implementation, run the test suite, fork the moderator. No black box.

// two minutes, start to first review

Quickstart.

Install — app or CLI, your call

macOS app (recommended): download the notarized DMG and drop Joint Chiefs.app into Applications. The setup app installs the CLI, MCP server, and keygetter binaries silently on first launch and walks you through key entry, strategy, and MCP wire-up.

Download for macOS

Command line: clone the repo, build, install all three binaries. No GUI — add keys via environment variables in step 02. Homebrew tap coming soon.

$ git clone https://github.com/djfunboy/joint-chiefs.git
$ cd joint-chiefs/JointChiefs
$ swift build -c release
$ cp .build/release/jointchiefs .build/release/jointchiefs-mcp .build/release/jointchiefs-keygetter /opt/homebrew/bin/

Add API keys

App users: open the app, paste keys for the providers you want on the API Keys screen, hit Test on each. Keys land in a permission-locked local file — read back only via the jointchiefs-keygetter binary.

CLI users: export the env vars in your shell. Any one provider is enough to start.

$ export OPENAI_API_KEY="sk-..."
$ export ANTHROPIC_API_KEY="sk-ant-..."   # also acts as the moderator
$ export GEMINI_API_KEY="..."
$ export GROK_API_KEY="..."

Wire it into your AI client

Copy the standard MCP config snippet from the setup app — or paste this — into your client's MCP configuration. The path is the Apple Silicon Homebrew prefix; replace it if you installed elsewhere.

{
  "mcpServers": {
    "joint-chiefs": {
      "command": "/opt/homebrew/bin/jointchiefs-mcp"
    }
  }
}

Per-client config-file paths and the natural-language playbook prompt are in the MCP setup guide.

Call it from your client

Ask your coding assistant: "Have the Joint Chiefs review src/auth.swift." The tool call runs, the panel debates, and the consensus comes back inline.

Prefer the command line? CLI reference

Four LLMs walked into a code review.

One consensus walks out. Install takes a minute.