In ancient Greece, the Agora was a public arena for debate- a place where ideas were tested through confrontation, not passive agreement.
In layman's terms: an AI debate arena.
- Pick two AI fighters (personas)
- Enter a topic
- Watch a structured, turn-based debate unfold live
- Decide the winner (or let an AI judge do it)
👉 It feels like a game, not a chatbot.
- Enter the arena
- Choose fighters
- Set topic
- Watch the duel (live streaming)
- Declare the winner
- Personas > generic AI
- Turns > free-form chat
- Pacing > raw output
Every debate is:
- structured
- concise
- intentionally dramatic
- 2 fighters
- 4–6 turns
- single topic
- no auth
- no persistence
- ⚔️ Persona-based fighters
- 🔄 Turn-based debate engine
- ⚡ Live streaming (SSE)
- 🧠 AI judge (optional)
- 🎮 Retro arena-style UI
[ Browser ]
│
│ HTTP + SSE
▼
[ FastAPI Backend ]
├── Debate Engine
├── Persona System
├── Judge System
└── Stream Layer
Backend
- Python
- FastAPI
- Async (async/await)
- SSE
LLM
- Pluggable (OpenAI / local)
Frontend
- Lightweight, retro-inspired UI
- Streaming text rendering
POST /debate/start
{
"topic": "Is AI dangerous?",
"fighter_a": "Economist",
"fighter_b": "Philosopher",
"auto_judge": true
}GET /debate/stream/{session_id}
Events:
turn_startchunkturn_endresult
Detailed documentation lives in /docs:
- architecture
- prompt design
- personas
- backend internals
- frontend UX
GitHub Actions runs frontend typechecks, Biome checks, builds, and engine/ ruff/ty checks on pushes and pull requests.
AI shouldn’t just answer. It should argue, perform, and compete.