This release is a pre-release and may not be stable for production use.
rc-verdict
Multi-agent collective decision-making via LLM expert panels.
rc-verdict assembles a panel of LLM "experts" — each wearing a distinct expertise hat with its own behavioral disposition — and drives them through a structured vote → debate → converge protocol mediated by a single overseer agent. Instead of trusting one model's first answer, you get a verdict with calibrated confidence, recorded dissent, and a fully auditable deliberation trace. It is a modular Python library (not a framework): plug in OpenAI, Anthropic, HuggingFace, Ollama — or the built-in MockBackend — and call it from any project.
📖 How the protocol works → docs/PROTOCOL.md
Installation
pip install rc-verdict # base package (includes MockBackend)
pip install "rc-verdict[openai]" # or [anthropic], [huggingface], [ollama]
pip install "rc-verdict[dev]" # development: testing, linting, coverage
Requires Python ≥ 3.11. Until the first PyPI release lands, install from source:
pip install git+https://github.com/spidey99/rc-verdict
Quickstart
Run a full deliberation locally — no API keys needed:
import asyncio, json
from rc_verdict import Panel, VerdictConfig
from rc_verdict.backends.mock import MockBackend
vote = json.dumps({"position": "approve", "conviction": "high",
"evidence_quality": "high", "reasoning": "Analysis complete.",
"dissent_points": []})
config = VerdictConfig(default_backend="mock", min_panel_size=3, max_panel_size=3,
max_token_budget=50000, pool_experts_ratio=1.0)
panel = Panel(config, backend_factory=lambda provider="mock", **kw: MockBackend(responses=[vote] * 3))
result = asyncio.run(panel.deliberate("A caching PR with 92% test coverage.",
"Should we merge this PR?"))
print(f"Decision: {result.decision} Conviction: {result.confidence.conviction.value}")
With a real backend it is one call — experts are selected and generated for your question automatically:
from rc_verdict import deliberate
result = await deliberate("Should we open-source our ETL tool?") # uses OPENAI_API_KEY
print(result.decision)
print(result.trace.to_markdown(verdict=result.verdict)) # full deliberation trace
See examples/ for more — custom experts, multi-backend routing, and more.
Core Architecture
┌─────────────────────────────────────────┐
│ CALLER / HOST APP │
│ verdict = await panel.deliberate(input)│
└────────────────┬────────────────────────┘
│
┌────────▼────────┐
│ OVERSEER │ Mediates all rounds
│ (single agent) │ Controls escalation
└────────┬────────┘
│
┌───────────┼───────────┐
│ │ │
┌───▼───┐ ┌───▼───┐ ┌───▼───┐
│Expert │ │Expert │ │Expert │ 3-7 panelists
│ #1 │ │ #2 │ │ #3 │ Diverse hats
│ "hat" │ │ "hat" │ │ "hat" │ + dispositions
└───────┘ └───────┘ └───────┘
Protocol Flow
-
Expert Selection — Overseer analyzes input context and selects relevant experts from:
- A pool of pre-canned experts (YAML-defined domain specialists)
- Dynamically generated experts — model-derived hats + dispositions tailored to the input
-
Vote Round — Each expert independently casts a confidence-weighted vote
-
Unanimity Check — All agree → verdict returned immediately (cheap path)
-
Debate Round — If not unanimous:
- Each expert's reasoning is shared with all others
- Experts process peer reasoning and update positions
- Overseer may inject clarifying questions
-
Re-Vote — Experts vote again with updated reasoning
-
Convergence — If still stuck after N rounds:
- Elimination — Remove the expert with lowest confidence
- Supermajority — Accept at ≥80% agreement threshold
- Overseer Override — Synthesize a verdict from all reasoning
- Deadlock — Return structured disagreement with all positions
Key Differentiators
| Feature | rc-verdict | Typical MAD | Why it matters |
|---|---|---|---|
| Expert pool (pre-canned + dynamic) | ✅ | ❌ | Right experts for the problem |
| Escalation ladder (vote→debate→eliminate) | ✅ | ❌ | Cheap when agreement is easy |
| Overseer-mediated rounds | ✅ | Partial | Prevents drift, controls cost |
| Confidence-gated elimination | ✅ | ❌ | Novel convergence mechanism |
| Modular library (not a framework) | ✅ | ❌ | Call from any project |
| Heterogeneous model backends | ✅ | Rare | Diversity > count (empirically proven) |
Research Foundation
Design informed by 30+ papers (2023–2026) on multi-agent deliberation:
- Debate-or-Vote (NeurIPS 2025): Voting alone captures most MAD gains; debate is a martingale without bias correction
- Diversity of Thought (2024): Diverse model families outperform N copies of the same model
- MARS (2025): Meta-reviewer pattern achieves MAD accuracy at 50% token cost
- Demystifying MAD (Jan 2026): Confidence-modulated debate + diversity-aware initialization are the two interventions that actually work
- MachineSoM (EMNLP 2023): LLM agents exhibit human-like social dynamics; personality traits affect collaboration
More Resources
- examples/ -- Runnable scripts for common use cases
- docs/PROTOCOL.md -- Protocol state machine and convergence strategies
- docs/ -- Signal capture protocol and design documentation
- LICENSE -- MIT
Status
🚧 Alpha — Core protocol working. All backends (OpenAI, Anthropic, HuggingFace, Ollama, Mock) implemented. See KICKOFF_PROMPT.md for the full implementation spec and RELEASE_CHECKLIST.md for the path to PyPI.
License
MIT
Metadata
Release files for rc-verdict 0.1.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rc_verdict-0.1.0a1.tar.gz | 71.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rc_verdict-0.1.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 163.0 kB
Release files / rc_verdict-0.1.0a1.tar.gz
| Download URL | rc_verdict-0.1.0a1.tar.gz |
|---|---|
| Size | 71.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
66e511342916eec1e03a9fca627baa7b4bf9868d131e76a1386722c731af98e2
|
|
BLAKE2b-256 checksum How to use checksums |
da33bb4119ca67316c0d6e46db4a96d1d14a5a5276b87818478a307ac394b7ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 13, 2026.
Transparency logRelease files / rc_verdict-0.1.0a1-py3-none-any.whl
| Download URL | rc_verdict-0.1.0a1-py3-none-any.whl |
|---|---|
| Size | 91.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ddb722b07b8a0bb88e6f623c191adc1eb8d7e37adc0455c32bf8e44de2f3211
|
|
BLAKE2b-256 checksum How to use checksums |
928d1134f5f5fc7e25c78b1ad44077778901e5e600eda0eac5ed79b3b25d6408
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 13, 2026.
Transparency logSecurity for rc-verdict 0.1.0a1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for rc_verdict-0.1.0a1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 13, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.