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.
Research program by Richard Spicer · GitHub
Install
pip install mutual-dissent
Or from source:
git clone https://github.com/q-uestionable-AI/mutual-dissent.git
cd mutual-dissent
uv sync --group dev
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.
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. Full documentation at docs.mutual-dissent.dev.
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.
Legal
All tools are intended for authorized security testing only. Only test systems you own, control, or have explicit permission to test. Responsible disclosure for all vulnerabilities discovered.
License
AI Disclosure
This project uses a human-led, AI-augmented workflow. See AI-STATEMENT.md.
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.2.0.tar.gz.
File metadata
- Download URL: mutual_dissent-0.2.0.tar.gz
- Upload date:
- Size: 844.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 |
935caf438b4e2483369f89cc7108f6168eb9bd0613b4090723201a91cc01af39
|
|
| MD5 |
6a8aa75f2027f26f4f07fd067725155a
|
|
| BLAKE2b-256 |
c089cf7ba8fdc496525ecfa059356ffa6bc5e51aa9d8115bb85cb0df8312c4f3
|
Provenance
The following attestation bundles were made for mutual_dissent-0.2.0.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.2.0.tar.gz -
Subject digest:
935caf438b4e2483369f89cc7108f6168eb9bd0613b4090723201a91cc01af39 - Sigstore transparency entry: 1059822086
- Sigstore integration time:
-
Permalink:
q-uestionable-AI/mutual-dissent@797dfcb2f87e78f24e216358f7bbc5e052b180cd -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/q-uestionable-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@797dfcb2f87e78f24e216358f7bbc5e052b180cd -
Trigger Event:
push
-
Statement type:
File details
Details for the file mutual_dissent-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mutual_dissent-0.2.0-py3-none-any.whl
- Upload date:
- Size: 83.4 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 |
6b33f87f50a2a5a908b8f447b7e34bb5ce722bd83b84f00e1bdfd193944cd6d3
|
|
| MD5 |
498da8cf889428b1d7a12df2f54cfa4a
|
|
| BLAKE2b-256 |
82af4c7240ea67afdd86b150fae6700f553fd17162cbfa0e1133eece713d59e6
|
Provenance
The following attestation bundles were made for mutual_dissent-0.2.0-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.2.0-py3-none-any.whl -
Subject digest:
6b33f87f50a2a5a908b8f447b7e34bb5ce722bd83b84f00e1bdfd193944cd6d3 - Sigstore transparency entry: 1059822091
- Sigstore integration time:
-
Permalink:
q-uestionable-AI/mutual-dissent@797dfcb2f87e78f24e216358f7bbc5e052b180cd -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/q-uestionable-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@797dfcb2f87e78f24e216358f7bbc5e052b180cd -
Trigger Event:
push
-
Statement type: