Cross-vendor multi-model debate and consensus engine for AI response distillation
Project description
Mutual Dissent
Cross-vendor multi-model debate and consensus engine for AI response distillation.
Phase 1 complete — working CLI with cross-vendor debate + reflection rounds. First live 4-vendor debate: 41k tokens across Claude, GPT, Gemini, and Grok.
Sends a user query to multiple AI models simultaneously, shares competing responses back to each model for reflection and critique, then synthesizes a final answer through a user-selected model.
How It Works
- Fan out — Query goes to Claude, GPT, Gemini, and Grok via OpenRouter
- Reflect — Each model sees the others' responses and argues back
- Synthesize — A user-selected model distills the debate into a final answer
- Log — Full debate transcript saved as structured JSON
Why Cross-Vendor?
Single-vendor multi-agent systems (Grok's 4-agent debate, Anthropic's agent teams) share the same training data and blind spots. Cross-vendor debate surfaces disagreements that correlated architectures can't — different training data, different safety postures, different failure modes.
Installation
git clone https://github.com/richardspicer/mutual-dissent.git
cd mutual-dissent
uv sync
Usage
dissent ask "Your query here"
dissent ask "Your query here" --synthesizer claude
dissent ask "Your query here" --rounds 2
dissent ask "Your query here" --panel claude,gpt,gemini
mutual-dissent also works as the full command name.
Status
Phase 1: Foundation — Complete. Phase 1.5 (provider abstraction for direct vendor APIs) in progress. See Roadmap for the full plan.
Research Platform
Full debate transcripts are logged as structured JSON, enabling analysis of:
- Disagreement patterns — where do models consistently diverge?
- Convergence dynamics — how many rounds until consensus? Which models cave first?
- Consensus poisoning — can a deliberately wrong claim propagate through reflection?
- Unanimous hallucinations — when all models confidently agree on the wrong answer
Documentation
- Architecture — Components, data models, extension points
- Roadmap — Phased development plan
- Contributing — Development setup and workflow
License
MIT — see LICENSE for details.
Author
Richard Spicer — Security research at MLSecOps Lab
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mutual_dissent-0.1.0.tar.gz.
File metadata
- Download URL: mutual_dissent-0.1.0.tar.gz
- Upload date:
- Size: 47.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b19944901419f789ce2e6665b3106dfdc7121900b727ed60303eaf57af1b39f9
|
|
| MD5 |
936bfbd1eee50e845cb74250c3cdfecf
|
|
| BLAKE2b-256 |
916fe9d42a717a92757223a9a6ee4a2a176bfefbb0c48510f1a64dfad3c650e2
|
File details
Details for the file mutual_dissent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: mutual_dissent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
843a4a6eed26efaced722797b9adbe36669dd4611bcc712d362ff6e5ffa1a88a
|
|
| MD5 |
71c3b764fe69adaac451557fedda98b7
|
|
| BLAKE2b-256 |
10d7d38087c9e785df70bcb8638fd5f69eb61b22c93eb71ddd5545e24af26b6d
|