openbench

December 11, 2025 ยท View on GitHub


openbench

Provider-agnostic, open-source evaluation infrastructure for language models

openbench provides standardized, reproducible benchmarking for LLMs across 30+ evaluation suites (and growing) spanning knowledge, math, reasoning, coding, science, reading comprehension, health, long-context recall, graph reasoning, and first-class support for your own local evals to preserve privacy. Works with any model provider - Groq, OpenAI, Anthropic, Cohere, Google, AWS Bedrock, Azure, local models via Ollama, Hugging Face, and 30+ other providers.

To get started, see the tutorial below or reference the docs.

Features

  • ๐ŸŽฏ 95+ Benchmarks: MMLU, GPQA, HumanEval, SimpleQA, competition math (AIME, HMMT), SciCode, GraphWalks, and more
  • ๐Ÿ”ง Simple CLI: bench list, bench describe, bench eval (also available as openbench), -M/-T flags for model/task args, --debug mode for eval-retry, experimental benchmarks with --alpha flag
  • ๐Ÿ—๏ธ Built on inspect-ai: Industry-standard evaluation framework
  • ๐Ÿ“Š Extensible: Easy to add new benchmarks and metrics
  • ๐Ÿค– Provider-agnostic: Works with 30+ model providers out of the box
  • ๐Ÿ› ๏ธ Local Eval Support: Privatized benchmarks can be run with bench eval <path>
  • ๐Ÿ“ค Hugging Face Integration: Push evaluation results directly to Hugging Face datasets

๐Ÿƒ Speedrun: Evaluate a Model in 60 Seconds

Prerequisite: Install uv

# Create a virtual environment and install openbench (30 seconds)
uv venv
source .venv/bin/activate
uv pip install openbench

# Set your API key (any provider!)
export GROQ_API_KEY=your_key  # or OPENAI_API_KEY, ANTHROPIC_API_KEY, etc.

# Run your first eval (3 seconds)
bench eval mmlu --model groq/openai/gpt-oss-120b --limit 10

# That's it! ๐ŸŽ‰ Check results in ./logs/ or view them in an interactive UI:
bench view

https://github.com/user-attachments/assets/e99e4628-f1f5-48e4-9df2-ae28b86168c2

Supported Providers

openbench supports 30+ model providers through Inspect AI. Set the appropriate API key environment variable and you're ready to go:

ProviderEnvironment VariableExample Model String
AI21 LabsAI21_API_KEYai21/model-name
AnthropicANTHROPIC_API_KEYanthropic/model-name
AWS BedrockAWS credentialsbedrock/model-name
AzureAZURE_OPENAI_API_KEYazure/<deployment-name>
BasetenBASETEN_API_KEYbaseten/model-name
CerebrasCEREBRAS_API_KEYcerebras/model-name
CohereCOHERE_API_KEYcohere/model-name
CrusoeCRUSOE_API_KEYcrusoe/model-name
DeepInfraDEEPINFRA_API_KEYdeepinfra/model-name
FriendliFRIENDLI_TOKENfriendli/model-name
GoogleGOOGLE_API_KEYgoogle/model-name
GroqGROQ_API_KEYgroq/model-name
HeliconeHELICONE_API_KEYhelicone/model-name
Hugging FaceHF_TOKENhuggingface/model-name
HyperbolicHYPERBOLIC_API_KEYhyperbolic/model-name
LambdaLAMBDA_API_KEYlambda/model-name
MiniMaxMINIMAX_API_KEYminimax/model-name
MistralMISTRAL_API_KEYmistral/model-name
MoonshotMOONSHOT_API_KEYmoonshot/model-name
NebiusNEBIUS_API_KEYnebius/model-name
Nous ResearchNOUS_API_KEYnous/model-name
Novita AINOVITA_API_KEYnovita/model-name
OllamaNone (local)ollama/model-name
OpenAIOPENAI_API_KEYopenai/model-name
OpenRouterOPENROUTER_API_KEYopenrouter/model-name
ParasailPARASAIL_API_KEYparasail/model-name
PerplexityPERPLEXITY_API_KEYperplexity/model-name
RekaREKA_API_KEYreka/model-name
SambaNovaSAMBANOVA_API_KEYsambanova/model-name
SiliconFlowSILICONFLOW_API_KEYsiliconflow/model-name
Together AITOGETHER_API_KEYtogether/model-name
Vercel AI GatewayAI_GATEWAY_API_KEYvercel/creator-name/model-name
W&B InferenceWANDB_API_KEYwandb/model-name
vLLMNone (local)vllm/model-name

Available Benchmarks

See the Benchmarks Catalog or use bench list.

Commands and Options

For a complete list of all commands and options, run: bench --help See the docs for more details.

CommandDescription
bench listList available benchmarks
bench eval <benchmark>Run benchmark evaluation
bench eval-retry <log_files>Retry a failed evaluation
bench viewInteractive UI to view benchmark logs
bench cache <info/ls/clear/upload>Manage OpenBench caches

Common eval Configuration Options

