BenchFlow runs AI agents on tasks in sandboxes and scores them. Point it at a benchmark's tasks and pick an agent: Claude Code, Codex, Gemini CLI, OpenHands and more, over [ACP](https://agentclientprotocol.com). Each run records its reward, cost and full trajectory.
Tasks run on Docker (local or remote), Daytona, Modal or AgentCore. The same runtime serves evaluation and RL training.
These docs describe BenchFlow 0.10. `bench --version` prints the version you have; [What's new in 0.9](./docs/versions/upgrade-from-0.7.md) lists what changed since 0.7, and the [changelog](./CHANGELOG.md) what 0.10 adds.
## Quick start
You need [Docker](https://docs.docker.com/get-started/get-docker/) running and [uv](https://docs.astral.sh/uv/getting-started/installation/). Steps 1 and 2 need no model and no API key.
**1. Install BenchFlow and check this machine.**
```bash
uv tool install --python 3.12 benchflow
bench doctor # needs 0.8 or newer; checks Docker, agent logins and network, with a fix for each problem
```
The examples use `bench`; the installed `benchflow` command is the same CLI.
Before you log in to an agent, `bench doctor` reports that no agent can run. That is expected: step 2 needs no login.
**2. Run a task with the oracle.** The oracle runs the task's own reference solution. It tests the sandbox, the task and its verifier with no model:
```bash
bench run benchflow-ai/skillsbench/tasks/econ-detrending-correlation \
--agent oracle --sandbox docker --jobs-dir jobs/oracle
```
BenchFlow downloads only that task from [SkillsBench](https://github.com/benchflow-ai/skillsbench), builds its image, runs its solution and verifier, and prints `Score: 1/1`. A cold-cache first run took 6 minutes 12 seconds, including the verifier's package downloads; allow longer on a slow connection.
**3. Run a model.** With a Claude subscription, no API key is needed. `claude setup-token` comes with [Claude Code](https://code.claude.com/docs/en/quickstart) and prints a login token that lasts a year:
```bash
claude setup-token
export CLAUDE_CODE_OAUTH_TOKEN='