Skip to main content

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

Project description

Mutual Dissent

Python 3.14+ License: MIT pre-commit

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

Phase 1 complete — working CLI with cross-vendor debate + reflection rounds. First live 4-vendor debate: 41k tokens across Claude, GPT, Gemini, and Grok.

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 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

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/richardspicer/mutual-dissent.git
cd mutual-dissent
uv sync

Usage

dissent ask "Your query here"
dissent ask "Your query here" --synthesizer claude
dissent ask "Your query here" --rounds 2
dissent ask "Your query here" --panel claude,gpt,gemini

mutual-dissent also works as the full command name.

Status

Phase 1: Foundation — Complete. Phase 1.5 (provider abstraction for direct vendor APIs) in progress. See Roadmap for the full plan.

Research Platform

Full debate transcripts are logged as structured JSON, enabling analysis of:

  • Disagreement patterns — where do models consistently diverge?
  • Convergence dynamics — how many rounds until consensus? Which models cave first?
  • Consensus poisoning — can a deliberately wrong claim propagate through reflection?
  • Unanimous hallucinations — when all models confidently agree on the wrong answer

Documentation

License

MIT — see LICENSE for details.

Author

Richard Spicer — Security research at MLSecOps Lab

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.0.tar.gz (47.2 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.0-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file mutual_dissent-0.1.0.tar.gz.

File metadata

  • Download URL: mutual_dissent-0.1.0.tar.gz
  • Upload date:
  • Size: 47.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mutual_dissent-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b19944901419f789ce2e6665b3106dfdc7121900b727ed60303eaf57af1b39f9
MD5 936bfbd1eee50e845cb74250c3cdfecf
BLAKE2b-256 916fe9d42a717a92757223a9a6ee4a2a176bfefbb0c48510f1a64dfad3c650e2

See more details on using hashes here.

File details

Details for the file mutual_dissent-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mutual_dissent-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mutual_dissent-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 843a4a6eed26efaced722797b9adbe36669dd4611bcc712d362ff6e5ffa1a88a
MD5 71c3b764fe69adaac451557fedda98b7
BLAKE2b-256 10d7d38087c9e785df70bcb8638fd5f69eb61b22c93eb71ddd5545e24af26b6d

See more details on using hashes here.

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