Frontier Council
Multi-model deliberation for important decisions. 4 frontier LLMs debate a question, then Claude judges and synthesizes.
Inspired by Andrej Karpathy's LLM Council, with added blind phase (anti-anchoring), explicit engagement requirements, rotating challenger role, and social calibration mode.
Models
Council (deliberators):
- GPT (gpt-5.2-pro)
- Gemini (gemini-3-pro-preview)
- Grok (grok-4)
- Kimi (kimi-k2.5)
Judge: Claude Opus 4.5 (synthesizes + adds own perspective)
Installation
pip install frontier-council
Or with uv:
uv tool install frontier-council
Setup
Set your OpenRouter API key:
export OPENROUTER_API_KEY=sk-or-v1-...
Optional fallback keys (for flaky models):
export GOOGLE_API_KEY=AIza... # Gemini fallback
export MOONSHOT_API_KEY=sk-... # Kimi fallback
Usage
# Basic question
frontier-council "Should we use microservices or monolith?"
# With social calibration (for interview/networking questions)
frontier-council "What questions should I ask in the interview?" --social
# With persona context
frontier-council "Should I take the job?" --persona "builder who hates process work"
# Multiple rounds
frontier-council "Architecture decision" --rounds 3
# Save transcript
frontier-council "Career question" --output transcript.md
# Share via GitHub Gist
frontier-council "Important decision" --share
# List past sessions
frontier-council --sessions
All sessions are auto-saved to ~/.frontier-council/sessions/ for later review.
Options
| Flag | Description |
|---|---|
--rounds N |
Number of deliberation rounds (default: 2, exits early on consensus) |
--output FILE |
Save transcript to file |
--named |
Let models see real names during deliberation (may increase bias) |
--no-blind |
Skip blind first-pass (faster, but first speaker anchors others) |
--context TEXT |
Context hint for judge (e.g., "architecture decision") |
--share |
Upload transcript to secret GitHub Gist |
--social |
Enable social calibration mode (auto-detected for interview/networking) |
--persona TEXT |
Context about the person asking |
--challenger MODEL |
Which model starts as challenger (gpt/gemini/grok/kimi). Rotates each round. |
--domain DOMAIN |
Regulatory domain context (banking, healthcare, eu, fintech, bio) |
--followup |
Enable interactive drill-down after judge synthesis |
--quiet |
Suppress progress output |
--sessions |
List recent saved sessions |
--no-save |
Don't auto-save transcript to ~/.frontier-council/sessions/ |
How It Works
Blind First-Pass (Anti-Anchoring):
- All models generate short "claim sketches" independently and in parallel
- This prevents the "first speaker lottery" where whoever speaks first anchors the debate
- Each model commits to an initial position before seeing any other responses
Deliberation Protocol:
- All models see everyone's blind claims, then deliberate
- Each model MUST explicitly AGREE, DISAGREE, or BUILD ON previous speakers by name
- After each round, the system checks for consensus (3/4 non-challengers agreeing triggers early exit)
- Judge synthesizes the full deliberation
Rotating Challenger:
- One model each round is assigned the "challenger" role
- The challenger MUST argue the contrarian position and identify weaknesses in emerging consensus
- Role rotates each round (GPT R1 → Gemini R2 → Grok R3 → Kimi R4...) to ensure sustained disagreement
- Challenger is excluded from consensus detection (forced disagreement shouldn't block early exit)
Anonymous Deliberation:
- Models see each other as "Speaker 1", "Speaker 2", etc. during deliberation
- Prevents models from playing favorites based on vendor reputation
- Output transcript shows real model names for readability
When to Use
Use the council when:
- Making an important decision that benefits from diverse perspectives
- You want models to actually debate, not just answer in parallel
- You need a synthesized recommendation, not raw comparison
- Exploring trade-offs where different viewpoints matter
Skip the council when:
- You're just thinking out loud (exploratory discussions)
- The answer depends on personal preference more than objective trade-offs
- Speed matters (council takes 60-90 seconds)
Python API
from frontier_council import run_council, COUNCIL
import os
api_key = os.environ["OPENROUTER_API_KEY"]
transcript, failed_models = run_council(
question="Should we use microservices or monolith?",
council_config=COUNCIL,
api_key=api_key,
rounds=2,
verbose=True,
social_mode=False,
)
print(transcript)
License
MIT
Metadata
Release files for frontier-council 0.2.1
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 | |
|---|---|---|---|---|
| frontier_council-0.2.1.tar.gz | 25.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| frontier_council-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.9 kB
Release files / frontier_council-0.2.1.tar.gz
| Download URL | frontier_council-0.2.1.tar.gz |
|---|---|
| Size | 25.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d15dd4d469760ece43d3464549ab8115cfec69d86dc1455c4cf3a7cab4ba04a
|
|
BLAKE2b-256 checksum How to use checksums |
142b31119a55ebd5f2caa752f37066c1c8f82a8cb7e9b928d08996cd575823e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.2
|
Release files / frontier_council-0.2.1-py3-none-any.whl
| Download URL | frontier_council-0.2.1-py3-none-any.whl |
|---|---|
| Size | 21.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d83741deab1a27181b3f753c07ae5b8254e7ea18a96f9ec73a4f0e8e56993f58
|
|
BLAKE2b-256 checksum How to use checksums |
45cf717b1ba59eb8d4f79de67f1b7332064dad9d1bc90f12fb3aaa9cb82d88cd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.2
|
Security for frontier-council 0.2.1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.