Skip to main content
Start a hosted job. evolve job start accepts exactly the same options.
This selects one task and one agent/model combination. Each selected task runs once per combination unless you increase --n-attempts. Without --watch, the command returns when the job is accepted. Acceptance does not mean the trials have finished. Keep the returned job ID to inspect results.

Select tasks and agents

A bare dataset name selects its active version. Pin name@version to select a specific version. Quote globs, such as 'auth-*', so your shell does not expand them.

Use a config file

Use YAML or JSON for several agent harnesses or different filters per dataset. Save this as job.yaml:
job.yaml
Inspect the request, then submit it:
--print-config creates no job and uploads no local skills. It does not resolve catalog names or fill every server default. It masks sandbox credentials, but prints inline agent secret values.
Other flags override their matching field. Select an organization with --org or evolve auth org use; the CLI does not retain org from the job file.Quote version strings in YAML, for example version: "1.10". Config validation rejects unknown fields, duplicate keys, and invalid field types before submission.

Set spend and retries

The spend cap must be from $0.000001 to $999999.999999; values are stored to six decimal places. Each retry receives the full trial cap. A low score does not trigger an infrastructure retry. Capacity waits are separate and can still occur with --max-retries 0. The cap stops new model calls when reached, but a call already in progress can finish above it. There is no job-wide spend cap. Verifier judge spend, analysis, and GPU compute are separate from the agent cap. See Jobs for estimates and retry rules.

Additional options

For --own-infra, keys come from your shell: E2B_API_KEY, DAYTONA_API_KEY, or MODAL_TOKEN_ID and MODAL_TOKEN_SECRET. Modal also reads its active profile in ~/.modal.toml. Missing values fall back to your stored secrets. --print-config masks these values.On Evolve’s account, a task may run on another compatible provider. Inspect its trial for the provider actually used. With --own-infra, an incompatible task is rejected instead of moved. See Sandboxes for restrictions.
These options apply to every agent combination.
The example reads native agent settings from codex.toml. Other --ak values parse as JSON, then True, False, or None, then plain text.Skills accept skills.sh/owner/repo[/skill], org/repo[@ref], a Git URL, upload:<id>, or name:<skill-name>. Use a path such as ./my-skill for a local directory; it uploads before the job starts.Unsupported effort, presets, or native configuration settings are refused. See Agents and Skills.
Store sensitive values with evolve secrets set, then attach them by name:
Any --analyze-* option enables analysis. Cancelled trials are skipped. Read the current defaults with evolve analyze --show-defaults.To analyze an existing job, use evolve analyze.
Every multiplier must be finite and greater than zero. A phase-specific value overrides the general multiplier for that phase.Values below 1 shorten a timeout. The task definition is unchanged. A resulting phase timeout above 2,147,483,647 milliseconds (about 24.86 days) is rejected.
With --json alone, the command prints the accepted job object. With --watch --json, it prints one JSON record per line: job.created, event records, then job.final. Quiet mode keeps the initial and final records.A watched job exits with code 0 for COMPLETED, or 1 for FAILED or CANCELLED. A completed job can contain failed trials; inspect the trial results before treating it as a successful evaluation.
Global options also apply. Next, inspect the job.
Last modified on November 9, 2026