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.
NiceGUI web interface with live debate view, research dashboard, and full CLI research tool. Direct vendor APIs, replay, ground-truth scoring, cost tracking, and markdown export. 400+ tests across Windows and Linux CI.
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 (direct APIs or 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 with cost and token data
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/q-uestionable-AI/mutual-dissent.git
cd mutual-dissent
uv sync
Usage
# Run a debate
dissent ask "Your query here"
# With explicit panel and options
dissent ask "Your query here" --synthesizer claude --rounds 2 --panel claude,gpt,gemini
dissent ask "Summarize this" --file report.pdf
dissent replay <transcript-id> --synthesizer grok
dissent serve
dissent config test
mutual-dissent also works as the full command name.
Status
| Capability | Status |
|---|---|
| Core debate loop | ✅ Complete — fan-out, reflection, synthesis via OpenRouter |
| Provider abstraction | ✅ Complete — direct Anthropic API, mixed-panel routing |
| CLI research tools | ✅ Complete — replay, scoring, cost tracking, markdown export |
| Web GUI | ✅ Complete — NiceGUI debate view, research dashboard, live streaming |
| Documentation | ✅ Complete — Mintlify docs site with AI assistant and MCP server |
| Desktop app & batch mode | Planned — Tauri wrapper, alternative topologies, public release |
Research Platform
Full debate transcripts are logged as structured JSON for research — disagreement patterns, convergence dynamics, consensus poisoning, and hallucination detection. See Research Methodology for details.
Documentation
- docs.mutual-dissent.dev — Full documentation
- Roadmap — Vision and development history
- Contributing — Development setup and workflow
License
MIT — see LICENSE for details.
Author
Richard Spicer — Security research at mlsecopslab.io
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.1.tar.gz.
File metadata
- Download URL: mutual_dissent-0.1.1.tar.gz
- Upload date:
- Size: 824.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
763e21e61333c6fb200244f6a03fb6a54f9a33bb5f626e7118896a0835fe2a62
|
|
| MD5 |
a3f27c1fae669b6a52dec4146b33b714
|
|
| BLAKE2b-256 |
d55e7651614e6a4368fb344fc688a15fc67375f66e0c9be1b27d3df495bce8c7
|
Provenance
The following attestation bundles were made for mutual_dissent-0.1.1.tar.gz:
Publisher:
release.yml on q-uestionable-AI/mutual-dissent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mutual_dissent-0.1.1.tar.gz -
Subject digest:
763e21e61333c6fb200244f6a03fb6a54f9a33bb5f626e7118896a0835fe2a62 - Sigstore transparency entry: 1029412688
- Sigstore integration time:
-
Permalink:
q-uestionable-AI/mutual-dissent@e8aee4d89828b5717e7e6479311c32c219bf72fb -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/q-uestionable-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e8aee4d89828b5717e7e6479311c32c219bf72fb -
Trigger Event:
push
-
Statement type:
File details
Details for the file mutual_dissent-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mutual_dissent-0.1.1-py3-none-any.whl
- Upload date:
- Size: 79.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8c2d49520dda6f50f51dbac775905a69436803471027045534f808dbaf1a4cb
|
|
| MD5 |
5ec9d3f98f013ca432846a9a5f1664b1
|
|
| BLAKE2b-256 |
179d385e51f1d6891b31d24b32c8a17b0f1bd347183f0e6379125ac40495ed8d
|
Provenance
The following attestation bundles were made for mutual_dissent-0.1.1-py3-none-any.whl:
Publisher:
release.yml on q-uestionable-AI/mutual-dissent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mutual_dissent-0.1.1-py3-none-any.whl -
Subject digest:
f8c2d49520dda6f50f51dbac775905a69436803471027045534f808dbaf1a4cb - Sigstore transparency entry: 1029412845
- Sigstore integration time:
-
Permalink:
q-uestionable-AI/mutual-dissent@e8aee4d89828b5717e7e6479311c32c219bf72fb -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/q-uestionable-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e8aee4d89828b5717e7e6479311c32c219bf72fb -
Trigger Event:
push
-
Statement type: