Run and collect results

Validate the matrix before provisioning anything, launch the experiment, resume interrupted sweeps, and choose how produced files leave the sandbox.

Validate before launch

uv run python -m ale_run run my_experiment.yaml --dry-run

The dry run resolves the experiment, agent presets, environment routing, and task list. It prints every agent × task × variant unit without creating a sandbox.

Launch and filter

uv run python -m ale_run run my_experiment.yaml

# Run only selected entries from the matrix:
uv run python -m ale_run run my_experiment.yaml \
  --agent claude_code \
  --task demo/hello

concurrency limits units in flight. Each active unit owns one sandbox while ALE provisions it, stages data, runs the agent, collects artifacts, and evaluates the result. Provider quotas, host memory, disk latency, and LLM rate limits can all become the practical bound.

Resume an interrupted sweep

uv run python -m ale_run run my_experiment.yaml --resume

Resume scans prior run.json files under the same experiment name and output root. Units with status completed or timeout are skipped. Failed, cancelled, malformed, and missing units run again.

Choose where task output goes

output.root in the experiment controls the host directory for run records. output_path in the environment controls what happens to files produced inside the task's sandbox:

ValueBehaviorUse
nullDo not copy the task output before cleanup.Score-only runs where produced files are unnecessary.
localCopy into the run's output/ directory.Local development and outputs you want beside the run record.
gs://<bucket>Upload from the sandbox to <bucket>/<run_id>/output/.Large batch artifacts and centralized storage.

Local collection uses the fastest available provider transport: Docker uses docker cp, the QEMU provider uses a per-run guest share, and other providers use the CUA file API. GCS output uses sandbox-side gsutil. Managed providers use gcs_sa_key to inject a service-account key; a static sandbox must already have working Cloud Storage credentials.

Output collection is best-effort
An output transfer failure is recorded in events.jsonl but does not prevent evaluation while the sandbox is still alive. Check output_gather_done or output_gather_failed when artifacts are required.

Choose cleanup behavior

ModeManaged providers
deleteRemove the GCE VM, Docker container, or QEMU container and disposable overlay.
stopStop the sandbox but preserve its provider-managed state for inspection.
keepLeave it running.

The static provider never owns the attached machine. Its optional cleanup script is the only release action it performs.

Read the result

Each unit writes a timestamped run directory containing events.jsonl, run.json, eval_result.json, the normalized trajectory, native agent logs, screenshots, and any locally collected output. See Trajectories & artifacts for the complete layout.