> ## Documentation Index
> Fetch the complete documentation index at: https://docs.evolvingmachines.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# evolve analyze

> Analyze a finished job's trial traces against a rubric, on the platform.

```bash theme={null}
evolve analyze <job-id> [options]
```

Analyze a terminal job's trial traces against a rubric, server-side. Without `--watch` the command returns at once with the job block and the hint `Follow it with: evolve job show <id>`; `--json` prints the accepted job body. Exit 0 on an accepted wave; with `--watch`, exit 1 when any analysis failed.

```bash theme={null}
evolve analyze 3e1f9a2c-… \
  -r rubric.toml \
  -p prompt.txt \
  --failing \
  -l 20 \
  -n 2 \
  --watch
```

## Options

<ParamField path="-m, --model" type="name" default="openrouter/deepseek/deepseek-v4.1-flash">
  Model the analyzer runs. `glm-5.3-flash` and `haiku` are alternatives, `glm-5.3` escalates, and `fireworks/deepseek-v4.1-flash` is the same model on its Fireworks route. Must be on the `claude` roster.
</ParamField>

<ParamField path="--effort" type="value">
  Reasoning effort the analyzer runs at. Defaults to the per-model default: `high` on `openrouter/deepseek/deepseek-v4.1-flash`, `max` on `glm-5.3-flash`.
</ParamField>

<ParamField path="-r, --rubric" type="path">
  Rubric file: TOML (one `[[criteria]]` table per criterion), YAML or JSON in the `{criteria: [{name, description, guidance}]}` shape, parsed at the keyboard with unknown fields refused by name; the server owns the bounds. Defaults to the platform's analyze rubric, seven criteria with `score_is_earned` first.
</ParamField>

<ParamField path="-p, --prompt" type="path">
  Prompt file for the evaluator agent; its text replaces the built-in prompt, with `{trial_path}`, `{task_section}` and `{criteria_guidance}` rendered, `{{` and `}}` writing a literal brace, and an unknown `{token}` rendering empty. The instructions for writing the result are appended after it. An empty file is refused; there is no length bound. Defaults to the built-in prompt.
</ParamField>

<ParamField path="-e, --env" type="provider">
  Sandbox provider the analyzer runs on. Defaults to `daytona`.
</ParamField>

<ParamField path="-n, --n-concurrent" type="n">
  Max concurrent trial analyses, 1 to 150, beneath the organization's `max_concurrent_analyses` (fleet default 60). Defaults to the ceiling.
</ParamField>

<ParamField path="--passing">
  Only analyze passing trials (reward 1.0).
</ParamField>

<ParamField path="--failing">
  Only analyze failing trials (reward below 1.0, or an exception).
</ParamField>

<ParamField path="-l, --n-trials" type="n">
  Max trials to analyze, after `--passing` or `--failing`, in the job's trial order.
</ParamField>

<ParamField path="--watch">
  Poll until every analysis settles, then print one row per analyzed trial: the label (`custom rubric` when there is none), the criterion outcomes, the analyzer's cost and a summary excerpt, with failed analyses listed below. With `--json`, NDJSON envelopes: `analysis.accepted`, `analysis.stats` per change, `analysis.final` with the job and the analyzed trials.
</ParamField>

<ParamField path="-q, --quiet">
  With `--watch`: suppress the progress lines and print the final block only.
</ParamField>

## Global options

<ParamField path="--json">
  Machine-readable JSON output.
</ParamField>

<ParamField path="--api-key" type="key">
  API key. Defaults to `$EVOLVE_API_KEY`.
</ParamField>

<ParamField path="--base-url" type="url">
  API base URL. Defaults to the Evolve dashboard API.
</ParamField>

## Reading analyses back

The [`analysis`](/cli-reference/analysis) group lists, shows, traces and downloads analysis runs.
