An AI-powered rhetoric and debate training platform. Practice argumentation against AI opponents, analyze your logical consistency, and improve critical thinking through structured debate.
- Live Debate Arena — real-time transcript with phased debate rounds (Opening, Cross-Examination, Rebuttal, Closing, Verdict), support for 2v2 mode, and an AI judge
- AI Opponents — debate against AI agents with adjustable rigor levels from Casual to Elite (Socratic Master)
- In-Arena Tools — Fact Check and Logic Audit quick actions during live debates
- Knowledge Base — curated philosophical frameworks and rhetorical techniques (Socratic Questioning, Logical Fallacies, Kantian Deontology, Heuristics & Biases, Game Theory, Stoic Resolve, and more)
- Performance Insights — Elo rating tracking, win rate, skill balance radar (Logical Consistency, Rhetorical Flair, Evidence Integration, Response Countering, Emotional Intelligence), and AI feedback from the Obsidian Core engine
- Competition System — live tournaments with prize pools and global leaderboards
- Neural Tuning — calibrate your AI assistance levels for Rhetoric, Extraction, and Empathy
- Framework: React 19 + TypeScript
- Build: Vite 6
- Styling: Tailwind CSS v4
- Animations: Motion (Framer Motion)
- Icons: Lucide React
Prerequisites: Bun
-
Install dependencies:
bun install -
Copy the example env file:
cp .env.example .env.local -
Start the dev server:
bun dev
The app runs on http://localhost:3000.
| Command | Description |
|---|---|
bun dev |
Start development server |
bun run build |
Build for production |
bun run preview |
Preview production build |
bun run lint |
Type-check with TypeScript |
| Variable | Description |
|---|---|
APP_URL |
Deployment URL for self-referential links |
DATABASE_URL |
Neon Postgres connection string used by Drizzle and the server |
MindArena now defaults to Neon Postgres for the database layer.
- Create a database in Neon.
- Copy its pooled connection string into
.env.localasDATABASE_URL. - Run the schema migration commands:
bun run db:generate bun run db:migrate
For password reset email delivery, also set:
RESEND_API_KEYEMAIL_FROM
If those are missing, the server falls back to printing reset codes in the dev log.
The current schema includes:
- user/session tables
- persisted user settings and quotas
- debate templates, stage timers, scorecards, replay highlights, exports/imports
- knowledge documents, chunks, collections, shares, citations, and table cards
- background jobs, audit events, scripted opponent profiles, and tool-call logs