Xata
몇 초 만에 새 Postgres를 시작하거나 기존 것을 복제하고 사용 안 할 때는 자동으로 축소
OpenRouter·Groq·Mistral 무료 모델을 실시간 벤치마크하고 3시간마다 자동 업데이트해 GitHub Pages 대시보드에 공개
Real-time benchmarking of free-tier models from OpenRouter, Groq & Mistral — automated every 3 hours via GitHub Actions, published to a live dashboard on GitHub Pages.
데이터PythonGitHub @Saif658온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Real-time benchmarking of free-tier models from OpenRouter, Groq, and Mistral — automated roughly every 3 hours, zero infrastructure.
🌐 saif658.github.io/LLMstats — live, public, refreshes roughly every 3 hours
Forked from the architecture of NIMStats, rebuilt to compare three OpenAI-compatible providers side-by-side.README 전문 보기 ↗Real-time benchmarking of free-tier models from OpenRouter, Groq, and Mistral — automated roughly every 3 hours, zero infrastructure.
🌐 saif658.github.io/LLMstats — live, public, refreshes roughly every 3 hours
Forked from the architecture of NIMStats, rebuilt to compare three OpenAI-compatible providers side-by-side.
LLMstats automatically benchmarks 39 free-tier models roughly every 3 hours — 8 served by OpenRouter (the unified router, 5 upstream providers), 5 by Groq (the LPU cloud), and 26 by Mistral (Experiment tier) — and publishes the results to a live, interactive dashboard. No servers, no subscriptions — just fork the repo, drop in three API keys, and go.
| 🏎️ Every ~3h | 📊 Interactive Charts | 🔁 Zero Infra | 🔀 Multi-Provider |
|---|---|---|---|
| GitHub Actions cron | Speed, throughput, reliability | Static site + free CI/CD | OpenRouter ↔ Groq ↔ Mistral comparisons |
A working dashboard in under 5 minutes.
git clone https://github.com/Saif658/LLMstats.git
cd LLMstats
| Provider | Where to get it |
|---|---|
| OpenRouter | openrouter.ai/keys — sign up, generate a key |
| Groq | console.groq.com/keys — sign up, generate a key |
| Mistral | console.mistral.ai/api-keys — sign up, generate a key (La Plateforme / Experiment tier) |
In your forked repo: Settings → Secrets and variables → Actions → New repository secret
| Name | Value |
|---|---|
OPENROUTER_API_KEY | Your OpenRouter API key |
GROQ_API_KEY | Your Groq API key |
MISTRAL_API_KEY | Your Mistral API key |
Settings → Pages → Build from "GitHub Actions".
Actions → Benchmark OpenRouter + Groq + Mistral Models → Run workflow.
The dashboard auto-refreshes roughly every 3 hours after that. ✨
| Tab | What you get |
|---|---|
| 📊 Overview | 5 KPI cards · success-rate trend · top-10 speed & throughput bars · per-model reliability pills |
| 🏆 Leaderboard | Composite score · sortable columns · trend indicators · provider chips (OpenRouter vs Groq vs Mistral) |
| 🔬 Explorer | Per-model deep dive · response time history · error breakdown · availability heatmap |
| ⏱ Timeline | Filterable run history · expandable run cards with full per-model detail |
| ⚔️ Compare | Head-to-head overlay · win-rate stats · side-by-side metric comparison |
| Upstream | Model | Note |
|---|---|---|
| NVIDIA | nvidia/nemotron-3-ultra-550b-a55b:free | 550B MoE flagship |
| NVIDIA | nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free | Compact reasoning |
| NVIDIA | nvidia/nemotron-3.5-super-vl:free | New model |
google/gemma-4-26b-a4b-it:free | Gemma 4 mid-size | |
google/gemma-4-31b-it:free | New model | |
| Cohere | cohere/north-mini-code:free | Cohere North mini-code |
| liquid | liquid/lfm-3-1.7b:free | New model |
| recursive | recursive/flint-v1.0:free | New model |
| Model | Note |
|---|---|
openai/gpt-oss-120b | Open-source 120B |
openai/gpt-oss-20b | Open-source 20B |
openai/gpt-oss-safeguard-20b | Safety-guard 20B |
allam-2-7b | Allam (small MoE) |
qwen/qwen3.8-27b | New model |
| Model | Note |
|---|---|
mistral-medium-latest | Mistral Medium |
mistral-small-latest | Mistral Small |
ministral-8b-latest | Ministral 8B |
ministral-3b-latest | Ministral 3B |
magistral-small-latest | Magistral small |
codestral-latest | Code-specialized |
codestral-2508 | New model |
labs-leanstral-1-5 | New model |
labs-leanstral-1-5-1 | New model |
ministral-14b-2512 | New model |
ministral-14b-latest | New model |
ministral-3b-2512 | New model |
ministral-8b-2512 | New model |
mistral-code-latest | New model |
mistral-medium | New model |
mistral-medium-2604 | New model |
mistral-medium-3 | New model |
mistral-medium-3-5 | New model |
mistral-medium-3.5 | New model |
mistral-small-2603 | New model |
mistral-vibe-cli-fast | New model |
mistral-vibe-cli-latest | New model |
mistral-vibe-cli-with-tools | New model |
magistral-medium-latest | Magistral medium |
mistral-large-4 | New model |
mistral-large-4-0 | New model |
┌─── GitHub Actions (every ~3h) ────────────────────────────────────────────┐
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Job 1 — Group A │ │ Job 2 — Group B │ in parallel │
│ │ 39 models (mixed) │ │ 34 models (mixed) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
│ └──────────────┬───────────────┘ │
│ ┌────────▼────────┐ │
│ │ Merge + commit │ → benchmark/history.db + docs/history.db │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
│
┌───────────▼──────────┐
│ Static Dashboard │ GitHub Pages
│ (sql.js client) │
└──────────────────────┘
Parallel matrix ≈ 50% faster ⚡
Edit PROMPT in benchmark/test_models.py:
PROMPT = "Your custom prompt here"
Edit OPENROUTER_FREE_MODELS, GROQ_MODELS, or MISTRAL_MODELS in benchmark/test_models.py. The lists get split roughly in half between group1 and group2 jobs.
Edit .github/workflows/benchmark.yml:
- cron: '0 */3 * * *' # every 3 hours (default)
- cron: '0 */1 * * *' # every hour
- cron: '0 0 */6 * *' # every 6 hours
# Serve the dashboard from the repo root (serves docs/index.html + docs/history.db)
python3 -m http.server 8000
# Open http://localhost:8000/docs/
# Run benchmarks manually (requires API keys as env vars)
export OPENROUTER_API_KEY=...
export GROQ_API_KEY=...
export MISTRAL_API_KEY=...
python3 benchmark/test_models.py # all models
MODEL_GROUP=group1 python3 benchmark/test_models.py # one half
benchmark/history.db is a SQLite database persisted in the repo. The browser loads it via sql.js (WebAssembly) and queries it entirely client-side. benchmark/results*.json are temporary per-job artifacts that never get committed (.gitignored). On every merge the workflow mirrors the latest benchmark/history.db to docs/history.db next to the dashboard.
Schema:
runs (id, timestamp, prompt, success_count, total_models, fastest_model, fastest_time)
model_results (run_id, model, provider, success, error, response_time, tokens_generated, total_tokens, response)
Results are pruned to the most recent 720 runs to keep history.db from growing unbounded.
Benchmark parameters: temperature: 0.7 · top_p: 0.9 · max_tokens: 500 · OpenAI-compatible chat completions API.
PRs and ideas welcome:
Inspired by NIMStats · ⚡ Powered by GitHub Actions