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.
Web UI with chat-style debate view, dashboard, and full CLI. Multi-model and single-model multi-agent modes. Direct vendor APIs, replay, cost tracking, and markdown export.
Install
pip install mutual-dissent
Or from source:
git clone https://github.com/richardspicer/mutual-dissent.git
cd mutual-dissent
uv sync --group dev
How It Works
- Fan out — Query goes to your panel: multiple vendors (Claude, GPT, Gemini, Grok) or multiple agents of the same model
- Reflect — Each agent 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
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.
Transcript Logging
Full debate transcripts are logged as structured JSON — every round, every response, with cost, token, latency, and routing data. Browse and export transcripts via the web dashboard or CLI.
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.3.1.tar.gz.
File metadata
- Download URL: mutual_dissent-0.3.1.tar.gz
- Upload date:
- Size: 774.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27ba244777c92292546a9fb04d7058bd84d238f40b6183a50f280531fdb43398
|
|
| MD5 |
b86a18356e722c8a98d7b1027479c14b
|
|
| BLAKE2b-256 |
f097fb121872596d55d8711ca908d57814bf7aec65a7f6a673a9c5e4bac5c594
|
Provenance
The following attestation bundles were made for mutual_dissent-0.3.1.tar.gz:
Publisher:
release.yml on richardspicer/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.3.1.tar.gz -
Subject digest:
27ba244777c92292546a9fb04d7058bd84d238f40b6183a50f280531fdb43398 - Sigstore transparency entry: 1362115811
- Sigstore integration time:
-
Permalink:
richardspicer/mutual-dissent@845e1c5595ad76aba5d9b7dba578a2eda3cc86bc -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/richardspicer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@845e1c5595ad76aba5d9b7dba578a2eda3cc86bc -
Trigger Event:
push
-
Statement type:
File details
Details for the file mutual_dissent-0.3.1-py3-none-any.whl.
File metadata
- Download URL: mutual_dissent-0.3.1-py3-none-any.whl
- Upload date:
- Size: 73.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e08178f7e0d3cc69a840f61d2c0f188a397c062ae971f2eb84002c748161908c
|
|
| MD5 |
7a49354ff3811f788a7857f85f7c6ba4
|
|
| BLAKE2b-256 |
3a21cc737ff2e86a21856af04d7de69afa11498974d901d5c2c6ce3470b2e569
|
Provenance
The following attestation bundles were made for mutual_dissent-0.3.1-py3-none-any.whl:
Publisher:
release.yml on richardspicer/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.3.1-py3-none-any.whl -
Subject digest:
e08178f7e0d3cc69a840f61d2c0f188a397c062ae971f2eb84002c748161908c - Sigstore transparency entry: 1362115969
- Sigstore integration time:
-
Permalink:
richardspicer/mutual-dissent@845e1c5595ad76aba5d9b7dba578a2eda3cc86bc -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/richardspicer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@845e1c5595ad76aba5d9b7dba578a2eda3cc86bc -
Trigger Event:
push
-
Statement type: