projects / model-bench
Glass model capsules undergo calibrated trials on a rigorous brass evaluation bench.

Model Bench

Empirical cross-provider LLM benchmark — 22,522 trials × 64 models × 9 tasks, with subscription-vs-public-API cost columns side-by-side and industry-benchmark side tracks.

Overview

A benchmarking site I built to answer one question well: which subscription-based LLM is worth its slot on my dashboard, and which pay-as-you-go API is the better substitute. Every public benchmark either (a) scores only pay-as-you-go APIs (so the results don’t tell me what a Claude Max / ChatGPT Plus / ollama-routed model would actually do on my workloads) or (b) makes vague quality claims with no cost column (so I can’t compare a $20/month subscription to a $5 in API spend). This benchmark measures both, on the same tasks, in the same week, scored by a judge from a different model family.

What’s measured

Every (model × task) cell runs N times and is graded on four axes:

  • Quality — judge score 0–5 from a model outside the cell’s provider family (so Claude doesn’t grade Claude). 9 task types: code_debug, code_gen_long, json_strict, summarize, creative_write, reasoning_multistep, agentic_prompt, refactor_existing_code, agentic_tool_use.
  • Costtwo columns:
    • WIRE-USD — what the call actually cost at the provider API ($0.0000 for flat-rate subscriptions like Anthropic Max, ChatGPT Plus, ollama-routed)
    • 1P-EST — what the same token traffic would cost at public-API rates, computed from first_party_pricing.json. This is the apples-to-apples column.
  • Latency — wall-clock end-to-end including any reasoning trace tokens.
  • Pass rate — share of trials where the judge returned passes_key_criteria: true.
  • Cross-judge sanity — a second judge (Fable, claude-fable-5) re-scored 203 trials across 61 high-variance cells (plus 1 sample per model) to detect judge-specific drift. Fable is on average 0.51 points more generous than the primary judge; the biggest divergence is creative_write (+1.93 mean).
  • Industry side tracks — GPQA Diamond, IFEval, MMLU-Pro, and HumanEval+ waves run alongside the custom 9-task harness so subscription models can be compared to public leaderboard norms.

Current snapshot (live aggregate, 2026-07-26)

22,522 trials × 64 models × 9 tasks from data/full_scorecard.json on herman/model-benchmark-site. Rank table below is the top of leaderboard_mean_score. Canonical live board: models.hermanity.dev.

#ModelProviderMean ScorePass RateTrials
1claude-fableclaude-cli4.4488%660
2claude-opus-5-highclaude-cli4.4487%190
3claude-opus-5claude-cli4.3989%90
4ollama-cl/gemma4skynet4.3885%52
5grok-4.5-directxai-direct4.3381%140
6mistral/magistral-smallskynet4.3282%34
7ollama-cl/deepseek-v4-flashskynet4.2982%34
8ollama-cl/qwen3-coder-nextskynet4.1979%52

Top-of-board quality is still tight (about 0.25 points across the dense mid-pack once low-n rows are set aside), but the cost spread remains enormous across subscription / public-API / local-ollama routing. claude-fable and claude-opus-5-high currently share the mean-score lead with real sample depth; lower-n Skynet/ollama rows just under them are early signal, not settled ranking. Recent scale waves still in the board: Claude Opus 5 launch route, Kimi Coding API provider + HumanEval+ side track, plus earlier underutilized-cloud / Grok HAM waves.

Why judge-from-different-family matters

When the judge is in the same provider family as the trial model, the results drift toward “every model ties at the top.” Claude judging Claude gives 4.5 ± 0.2 even on objectively worse outputs. Cross-family judging widens the spread enough that the ranking is actually useful for dashboard slot decisions.

What’s in the repo

Two coupled repos:

  • herman/model-benchmark-site — this Hugo site
  • herman/model-benchmark — the harness + scoring script + raw trial output. python3 harness.py --models <subset> --tasks <subset> --reps 2 --parallel 4 runs the trials; python3 scorecard.py aggregates; python3 sync_to_site.py copies data into this Hugo site as data/*.json.

The trial prompts and judge rubrics are checked into tasks.json / judge_rubric.json so every score is reproducible.

Live

  • Site: https://models.hermanity.dev/
  • Methods: /methodology/ on the site — explains the judge-from-different-family protocol, the 1P-EST pricing column, and the per-task leaderboard.

Status

Active — refreshed whenever I add a model to my active set or notice a quality regression in a workflow I rely on. Current methodology is v4 (cross-judge Fable sanity-check on 542 high-variance cells + 2 new task types refactor_existing_code and agentic_tool_use); v3 added the cross-family judging + 1P-EST cost columns; v2 added the agentic_prompt task class in 2026-06.