Tell it anything. Four AI agents debate it. A judge gives you a verdict.
| Service | URL | Status |
|---|---|---|
| π Frontend | warroom-frontend.vercel.app | |
| βοΈ Backend API | warroom-1.onrender.com | |
| π‘ Health Check | /health |
Note: Backend runs on Render free tier β first load may take 30β50s to wake up (cold start).
You type any topic. Four AI agents take over and debate it in real time:
| Agent | Name | Role |
|---|---|---|
| β² Proponent | AXIOM | Argues as strongly as possible for your topic |
| βΌ Opponent | REFUTE | Finds every weakness and argues against |
| β Fact-Checker | VERITAS | Neutral auditor β detects fallacies, verifies claims |
| β Judge | ARBITER | Scores every turn, delivers a final verdict |
π "Should I buy a dog?"
πΌ "Should I quit my job and freelance?"
π "Should I rent or buy a house right now?"
β‘ "Nuclear energy is essential for net-zero"
π€ "AI development should be paused immediately"
π "Social media does more harm than good"
- β‘ Real-time streaming β Every agent's response streams token-by-token via WebSocket. Watch agents think and speak live.
- βΈ Pause & interrupt β Pause any debate mid-turn. Inject evidence, challenge a claim, or redirect the conversation.
- π Live web search β Fact-Checker uses Tavily to search the web in real time, verifying claims as they're made.
- β Fallacy detection β Every turn scanned for 10+ fallacy types (Ad Hominem, Straw Man, False Dichotomy, etc.).
- π Live metrics β Animated score bars, head-to-head battle view, and consensus arc update after every turn.
- 𧬠Consensus engine β Vector embeddings measure stance convergence. Debate ends when agents agree enough.
- β± Time-travel & forking β Every round checkpointed. Jump back and fork a new debate branch from any point.
- π Judge verdict β Full verdict with winner, key arguments, fallacy summary, and concrete recommendation.
- π€ Personal topic support β Detects personal decisions and adjusts agents to discuss practical, real-world impact.
|
Frontend
|
Backend
|
flowchart TD
START --> round_start
round_start --> proponent
round_start --> opponent
round_start --> fact_checker
proponent --> moderator
opponent --> moderator
fact_checker --> moderator
moderator --> consensus
consensus -->|continue| round_start
consensus -->|end| judge
judge --> END
flowchart TD
A[User enters topic] --> B[Next.js frontend\nPOST /debates]
B --> C[FastAPI backend\nstarts LangGraph task]
C --> D[4 agents debate in sequence\nPro β Opp β Fact β Mod]
D --> E[Groq streams tokens\nLlama 3.3 70B]
D --> F[Scoring runs parallel\nlogic + fallacies]
E --> G[WebSocket pushes events live]
F --> G
G --> H[User sees live debate + verdict]
WarRoom/
βββ frontend/ # Next.js app
β βββ app/
β β βββ page.tsx # Landing page
β β βββ auth/ # Login + Signup
β β βββ debate/
β β β βββ new/ # Create debate form
β β β βββ [id]/ # Live debate arena
β β βββ history/ # Past debates
β βββ components/
β β βββ agents/ # AgentCard
β β βββ dashboard/ # LiveMetricsPanel, ConsensusGauge
β β βββ debate/ # DebateFeed, InterruptModal, DebateControls
β β βββ graph/ # GraphCanvas (React Flow)
β β βββ timeline/ # DebateTimeline, ForkModal
β β βββ ui/ # Button, Badge, Tooltip
β βββ hooks/
β β βββ useAuth.ts # Supabase session
β β βββ useDebate.ts # Debate state + WS events
β β βββ useCheckpoints.ts # Time-travel / fork
β βββ lib/
β βββ api.ts # FastAPI client
β βββ supabase.ts # Supabase client
β βββ types.ts # TypeScript interfaces
β βββ constants.ts # Shared constants
β
βββ backend/ # FastAPI app
βββ main.py # Entry point + CORS
βββ models/schemas.py # Pydantic models
βββ routers/
β βββ debates.py # REST endpoints
β βββ ws.py # WebSocket manager
βββ agents/
β βββ graph.py # LangGraph state machine
β βββ consensus.py # Vector embedding engine
β βββ prompts.py # System prompts
β βββ scoring.py # Per-turn scoring
βββ services/
βββ groq_client.py # Groq API
βββ supabase_client.py # DB operations
βββ redis_client.py # Ephemeral state
- Node.js 18+
- Python 3.11+
- Supabase project (free)
- Groq API key (free)
- Tavily API key (optional β enables web search)
git clone https://github.com/harshitayadavv/warroom.git
cd warroom- Go to your Supabase project β SQL Editor β New query
- Paste the contents of
backend/supabase_schema.sql - Click Run
cd frontend
npm installCreate frontend/.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
NEXT_PUBLIC_API_URL=http://localhost:8000npm run dev # http://localhost:3000cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtCreate backend/.env:
GROQ_API_KEY=gsk_your_key
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your-service-role-key
REDIS_URL=redis://localhost:6379
TAVILY_API_KEY=tvly-your-key
CORS_ORIGINS=http://localhost:3000,https://warroom-frontend.vercel.app
DEBUG=trueuvicorn main:app --reload --port 8000 # http://localhost:8000| Variable | Value |
|---|---|
NEXT_PUBLIC_API_URL |
https://warroom-1.onrender.com |
NEXT_PUBLIC_SUPABASE_URL |
Your Supabase URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Your anon key |
| Variable | Value |
|---|---|
GROQ_API_KEY |
Your Groq key |
SUPABASE_URL |
Your Supabase URL |
SUPABASE_SERVICE_KEY |
Your service role key |
CORS_ORIGINS |
http://localhost:3000,https://warroom-frontend.vercel.app |
TAVILY_API_KEY |
Your Tavily key (optional) |
Start command: uvicorn main:app --host 0.0.0.0 --port 8000
| Agent | Model |
|---|---|
| Proponent, Opponent, Judge | llama-3.3-70b-versatile |
| Fact-Checker | llama-3.3-70b-versatile |
| Scoring | gemma2-9b-it (separate quota) |
MIT β do whatever you want with it.
Built with β by Harshita Yadav