Overview • Features • Tech Stack • Architecture • Quick Start • MYND Ecosystem • Deployment
MYND Model Arena is an LLM evolutionary benchmarking platform where language models compete, evolve, and are ranked through systematic tournament-style evaluation. Inspired by evolutionary biology, Model Arena pits models against each other on standardized and custom benchmarks, tracking performance across reasoning, coding, creativity, factual accuracy, and agent task completion — revealing which models truly survive the fitness test.
Built as a Turborepo monorepo with SvelteKit frontend, Fastify backend, Drizzle ORM, and real-time WebSocket-based benchmark streaming, Model Arena provides the infrastructure for rigorous, reproducible LLM evaluation at scale.
- Evolutionary Tournament System - Models compete head-to-head in ELO-ranked battles across benchmark suites
- Multi-Dimensional Benchmarking - Reasoning, coding (HumanEval/MBPP), creativity, factual accuracy, agent tasks
- Real-Time Benchmark Streaming - WebSocket-powered live benchmark execution with progress visualization
- Interactive Leaderboards - Dynamic Chart.js visualizations with ELO ratings, win rates, and category breakdowns
- Custom Benchmark Support - Define and run your own evaluation suites
- OpenAI API Integration - Benchmark against GPT-4o, GPT-4, o1, and other OpenAI models out of the box
- Drizzle ORM - Type-safe SQL queries with drizzle-kit migrations
- Redis-Backed Queues - ioredis for managing benchmark job queues and caching
- Fastify Swagger Docs - Auto-generated OpenAPI documentation for the benchmark API
- Turborepo Build System - Incremental builds, shared packages, and task orchestration
- Docker Ready - Complete docker-compose with PostgreSQL and Redis
- Database Seeding - Built-in seed scripts for initial benchmark and model data
| Layer | Technology | Purpose |
|---|---|---|
| Monorepo | Turborepo | Build orchestration and caching |
| Frontend | SvelteKit 2, Svelte 5, TypeScript | Reactive benchmark dashboard |
| Charts | Chart.js | Leaderboard and benchmark visualizations |
| Real-Time | Socket.IO Client | Live benchmark streaming |
| Styling | Tailwind CSS, PostCSS, Autoprefixer | Utility-first responsive design |
| Build Tool | Vite | Fast development and production builds |
| Backend | Node.js, Fastify 4, TypeScript | High-performance benchmark API |
| API Docs | @fastify/swagger, @fastify/swagger-ui | Auto-generated OpenAPI docs |
| Real-Time | @fastify/websocket | WebSocket support for live updates |
| Auth | @fastify/jwt, bcryptjs | Secure authentication |
| Rate Limiting | @fastify/rate-limit | API abuse prevention |
| CORS | @fastify/cors | Cross-origin support |
| ORM | Drizzle ORM, drizzle-kit | Type-safe SQL and migrations |
| Database | PostgreSQL 16 | Primary data store |
| Cache/Queue | Redis (ioredis) | Job queues and result caching |
| LLM Access | OpenAI API | Model provider integration |
| Logging | pino-pretty | Structured development logging |
| Testing | Jest | Backend unit and integration tests |
| Shared | @mynd-arena/shared | Shared TypeScript types between packages |
┌─────────────────────────────────────────────────────────┐
│ SvelteKit Frontend (Arena Dashboard) │
│ Leaderboard │ Benchmark Runner │ Model Compare │
│ Real-Time Charts │ Tournament Bracket │ Results │
└──────────────────────────┬──────────────────────────────┘
│ REST + WebSocket
┌──────────────────────────▼──────────────────────────────┐
│ Fastify Backend (Arena Engine) │
│ Tournament Controller │ Benchmark Runner │ Scoring │
│ Auth │ Rate Limit │ Swagger Docs │ WebSocket Hub │
│ ───────────────────────────────────────────────────── │
│ OpenAI API integration for model calls │
└───────┬──────────────────────┬──────────────────────────┘
│ Drizzle ORM │
┌───────▼──────────────────────▼──────────────────────────┐
│ PostgreSQL 16 │
│ models │ benchmarks │ battles │ elo_ratings │ results │
│ ───────────────────────────────────────────────────── │
│ Redis for job queues and result caching │
└─────────────────────────────────────────────────────────┘
- Node.js 20+
- PostgreSQL 16+
- Redis 7+
- OpenAI API key (for benchmarking against OpenAI models)
# Clone the repository
git clone https://github.com/yethikrishna/mynd-model-arena.git
cd mynd-model-arena
# Install all dependencies (Turborepo)
npm install
# Configure environment
cp .env.example .env
# Set DATABASE_URL, REDIS_URL, OPENAI_API_KEY, JWT_SECRET
# Run database migrations
npm run db:migrate
# Seed initial data (models, benchmark suites)
npm run db:seed
# Start development (all packages via Turborepo)
npm run dev
# Run tests
npm test
# Lint
npm run lint# Start all services (PostgreSQL, Redis, app)
npm run docker:up
# Build containers
npm run docker:build
# Stop services
npm run docker:downmynd-model-arena/
├── packages/
│ ├── backend/ # Fastify benchmark engine
│ │ ├── src/
│ │ │ ├── routes/ # Benchmark, model, tournament APIs
│ │ │ ├── services/ # Scoring, ELO, benchmark execution
│ │ │ ├── db/ # Drizzle schema and migrations
│ │ │ └── index.ts
│ │ └── package.json
│ ├── frontend/ # SvelteKit arena dashboard
│ │ ├── src/
│ │ │ ├── routes/ # Leaderboard, battles, benchmarks
│ │ │ ├── lib/ # Components and stores
│ │ │ └── app.html
│ │ └── package.json
│ └── shared/ # Shared types and constants
│ └── src/
├── docker/ # Docker configuration
├── turbo.json # Turborepo pipeline config
├── docker-compose.yml
└── package.json
# Environment
NODE_ENV=development
# Database
DB_USER=mynd
DB_PASSWORD=mynd123
DB_NAME=mynd_arena
DB_HOST=localhost
DB_PORT=5432
DATABASE_URL=postgresql://mynd:mynd123@localhost:5432/mynd_arena
# Redis
REDIS_URL=redis://localhost:6379
# Server
PORT=8080
CORS_ORIGIN=http://localhost:5173
# JWT
JWT_SECRET=your-super-secret-jwt-key-change-in-production
# OpenAI API (for benchmarking)
OPENAI_API_KEY=sk-...
# Rate Limiting
RATE_LIMIT_MAX=100
RATE_LIMIT_WINDOW=60000MYND Model Arena is part of the MYND AI Agent Platform:
| Project | Purpose |
|---|---|
| mynd-platform | Core platform: GUI automation, memory, multi-agent orchestration |
| mynd-synchron | Cross-application context synchronizer |
| mynd-agent-replay | Black box flight recorder for AI agents |
| mynd-model-arena | LLM evolutionary benchmarking (this repo) |
| mynd-plan | AI product-navigator agent |
| mynd-skill-forge | AI skill creation platform |
# Production build via Turborepo
npm run build
# Docker production
npm run docker:build
npm run docker:up -dFor production benchmarking at scale, consider:
- Dedicated GPU instances for local model evaluation
- Managed PostgreSQL with connection pooling
- Multiple Redis instances for high-volume benchmark queues
- Separate worker processes for benchmark execution
- Fork and create feature branch
- Ensure
npm run lintandnpm testpass - Add benchmarks following the existing pattern in
packages/backend/src/services/ - Submit a PR
MIT License.
Where models compete, evolve, and prove their worth.