OptionEnvironment VariableDefaultDescription
-M <args>NoneNonePass provider/model-specific arguments (e.g., -M only=groq)
-T <args>NoneNonePass task-specific arguments to the benchmark
--modelBENCH_MODELgroq/openai/gpt-oss-20bModel(s) to evaluate
--epochsBENCH_EPOCHS1Number of epochs to run each evaluation
--epochs-reducerBENCH_EPOCHS_REDUCERNoneReducer(s) applied when aggregating epoch scores
--max-connectionsBENCH_MAX_CONNECTIONS10Maximum parallel requests to model
--temperatureBENCH_TEMPERATURE0.6Model temperature
--top-pBENCH_TOP_P1.0Model top-p
--max-tokensBENCH_MAX_TOKENSNoneMaximum tokens for model response
--seedBENCH_SEEDNoneSeed for deterministic generation
--limitBENCH_LIMITNoneLimit evaluated samples (number or start,end)
--logfileBENCH_OUTPUTNoneOutput file for results
--sandboxBENCH_SANDBOXNoneEnvironment to run evaluation (local/docker)
--timeoutBENCH_TIMEOUT10000Timeout for each API request (seconds)
--fail-on-errorNone1Threshold of allowable sample errors (use an integer for count or a float for proportion)
--displayBENCH_DISPLAYNoneDisplay type (full/conversation/rich/plain/none)
--reasoning-effortBENCH_REASONING_EFFORTNoneReasoning effort level (low/medium/high)
--jsonNoneFalseOutput results in JSON format
--log-formatBENCH_LOG_FORMATevalOutput logging format (eval/json)
--hub-repoBENCH_HUB_REPONonePush results to a Hugging Face Hub dataset
--keep-livemcp-rootBENCH_KEEP_LIVEMCP_ROOTFalseAllow preservation of root data after livemcpbench eval runs
--code-agentBENCH_CODE_AGENTcodexSelect code agent for Exercism tasks (codex/aider/opencode/claude_code/roo)
--hidden-testsBENCH_HIDDEN_TESTSFalseRun Exercism agents with hidden tests

Development and Building Your Own Evals

For a full guide, see Contributing Guidelines and Extending openbench. Also, check out Inspect AI's excellent documentation.

Quick Eval: Run from Path

For one-off or private evaluations, point openbench directly at your eval:

bench eval /path/to/my_eval.py --model groq/llama-3.3-70b-versatile

Plugin System: Distribute as Packages

openbench supports a plugin system via Python entry points. Package your benchmarks and distribute them independently:

# pyproject.toml
[project.entry-points."openbench.benchmarks"]
my_benchmark = "my_pkg.metadata:get_benchmark_metadata"

After pip install my-benchmark-package, your benchmark appears in bench list and works with all CLI commands. Perfect for:

  • Sharing benchmarks across teams
  • Versioning evaluations independently
  • Overriding built-in benchmarks with custom implementations

FAQ

How does openbench differ from Inspect AI?

openbench provides:

  • Reference implementations of 20+ major benchmarks with consistent interfaces
  • Shared utilities for common patterns (math scoring, multi-language support, etc.)
  • Curated scorers that work across different eval types
  • CLI tooling optimized for running standardized benchmarks

Think of it as a benchmark library built on Inspect's excellent foundation.

Why not just use Inspect AI, lm-evaluation-harness, or lighteval?

Different tools for different needs! openbench focuses on:

  • Shared components: Common scorers, solvers, and datasets across benchmarks reduce code duplication
  • Clean implementations: Each eval is written for readability and reliability
  • Developer experience: Simple CLI, consistent patterns, easy to extend

We built openbench because we needed evaluation code that was easy to understand, modify, and trust. It's a curated set of benchmarks built on Inspect AI's excellent foundation.

How can I run bench outside of the uv environment?

If you want bench to be available outside of uv, you can run the following command:

uv run pip install -e .

I'm running into an issue when downloading a dataset from HuggingFace - how do I fix it?

Some evaluations may require logging into HuggingFace to download the dataset. If bench prompts you to do so, or throws "gated" errors, defining the environment variable

HF_TOKEN="<HUGGINGFACE_TOKEN>"

should fix the issue. The full HuggingFace documentation can be found on the HuggingFace docs on Authentication.

See the docs for further Tips and Troubleshooting.

๐Ÿšง Alpha Release

We're building in public! This is an alpha release - expect rapid iteration. The first stable release is coming soon.

Quick links:

Reproducibility Statement

As the authors of openbench, we strive to implement this tool's evaluations as faithfully as possible with respect to the original benchmarks themselves.

However, it is expected that developers may observe numerical discrepancies between openbench's scores and the reported scores from other sources.

These numerical differences can be attributed to many reasons, including (but not limited to) minor variations in the model prompts, different model quantization or inference approaches, and repurposing benchmarks to be compatible with the packages used to develop openbench.

As a result, openbench results are meant to be compared with openbench results, not as a universal one-to-one comparison with every external result. For meaningful comparisons, ensure you are using the same version of openbench.

We encourage developers to identify areas of improvement and we welcome open source contributions to openbench.

Acknowledgments

This project would not be possible without:

Citation

@software{openbench,
  title = {openbench: Provider-agnostic, open-source evaluation infrastructure for language models},
  author = {Sah, Aarush},
  year = {2025},
  url = {https://openbench.dev}
}

License

MIT


Built with โค๏ธ by Aarush Sah and the Groq team