Skip to content

Run experiments

An experiment is a commit. You create one with submit, inspect it with diff and log, move between experiments with checkout, and read results with get.

Submit

submit snapshots your working tree, commits it as a new experiment, and queues it. There are three ways to use it, depending on how much you want the agent to own.

You wrote the code and it's final. Autolab commits + pushes it and moves you into the new experiment.

# ...edit code...
autolab submit -m "rotary embeddings"

Every field you set — including your code — is locked: the agent fills only the blanks (like a missing run command) and never overwrites your work.

A starting point you're happy for the agent to revise. You stay in your current experiment.

autolab submit -m "tune it for me" --soft

Just an instruction — the agent writes the code. Ignores your local changes. You stay in your current experiment. Requires -m.

autolab submit --nocode -m "try lr=0.3 with cosine decay"

Where do I end up after submit?

You advance into the new experiment only when the code is final — you pushed code and didn't pass --soft. With --soft (agent may revise) or --nocode (agent writes it), you stay put. This keeps your working tree predictable.

Common options

autolab submit -m "bf16 + larger batch" \
  --name "bf16-bs512" \      # else the agent derives a name
  --run "python train.py" \  # else inherited / agent-filled
  --setup "uv sync" \        # environment prep before the run
  --node "8xH100" \          # node constraint
  --from <id> \              # branch from a specific experiment instead of main
  --priority 10              # queue priority

See all options in the CLI reference.

See what you'd submit: diff

diff shows your changes versus the experiment you're in — exactly what submit would send. (Your .autolab/ control dir is never shown.)

autolab diff          # the full patch, new files included
autolab diff --stat   # just a ±LOC summary: files + added/removed lines

History: log

autolab log            # newest first; → marks the experiment you're in
autolab log --limit 50

log includes queued and pending experiments. The commit column stays empty until the code is final — for --soft/--nocode experiments the agent may still be authoring it.

Move between experiments: checkout

Reset your working tree to any experiment's code, or back to main:

autolab checkout <id>       # this experiment's code
autolab checkout main       # the current main branch
autolab checkout <id> -f    # discard local changes while switching

checkout fetches first so the target commit is present. If you have uncommitted changes it stops and tells you how to keep them (submit) or discard them (-f).

Stay current: pull

autolab pull    # fetch the latest and fast-forward main

Read results: get

autolab get logs <id>     # the run's logs (stdout/stderr the runner streamed)
autolab get traces <id>   # the agent sessions for this experiment: turns, cost, status

Artifacts aren't captured yet

autolab get artifacts <id> is a placeholder: the runner streams logs but does not yet upload checkpoints or files. Use autolab get logs for now.

Cancel

autolab cancel <id>    # cancel a queued or in-flight job

Open in the browser

autolab open <id>      # the experiment's dashboard page

Most experiment IDs accept a short prefix. If a prefix is ambiguous the CLI tells you — see Troubleshooting.