Skip to main content

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

Project description

Mutual Dissent

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.

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

  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.

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

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

mutual_dissent-0.1.1.tar.gz (824.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.1.1-py3-none-any.whl (79.3 kB view details)

Uploaded Python 3

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

Hashes for mutual_dissent-0.1.1.tar.gz
Algorithm Hash digest
SHA256 763e21e61333c6fb200244f6a03fb6a54f9a33bb5f626e7118896a0835fe2a62
MD5 a3f27c1fae669b6a52dec4146b33b714
BLAKE2b-256 d55e7651614e6a4368fb344fc688a15fc67375f66e0c9be1b27d3df495bce8c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mutual_dissent-0.1.1.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.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

Hashes for mutual_dissent-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f8c2d49520dda6f50f51dbac775905a69436803471027045534f808dbaf1a4cb
MD5 5ec9d3f98f013ca432846a9a5f1664b1
BLAKE2b-256 179d385e51f1d6891b31d24b32c8a17b0f1bd347183f0e6379125ac40495ed8d

See more details on using hashes here.

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

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