Multi-LLM deliberation protocol engine — like a conclave of AI cardinals
Project description
conclave v3
Multi-LLM deliberation protocol engine — like a conclave of AI cardinals.
V3 is a complete rewrite. It's not just "ask two models and compare" — it's a multi-round deliberation protocol where models critique each other, revise their answers, and a judge synthesizes a consensus report.
What's new in v3
- 🔄 Multi-round deliberation — Initial → Critique → Revise → Synthesize
- 🔌 Plugin provider system — CLI (Claude Code/Codex) + API (OpenAI/Anthropic/DeepSeek)
- 🧠 Semantic synthesizer — LLM-powered judge generates consensus/divergence/insight report
- 📡 Streaming — Real-time output for each provider
- ⚙️ Config system —
~/.conclave/config.yaml - 🧪 Test suite — 22 tests, CI via GitHub Actions
Install
pip install conclave-llm
Prerequisites
conclave doesn't manage API keys. It connects through:
| Provider Type | What you need |
|---|---|
| CLI | claude and/or codex CLI installed + logged in |
| OpenAI | OPENAI_API_KEY env var |
| Anthropic | ANTHROPIC_API_KEY env var |
| DeepSeek | DEEPSEEK_API_KEY env var |
Quick Start
# Initialize config
conclave config init
# Ask 2 models the same question
conclave "Should we use Redis or Postgres for this caching layer?"
# Multi-round deliberation with synthesis
conclave "Design a rate-limiting strategy for our API" --rounds 3
# Use specific providers
conclave "Review this architecture" --providers claude,deepseek
# JSON output
conclave "Compare Kubernetes vs Nomad" --format json --rounds 2
# Prompt from a file (long / multiline specs — no shell pipes needed)
conclave run --prompt-file ./spec.md --providers claude,codex --rounds 1
# Persist result to disk (JSON is un-truncated; markdown is ANSI-free)
conclave run --prompt-file ./spec.md \
--providers claude,codex \
--format json --output ./deliberation.json
--prompt-file and --output
--prompt-file PATHreads the prompt from a UTF-8 file. Mutually exclusive with the positionalPROMPT. Empty/missing/non-UTF-8/directory inputs raise a clear error.--output PATHwrites the full result to disk.--format jsonwrites the completeDeliberationResultas JSON (response text is not truncated, unlike the terminal preview).--format markdownwrites plain, ANSI-free markdown.- If writing fails (permissions, missing parent dir, …) conclave prints a warning but keeps the deliberation exit code.
- Passing the same path to
--prompt-fileand--outputis rejected so the input can never be clobbered.
Migrating from hermes_fusion.py
The old fusion runner used echo "$SPEC" | python3 hermes_fusion.py …, which
Hermes Tirith blocks as pipe_to_interpreter. Replace it with a --prompt-file
call — no stdin pipe, no interactive TUI:
# ❌ blocked by Hermes and hangs on multiline prompts
echo "$SPEC" | python3 ~/.hermes/scripts/hermes_fusion.py --providers claude,codex
# ✅ conclave equivalent
conclave run --prompt-file ./spec.md \
--providers claude,codex --rounds 1 \
--format json --output ./out.json
The default Claude preset now runs claude -p "{prompt}" --model {model}, so
long or multiline prompts no longer drop into the interactive TUI and hang, and
the model: you set in ~/.conclave/config.yaml is passed through to the
Claude CLI via --model instead of being a metadata-only label.
Deliberation Protocol
Round 1 (INITIAL): All models answer independently
Round 2 (CRITIQUE): Each model critiques others' answers
Round 3 (REVISE): Models revise based on feedback
↓
SYNTHESIS: Judge generates consensus report:
✅ Consensus points
🔀 Divergences
💡 Unique insights
Provider System
conclave v3 supports any backend through a provider plugin system:
# ~/.conclave/config.yaml
providers:
claude:
provider_type: cli
model: claude-fable-5
executable: claude
openai:
provider_type: openai
model: gpt-5.6-sol
api_key: ${OPENAI_API_KEY}
Fable 5 必须写全名 claude-fable-5;别名 fable 可能不可用。
Architecture
Layer 4: CLI (click + rich)
Layer 3: Protocol Engine (DeliberationEngine)
Layer 2: Scheduler (parallel ThreadPoolExecutor)
Layer 1: Providers (CLI / OpenAI / Anthropic / DeepSeek)
Layer 0: Config + Cache + Formatters
Development
git clone https://github.com/doctorzero666/conclave
cd conclave
pip install -e ".[dev]"
pytest # 22 tests
ruff check # lint
License
MIT — Zhichao Jiang
Project details
Release history Release notifications | RSS feed
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 conclave_llm-3.0.0.tar.gz.
File metadata
- Download URL: conclave_llm-3.0.0.tar.gz
- Upload date:
- Size: 41.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b441a586b8ebcae09a5371a09474e2b11bfd6556cf0b653bb71345de8fd9465
|
|
| MD5 |
dfc398196cdf962a5baa18c252a683b8
|
|
| BLAKE2b-256 |
a7b9583ce105474283987cf6702bac8a6650bcb236066b9e727f943261845444
|
File details
Details for the file conclave_llm-3.0.0-py3-none-any.whl.
File metadata
- Download URL: conclave_llm-3.0.0-py3-none-any.whl
- Upload date:
- Size: 39.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
498275781fa0cf96fd6cb53a74f6cd4feb32f676f533d83cb2189edbe98393ee
|
|
| MD5 |
2ae81851e8bdefeb0f7a98e613f16539
|
|
| BLAKE2b-256 |
2f6427b63a8cc0b2e44462c675eb717e018c751b08f93b3b85fafe10a5bef338
|