MULTI-MODEL · ANONYMOUS PEER REVIEW · 100% FREE

Several LLMs compete. One synthesizes the best.

Asking a single LLM gives you one perspective. Different models excel at different things. This sends your question to several models at once, has them evaluate each other anonymously (to prevent bias), and a chairman model synthesizes the best final answer. All streamed live to a battle-arena UI. Fork of Karpathy's llm-council, rebuilt from scratch.

3 rounds
individual answers → anonymous peer review → verdict
2-6 models
dynamic picker over whatever OpenRouter lists as free that day (20 as of Jul 2026)
SSE live
each stage streams to the UI as it completes
$0 API
free-tier models only - and the free tier caps at 50 requests/day
How it works

The 3-round battle.

1

Individual answers

Your question goes in parallel to 2–6 models. Side-by-side panels with colors and word counts. If fewer than 2 respond, it automatically retries the failed ones and then tries backup models.

PARALLEL
2

Anonymous cross-evaluation

Each model receives the anonymized answers ("Response A/B/C…") and produces a ranking with justification. An aggregate ranking is computed and shown as a podium with medals.

UNBIASED
3

Chairman's verdict

A chairman model analyzes all the answers and evaluations and synthesizes a concise final answer (3–4 paragraphs). If it fails, it retries and then tries each backup sequentially.

SYNTHESIS
Differences vs. the original

What this fork adds.

AspectOriginalThis fork
Model selectionHardcoded in config.pyDynamic UI over the current free-model list
Number of modelsFixed (4)Configurable 2–6 from the frontend
Chairman modelFixedSelectable separately
Retry/fallbackNoneFull retry + backup chain
Error visibilityGenericType-specific per model (timeout, rate_limit…)
LanguageEnglishFull Spanish (UI + answers)
UIBasic tabsArena with panels, podium, timeline
Resilience

Built for free-tier chaos.

SSE event types
stage1_start → [stage1_retry …] → stage1_complete →
stage2_start → stage2_complete →
stage3_start → [stage3_retry …] → stage3_complete →
title_complete → complete

Free-tier models have rate limits and outages. Stage 1: retries failures + backup models. Stage 3: the chairman retries and then tries 7 backups sequentially. Every failure returns a structured error type visible in the UI.

FastAPI + httpxReact 18 + ViteSSE streamingOpenRouterJSON storageuv + npm