Karpathy LLM Council
Local web app implementing the Council Pattern — multiple LLMs answer independently, peer-review each other’s work (anonymized), then a Chairman model synthesizes the final response. Created by Andrej Karpathy as a Saturday hack for reading books alongside multiple LLMs simultaneously. GitHub: https://github.com/karpathy/llm-council“Vibe coded as a fun Saturday hack… I’m not going to support it in any way.” — KarpathyNot production-grade. Provided as an architectural reference.
Three-Stage Protocol
Tech Stack
- Backend: FastAPI (Python), async httpx, OpenRouter API
- Frontend: React + Vite, react-markdown
- Storage: JSON files in
data/conversations/ - Package manager: uv (Python), npm (frontend)
- Single API key: OpenRouter provides access to all council models
Configuration
How It Differs from Other Council Implementations
Key architectural fork: Karpathy delegates final synthesis to a Chairman model. AgentOps and our workflow surface disagreements and leave synthesis to the human. Human-in-the-loop synthesis preserves judgment but adds latency; Chairman synthesis is fully automated but introduces a new single point of failure (Chairman’s bias).
OpenRouter Trade-off
Using OpenRouter simplifies multi-vendor access (one API key, one endpoint) at the cost of:- Potential reasoning effort stripping for DeepSeek models (our wiki concern — less relevant here since council models are GPT/Gemini/Claude/Grok)
- Rate limits vary by model and account tier
- Adds a reseller intermediary in the call path
Related Pages
- Council Pattern — the general pattern this implements
- Multi-Vendor Adversarial Review — adversarial review; council as its strongest form
- AgentOps (boshu2) —
/councilCLI implementation; surfaces disagreements without Chairman - Pi Agent (pi-mono) — our council API layer via GitHub Models
- Autoresearch Karpathy — Karpathy’s autonomous ML research loop (different project, same author)