There are hundreds of AI models out there. This is a simple tool to help you pick the right one text and media benchmarks, speed, pricing, context windows, all in one place.
Data comes from Artificial Analysis, OpenRouter, and Hugging Face, refreshed every hour.
- Model catalogue — browse text, image, voice, video and utility models with key stats at a glance
- Side-by-side comparison — pick up to several models and compare them on every metric
- Detailed model pages — context window, output speed, pricing, text benchmarks (MMLU, HumanEval, MATH…) and media ELO benchmarks when Artificial Analysis exposes them
- Search & filter — find models by name or provider instantly
- Light/dark theme — persisted across sessions
- French & English — language auto-detected, switchable in one click
- No account required — language, theme and comparison preferences stay in the browser
bun install
cp .env.example .env # then fill in your API keys
bun run devThen open http://localhost:3000
You'll need an Artificial Analysis API key — create one from the Data API and add it to .env:
ARTIFICIAL_ANALYSIS_API_KEY=your_key_here
OPENROUTER_API_KEY=your_openrouter_key_hereOpenRouter is used for model metadata, weekly usage rankings and benchmark enrichment.
OPENROUTER_API_KEY is optional, but enables authenticated /api/v1/models requests
instead of relying on the unauthenticated public path.
Hugging Face is used only for official model repository metadata and links.
The Artificial Analysis integration uses the supported V2 endpoints, paginates the
complete language-model catalogue, and automatically uses the richer Pro or
Commercial response when the configured key grants access.
src/
router.tsx # Router instance
routes/
__root.tsx # Root layout, <head>, providers, error boundary
index.tsx # Homepage — model grid
compare.tsx # Side-by-side comparison
agents/coding.tsx # Coding-agents leaderboard
models/$slug.tsx # Model detail page
api/cron/refresh.ts # Manual cache-refresh endpoint
robots[.]txt.ts # robots.txt
sitemap[.]xml.ts # sitemap.xml
styles/globals.css # Tailwind v4 entry
components/ # UI components (shadcn/ui based)
lib/
api.ts # Data fetching (Artificial Analysis + OpenRouter) — server only
server-fns.ts # TanStack Start server functions (route loaders)
revalidate-cache.ts # Revalidating in-memory cache
cron-cache.ts # Persisted models cache for Bun/Dokploy
coding-agents.ts # Coding-agent types + harness metadata (client-safe)
i18n.tsx # French/English translations
compare-store.tsx # Client-side comparison state
- TanStack Start — full-stack React framework
- TanStack Router — type-safe file-based routing
- React 19
- Vite 8
- Tailwind CSS v4
- shadcn/ui + Radix UI
- Nitro — server output run by Bun in Docker/Dokploy
This branch targets Dokploy as a Bun/Docker service. The production server is generated by Nitro:
bun run build
bun run startbun run start runs:
bun .output/server/index.mjsDokploy can use the included Dockerfile. Configure:
- Internal port:
3000 - Environment variables:
ARTIFICIAL_ANALYSIS_API_KEY, optional fallback AA keys,OPENROUTER_API_KEY,HUGGINGFACE_API_KEY, andCRON_SECRET - Optional volume: mount
/app/.dataso.data/models-cache.jsonsurvives redeploys - Health check: use
http://localhost:3000/health - Scheduler: create a Dokploy Application Schedule Job that runs
bun run refresh-cacheinside the running container
