Skip to main content

Cross-vendor multi-model debate and consensus engine for AI response distillation

Project description

Mutual Dissent

CI CodeQL Python 3.11+ License: MIT pre-commit Docs

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

  1. Fan out — Query goes to Claude, GPT, Gemini, and Grok (direct APIs or via OpenRouter)
  2. Reflect — Each model sees the others' responses and argues back
  3. Synthesize — A user-selected model distills the debate into a final answer
  4. 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

MIT

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

mutual_dissent-0.2.0.tar.gz (844.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mutual_dissent-0.2.0-py3-none-any.whl (83.4 kB view details)

Uploaded Python 3

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

Hashes for mutual_dissent-0.2.0.tar.gz
Algorithm Hash digest
SHA256 935caf438b4e2483369f89cc7108f6168eb9bd0613b4090723201a91cc01af39
MD5 6a8aa75f2027f26f4f07fd067725155a
BLAKE2b-256 c089cf7ba8fdc496525ecfa059356ffa6bc5e51aa9d8115bb85cb0df8312c4f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for mutual_dissent-0.2.0.tar.gz:

Publisher: release.yml on q-uestionable-AI/mutual-dissent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for mutual_dissent-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b33f87f50a2a5a908b8f447b7e34bb5ce722bd83b84f00e1bdfd193944cd6d3
MD5 498da8cf889428b1d7a12df2f54cfa4a
BLAKE2b-256 82af4c7240ea67afdd86b150fae6700f553fd17162cbfa0e1133eece713d59e6

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page