Overview
smevals is a framework for running evals against small (and large) models. It organises an evaluation into four pieces: an eval is the high-level capability you care about, tasks are the individual exercises inside it, configs describe the model setups you want to compare, and graders hold the assessment logic. Splitting grading from running is the point — you can re-grade an existing set of results with new criteria without paying to run the tasks again.
Runs are immutable records with timestamps and full provenance, and the runner and checker outputs are preserved as artefacts so a surprising score can be traced back to what the model actually produced. Checks are individual assertions or measurements, either built in or your own scripts, and several graders can coexist on one eval.
The workflow is four commands: run the tasks, grade the runs, generate a markdown report, or serve a web UI to browse the results — leaderboards, metrics and tag aggregations. It is a Python package installed with uv or pip, released under the MIT licence, and was built by Simon Willison with Jesse Vincent's Prime Radiant lab.
What it does
- Four-part structure — evals, tasks, configs and graders — that separates what you run from how you score it
- Immutable runs with timestamps and provenance, so a result can always be traced back
- Multiple graders per eval, applied to existing runs without re-running the tasks
- Built-in checks plus custom scripts for assertions and measurements
- Runner and checker artefacts preserved for later analysis
- Markdown reports and a web UI with leaderboards, metrics and tag aggregations
Getting started
smevals is a Python CLI. Install it, run an eval, then grade and report on the results.
Install
Either installer works; uv keeps it isolated as a tool.
uv tool install smevals
# or: pip install smevalsRun the tasks
Executes the eval's tasks against the configured models and records an immutable run.
smevals run EVALGrade and report
Grading is a separate step, so you can apply new graders to runs you already paid for.
smevals grade EVAL
smevals report EVALBrowse the results
The web UI shows leaderboards, metrics and tag aggregations over the stored runs.
smevals serve EVALCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Compare a small open model against a frontier one on a task you actually care about
- Re-score an expensive set of runs with a new grader instead of re-running them
- Keep an auditable history of how a model scored on your own suite over time
- Share a results dashboard with a team without building reporting yourself
How smevals compares
smevals alongside other open-source evaluation & red-teaming tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Strix | ★ 61.6k | Strix runs autonomous AI agents that act like hackers, dynamically running your code to find vulnerabilities and validate them with real proof-of-concepts. |
| promptfoo | ★ 25k | A developer-first CLI and library for testing and comparing prompts and models, with red-teaming probes for prompt injection, PII leaks, and other vulnerabilities. |
| OpenAI Evals | ★ 19.4k | A framework and open registry for building and running evaluations of LLMs and LLM-based systems, including prompt chains and tool-using agents. |
| DeepEval | ★ 18.2k | An open-source Python framework that tests LLM apps like unit tests, with 50+ metrics for RAG, agents, chatbots, and safety, and a Pytest integration for CI/CD. |
| Ragas | ★ 15.7k | An evaluation toolkit focused on retrieval-augmented generation that scores answer faithfulness, context precision/recall, and relevancy, often without needing ground-truth labels. |
| Arize Phoenix | ★ 11.4k | An open-source observability and evaluation tool for tracing LLM and agent behavior, running evals on traces, and troubleshooting issues in development and production. |
| garak | ★ 9.2k | An LLM vulnerability scanner from NVIDIA with 100+ attack probes that test models for prompt injection, data leakage, jailbreaks, and other security weaknesses. |
| smevals | ★ 263 | A small Python framework for running evals against small (and large) models, with reproducible runs and graders you can re-apply |