Skip to content

CLI reference

Every autolab command, argument, and option. This page is generated directly from the CLI, so it never drifts from the version you've installed. For the same text in your terminal, run:

autolab --help
autolab <command> --help

New here? Start with the Quickstart or the task-focused guides — they show these commands in context.

autolab

autolab — autonomous research from your terminal.

Create projects, queue experiments, and attach compute; the AutoLab agent writes code, runs jobs on your machines, and analyzes the results.

Usage:

autolab [OPTIONS] COMMAND [ARGS]...

Options:

Name Type Description Default
--url text Control-node URL (overrides AUTOLAB_URL / profile). None
--profile text Named profile from ~/.config/autolab/config.toml. None
-q, --quiet boolean Print only essential results. False
-v, --verbose boolean Stream raw git output. False
--version boolean Show the version and exit. False
--help boolean Show this message and exit. False

autolab cancel

Cancel a queued or in-flight job.

Usage:

autolab cancel [OPTIONS] EXPERIMENT

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab checkout

Reset the working tree to an experiment's code (or main).

Fetches first so the target commit is present locally; if you have uncommitted changes it explains how to keep them (submit) or discard them (--force).

Usage:

autolab checkout [OPTIONS] EXPERIMENT

Options:

Name Type Description Default
-f, --force boolean Discard local changes when switching. False
--help boolean Show this message and exit. False

autolab clone

Copy a project's code into a local workspace. PROJECT is owner/project-slug.

Downloads the project's code (every experiment commit) into DIRECTORY — default ./<project-slug> — and links it to the project so status, log, checkout, and submit work inside it. It does NOT download experiment logs, metrics, or artifacts (see those with autolab log or on the dashboard — autolab open), and it never changes the project's state — a paused agent stays paused.

PROJECT can also be a link you copied out of the browser or a git remote — a dashboard URL or any of its sub-pages, or the repo.git URL:

autolab clone alice/nanochat
autolab clone https://app.autolab.ai/projects/alice/nanochat
autolab clone https://app.autolab.ai/projects/alice/nanochat/queue
autolab clone https://app.autolab.ai/api/v1/projects/alice/nanochat/repo.git

A URL also says which control node to clone from, so it works without --url when the project lives on a different one.

Usage:

autolab clone [OPTIONS] PROJECT [DIRECTORY]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab compute

Rent AutoLab compute for a climb (subcommands: rent, stop).

Rented machines are billed to your AutoLab credit and attach to a climb on their own once they boot. Bare autolab compute shows the catalog and, in a climb's workspace, that climb's current cap and live rentals.

Usage:

autolab compute [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--project text Climb (owner/slug); default: this workspace's. None
--help boolean Show this message and exit. False

autolab compute rent

Let a climb rent up to --max nodes of MACHINE (a catalog id).

Merges with any caps already set for other shapes. See ids with autolab compute. Lowering a cap releases the excess now.

Usage:

autolab compute rent [OPTIONS] MACHINE

Options:

Name Type Description Default
--max integer Most nodes of this shape to run at once (0 removes it). Sentinel.UNSET
--project text Climb (owner/slug); default: this workspace's. None
--help boolean Show this message and exit. False

autolab compute stop

Rent nothing for a climb, releasing any live rentals now.

Usage:

autolab compute stop [OPTIONS]

Options:

Name Type Description Default
--project text Climb (owner/slug); default: this workspace's. None
--help boolean Show this message and exit. False

autolab diff

Show what changed: ±lines per file; -p prints the lines themselves.

With no argument — your uncommitted changes vs the experiment you're in (new files included): exactly what autolab submit would send. With an EXPERIMENT id — what that experiment's code changed vs the code it branched from, e.g. autolab diff 9f2a01c4 after seeing it in autolab log.

Both summarize like git diff --stat — each changed file with its added/removed line counts; pass -p/--patch for the full patch. autolab's own .autolab/ control dir is never shown.

Usage:

autolab diff [OPTIONS] [EXPERIMENT]

Options:

Name Type Description Default
-p, --patch boolean Print the changed lines themselves (a full git-style patch). False
--help boolean Show this message and exit. False

autolab graph

Show the experiment lineage tree — what branched off from where.

An experiment is a commit; this draws the branch relationships between them (the same graph as the dashboard). marks the experiment you're in. Queued/pending experiments aren't shown — they have no lineage yet (use autolab log). Pass --format json for an edge list automation can read, or --root <id> to focus one experiment's subtree.

Usage:

autolab graph [OPTIONS]

Options:

Name Type Description Default
--format choice (text | json) Output format: a tree (default) or JSON for automation. text
--root text Show only the subtree rooted at this experiment (id-prefix). None
--help boolean Show this message and exit. False

autolab hills

Build and publish hills — the evaluation environments climbs run against.

A hill holds the scoring code (eval.py), the held-out data it scores on (private/), and a README that states the task. Build one locally, then push it to your control node:

autolab hills new my-task          # scaffold ./.autolab/hills/my-task
# implement eval.py; put held-out data in private/
autolab hills check my-task        # validate the evaluator contract
autolab hills commit my-task -m "first version"
autolab hills push my-task         # publish; start climbs on the web

new/check/commit run the OSS hills CLI at the platform's pinned version; the full tool (eval, log, examples, …) is available as hills itself. Bare autolab hills lists the hills on your control node.

Usage:

autolab hills [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab hills check

Validate NAME's manifest and evaluator contract, and run its tests/.

Usage:

autolab hills check [OPTIONS] NAME

Options:

Name Type Description Default
--no-tests boolean Skip tests/ in the check. False
--help boolean Show this message and exit. False

autolab hills commit

Check NAME and freeze the working tree as a new version.

Usage:

autolab hills commit [OPTIONS] NAME

Options:

Name Type Description Default
-m, --message text What changed in this version. Sentinel.UNSET
--no-tests boolean Skip tests/ in the check gate. False
--help boolean Show this message and exit. False

autolab hills fork

Fork HILL (owner/name) into a new hill you own.

Copies the hill's current version — evaluator, README, and (if you can read them) private files — into a hill under your account, so you can change the task and publish your own version. Works on your own hills too. Then edit it with autolab hills pull <your-name> or on the web.

Usage:

autolab hills fork [OPTIONS] HILL

Options:

Name Type Description Default
--name text Name for your copy (default: auto-suggested). ``
--help boolean Show this message and exit. False

autolab hills new

Scaffold a hill in ./.autolab/hills/NAME and register it locally.

Usage:

autolab hills new [OPTIONS] NAME

Options:

Name Type Description Default
-t, --template text Start from a bundled example (hills examples lists them). None
--help boolean Show this message and exit. False

autolab hills pull

Fetch HILL (owner/name) from your control node into ./.autolab/hills/.

The hill's owner gets the exact frozen hill (bundle incl. private/), so local hills eval reports carry its official tree hash. Anyone else gets the public part — evaluator, README, public data — committed as a new local hill; scores from it are local and unofficial. Either way the OSS hills tool then works as usual: hills describe <name>, hills eval.

Usage:

autolab hills pull [OPTIONS] HILL

Options:

Name Type Description Default
--version text A version's tree hash (default: current). None
--into text Parent directory (default: ./.autolab/hills). None
--force boolean Replace an existing hill directory of the same name. False
--help boolean Show this message and exit. False

autolab hills push

Publish NAME's latest commit to your control node.

The first push creates the hill under your account; later pushes add versions. NAME can be omitted when exactly one hill is registered here.

Usage:

autolab hills push [OPTIONS] [NAME]

Options:

Name Type Description Default
--source-repo text Git URL climbs start their code from (optional). None
--force boolean Push the last commit even if the working tree is dirty. False
--public boolean Make the hill public on the hub after pushing. False
--help boolean Show this message and exit. False

autolab hills settings

Show or change a published hill's hub settings.

Hub settings live on the control node (not in the bundle) and can change any time: visibility, tags, a competition deadline, and leaderboard fields. NAME is owner/name, or a bare name for one you own.

autolab hills settings my-task                      # show current settings
autolab hills settings my-task --deadline 2026-09-15 --public
autolab hills settings my-task --set featured_metric=score --set ranked=true
autolab hills settings my-task --no-deadline --unset ranked

Usage:

autolab hills settings [OPTIONS] NAME

Options:

Name Type Description Default
--public text Make it public. None
--private text Make it private. None
--deadline text Competition deadline (ISO date, e.g. 2026-09-15). None
--no-deadline boolean Clear the competition deadline. False
--tag text Replace tags (repeatable); none clears them. Sentinel.UNSET
--set text Set a leaderboard/hub_meta field (repeatable), e.g. --set featured_metric=score. Sentinel.UNSET
--unset text Remove a hub_meta field. Sentinel.UNSET
--help boolean Show this message and exit. False

autolab init

Create a project and link the current directory as its workspace.

First asks whether to use the current directory's code as the source, then which evaluation (hill) the project climbs:

• using code → name, evaluation, termination • empty → name, evaluation, termination (the agent writes the first submission from the evaluation's README)

The slug is the slugified name (deduped to …-v2 if taken). Every project starts on your AutoLab platform key. Fully scriptable with flags + -y (headless / LLM use); pass --start to go live now.

Usage:

autolab init [OPTIONS]

Options:

Name Type Description Default
--name text Project name (the slug is derived from it). None
--source text Git URL to clone (implies using code). None
--empty boolean Start an empty project (ignore any local files). False
--description text Short project description. ``
--hill text The evaluation to climb: owner/name or owner/name@. Required to start. ``
--stop-policy text Termination condition (free text; empty = never stop). ``
--max-cost float Hard $ cap on agent spend. None
--start boolean Start the agent immediately. False
-y, --yes boolean Non-interactive: use flags, don't prompt. False
--help boolean Show this message and exit. False

autolab install

Install the autolab skill into your coding agent (Claude Code and/or Codex).

Teaches Claude Code or Codex to drive this CLI — how to set up AutoResearch projects, queue experiments, attach nodes, and steer the agent. With no TARGETS it asks which tool(s) to set up; or name them directly:

autolab install                 # interactive: pick Claude Code / Codex / both
autolab install claude          # just Claude Code (~/.claude/skills/autolab)
autolab install codex           # just Codex ($CODEX_HOME/skills/autolab)
autolab install both --force    # both; overwrite an out-of-date skill

An existing file that differs is never overwritten without --force.

Usage:

autolab install [OPTIONS] [claude|codex|both|all]...

Options:

Name Type Description Default
-f, --force boolean Overwrite an existing skill file that differs. False
--dry-run boolean Show what would change — write nothing. False
--help boolean Show this message and exit. False

autolab kube

Use a Kubernetes namespace as compute.

autolab kube install puts a small launcher pod in a namespace; it joins your account as a node, exactly like autolab serve on a Slurm login host. The climb's agent then runs each evaluation as its own GPU pod with

autolab kube run --gpus 1 -- <command>

as the launcher prefix — the pod shares the launcher's volume, so code, caches and the report are in the same place on both sides. kube run also works from any shell with a kubeconfig (a laptop next to a cluster) once the launcher settings are given (--image, --pvc, --mount).

Usage:

autolab kube [OPTIONS] COMMAND [ARGS]...

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab kube install

Deploy the launcher into a namespace with your current kubectl context.

Same as autolab serve --kubernetes <namespace>, with every knob: image, volume size and class, launcher CPU and memory. Creates a service account, a role scoped to pods in that namespace, a volume, a secret with your token and one launcher pod. The node shows up on your Compute tab as soon as the pod has installed the CLI (a minute or two the first time). Re-run to update; autolab kube uninstall removes it.

Usage:

autolab kube install [OPTIONS]

Options:

Name Type Description Default
--name text Node name, e.g. venice. Sentinel.UNSET
--namespace, -n text Namespace the launcher lives in. Sentinel.UNSET
--image text Image for the launcher AND job pods (default: python:3.12-bookworm). None
--storage text Volume size for code, caches and data. 100Gi
--storage-class text StorageClass for the volume (default: the cluster's). ``
--shared-volume boolean Request ReadWriteMany so job pods may run on any node. False
--mount text Mount path of the volume in every pod. /data
--cpu text Launcher pod CPU. 2
--memory text Launcher pod memory. 8Gi
--token text User token to register with (else AUTOLAB_TOKEN / stored login). None
--help boolean Show this message and exit. False

autolab kube manifest

Print the launcher's Kubernetes manifests (for kubectl apply -f -).

Usage:

autolab kube manifest [OPTIONS]

Options:

Name Type Description Default
--name text Node name, e.g. venice. Sentinel.UNSET
--namespace, -n text Namespace the launcher lives in. Sentinel.UNSET
--image text Image for the launcher AND job pods (default: python:3.12-bookworm). None
--storage text Volume size for code, caches and data. 100Gi
--storage-class text StorageClass for the volume (default: the cluster's). ``
--shared-volume boolean Request ReadWriteMany so job pods may run on any node. False
--mount text Mount path of the volume in every pod. /data
--cpu text Launcher pod CPU. 2
--memory text Launcher pod memory. 8Gi
--token text User token to register with (else AUTOLAB_TOKEN / stored login). None
--help boolean Show this message and exit. False

autolab kube run

Run COMMAND in a fresh pod, stream its output, exit with its code.

Put -- before the command. The pod runs in the launcher's namespace, from this working directory, with this environment; while it waits for a free GPU it prints kube: pod … pending and the run shows as queued.

Usage:

autolab kube run [OPTIONS] COMMAND...

Options:

Name Type Description Default
--gpus integer GPUs for the pod (0 = none). 1
--cpu text CPU request/limit, e.g. 4 or 500m. ``
--memory text Memory request/limit, e.g. 32Gi. ``
--image text Container image (default: the launcher's). ``
--pvc text PersistentVolumeClaim to mount (default: the launcher's). ``
--mount text Where the claim is mounted (default: the launcher's). ``
--name text Pod name (default: autolab-job-). ``
--shm integer /dev/shm size in GiB. 8
--deadline integer Kill the pod after N minutes (0 = none). 0
--node-selector text Constrain to nodes with this label (repeatable). Sentinel.UNSET
--any-node boolean Don't pin the pod to the launcher's node. False
--keep boolean Leave the finished pod in place for inspection. False
--help boolean Show this message and exit. False

autolab kube uninstall

Remove the launcher (and by default its volume) from a namespace.

Usage:

autolab kube uninstall [OPTIONS]

Options:

Name Type Description Default
--name text Node name given at install. Sentinel.UNSET
--namespace, -n text N/A Sentinel.UNSET
--keep-volume boolean Leave the data volume (caches, worktrees) in place. False
--help boolean Show this message and exit. False

autolab log

Show experiment history (newest first); marks the experiment you're in.

Includes queued and pending experiments. The commit column stays empty until the code is final — the agent may still write or revise it.

Usage:

autolab log [OPTIONS]

Options:

Name Type Description Default
--limit integer Max rows to show. 30
--help boolean Show this message and exit. False

autolab login

Sign in and store an API token for this host.

Default is a browser sign-in. --token <tok> stores a token you already have (e.g. printed by autolab token or created on the dashboard's Access Tokens page) without a browser — ideal for an agent driving a remote box.

Usage:

autolab login [OPTIONS]

Options:

Name Type Description Default
--token text Store this API token directly (no browser) — for headless / SSH / CI. None
--help boolean Show this message and exit. False

autolab logout

Remove the stored token for this host.

Usage:

autolab logout [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab metrics

Show a run's logged metrics — per-series stats + params.

Reads the run's MLflow data through the control node (member-gated): exact stats over each full series, plus logged params. --metric <key> prints one series as a step/value table; --format json dumps the raw payload (series, params, system samples) for scripts and agents.

EXPERIMENT is an id-prefix from autolab log. Run logs stream on the experiment's dashboard page — autolab open <experiment>.

Usage:

autolab metrics [OPTIONS] EXPERIMENT

Options:

Name Type Description Default
--metric text Zoom into one series (step/value table). None
--format choice (text | json) Human summary (default) or the raw payload for automation. text
--help boolean Show this message and exit. False

autolab nodes

Your compute nodes (subcommands: attach, detach, rm, add).

A node is a machine you connected with autolab serve. It stays yours; attach it to a climb so that climb's agent can use it.

Usage:

autolab nodes [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab nodes add

How to connect a machine as one of your nodes.

Usage:

autolab nodes add [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab nodes attach

Let a climb's agent use NODE (id/name).

Usage:

autolab nodes attach [OPTIONS] NODE

Options:

Name Type Description Default
--project text Climb (owner/slug); default: this workspace's. None
--help boolean Show this message and exit. False

autolab nodes detach

Stop a climb from using NODE (the node stays connected).

Usage:

autolab nodes detach [OPTIONS] NODE

Options:

Name Type Description Default
--project text Climb (owner/slug); default: this workspace's. None
--help boolean Show this message and exit. False

autolab nodes rm

Disconnect and forget NODE (id/name). Its runner exits on its next poll.

Usage:

autolab nodes rm [OPTIONS] NODE

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab open

Open the project dashboard (or an experiment page) in your browser.

Usage:

autolab open [OPTIONS] [EXPERIMENT]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab pause

Pause the agent (the autonomous loop). Resume with autolab start.

Usage:

autolab pause [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab projects

List the projects you can access (for picking one to clone).

status is exactly what the project's card shows on the dashboard — Running / Idle / Paused / No LLM / No nodes / …

Usage:

autolab projects [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab pull

Fetch the latest and fast-forward.

Usage:

autolab pull [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab serve

Connect this machine to your account as a compute node.

Installs a systemd user service and starts it: the node survives closed terminals, SSH disconnects, control-node restarts and machine reboots, and updates itself to the control node's build while idle. Where there is no per-user systemd (cluster login nodes, macOS) it falls back to a plain background process, which a reboot does not bring back. Attach the node to climbs from the Compute tab (or autolab nodes attach); the climb's agent then runs code and evaluations here. Manage it with:

autolab serve status     connection state + recent log
autolab serve log        the node's full runner log (-f to follow)
autolab serve stop       disconnect this machine

On a Slurm cluster run this on a login node: the agent submits its own jobs there. Re-running serve while the node is up just reports it.

--kubernetes <namespace> connects a Kubernetes namespace instead: there is no machine to run this on, so it deploys a small pod there (with your current kubectl context) that runs serve for you; the agent then runs each evaluation as its own GPU pod. Same as autolab kube install.

Usage:

autolab serve [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--name text Node name (default: derived, unique per machine). None
--token text User token to register with (else AUTOLAB_TOKEN / stored login). None
--autolab-home text Root dir for workspaces (default ~/.autolab). None
--foreground boolean Run in this terminal instead of the background. False
--daemon boolean Plain background process, no systemd service (does not survive a reboot). False
--kubernetes text Connect a Kubernetes namespace instead of this machine (needs kubectl access). None
--help boolean Show this message and exit. False

autolab serve log

Print this node's entire runner log (-n N for just the tail).

The log narrates everything the node does — registration, accepted jobs, agent bash commands, failures, shutdowns. The same log shows on the node's dashboard page. Rotated on each start; the previous run is kept next to it as serve.log.1.

Usage:

autolab serve log [OPTIONS]

Options:

Name Type Description Default
-n, --lines integer Print only the trailing N lines. None
-f, --follow boolean Keep streaming new lines (Ctrl-C exits). False
--name text Show the node with this name (default: most recent). None
--help boolean Show this message and exit. False

autolab serve status

Show this machine's background nodes: liveness, logs, control-node view.

Records written by OTHER machines sharing the state directory (an NFS home) are one line each — their liveness can't be checked from here; --all prints their details too, serve stop --name <node> clears a stale one. Exits 0 when a daemon is running on THIS machine, 1 otherwise (scriptable).

Usage:

autolab serve status [OPTIONS]

Options:

Name Type Description Default
--all boolean Also detail records from other machines that share this state directory. False
--help boolean Show this message and exit. False

autolab serve stop

Stop this machine's background node(s) and disconnect them.

Idempotent: cleans up stale state and reports if nothing was running. Records left by other machines sharing the state directory (NFS) are never touched unless targeted with --name (which clears the record only — the daemon itself must be stopped on its machine). An experiment mid-run is requeued once the control node sees the node offline.

Usage:

autolab serve stop [OPTIONS]

Options:

Name Type Description Default
--name text Stop only the node with this name. None
--help boolean Show this message and exit. False

autolab settings

Show or edit project settings (subcommands: collab, delete).

With any flag, edits those fields then shows. Pass an empty string to clear a field, e.g. autolab settings --description "". What the project optimizes is its evaluation, shown read-only: it is fixed for the life of the project.

Usage:

autolab settings [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--name text Display name. None
--description text Short project description. None
--source text Source repo URL. None
--coding-timeout integer Optional coding-step execution budget in seconds (120-7200; retried attempts get 2x). By default there is NO budget — the step runs until done. Pass 0 to remove a budget you set earlier. None
--watchdog choice (on | off) Run watchdog: the agent checks each running job every few minutes and decides continue vs kill (on, default). When off, runs are hard-killed at the agent's runtime estimate. None
--watchdog-interval integer Seconds between run watchdog check-ins (60-3600; default 300). Pass 0 to restore the default. None
--env text Set a climb env var injected into evaluation runs (repeatable), e.g. --env OPENAI_API_KEY=sk-... . Merged with existing vars. Sentinel.UNSET
--unset-env text Remove a climb env var. Sentinel.UNSET
--help boolean Show this message and exit. False

autolab settings collab

List collaborators (subcommands: add, rm, role).

Usage:

autolab settings collab [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--help boolean Show this message and exit. False
autolab settings collab add

Add USERNAME (a GitHub username) as a collaborator; re-run to fix the role.

Usage:

autolab settings collab add [OPTIONS] USERNAME

Options:

Name Type Description Default
--role choice (admin | researcher | viewer) Role to grant. researcher
--help boolean Show this message and exit. False
autolab settings collab rm

Remove USERNAME from the project.

Usage:

autolab settings collab rm [OPTIONS] USERNAME

Options:

Name Type Description Default
--help boolean Show this message and exit. False
autolab settings collab role

Change USERNAME's role.

Usage:

autolab settings collab role [OPTIONS] USERNAME {admin|researcher|viewer}

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab settings delete

Permanently delete this project on the control node (owner only).

Usage:

autolab settings delete [OPTIONS]

Options:

Name Type Description Default
--yes boolean Skip the confirmation prompt. False
--help boolean Show this message and exit. False

autolab start

Start the agent on this project — and resume it after autolab pause.

The first start takes the project live: it seeds the baseline from your code (or, for an empty project, lets the agent code from your objective) and starts the autonomous loop. After that, start just resumes the paused loop.

Usage:

autolab start [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab status

Where you are — the project (status, nodes, experiment counts) and the run you're in.

The status row is exactly what the project's card shows on the dashboard.

Start/pause the agent with autolab start / autolab pause; toggle idea generation with autolab status autogen on|off.

Usage:

autolab status [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab status autogen

Show or toggle automatic idea generation (autogen on / autogen off).

When on, the agent proposes new experiments on its own; when off, it only runs what you queue. With no argument, prints the current agent + ideas state.

Usage:

autolab status autogen [OPTIONS] [on|off]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab submit

Queue an experiment. With code it snapshots + pushes the working tree; the control node fills in any blank fields (name/description now, run command + code at pickup).

By default every field you provide (including your pushed code) is locked — the research agent fills only the blanks and never overwrites your values. Pass --soft to let the agent refine what you set.

Usage:

autolab submit [OPTIONS]

Options:

Name Type Description Default
-m, --message text Description / idea for this experiment. ``
--name text Experiment name (derived by the agent if omitted). ``
--node text Node constraint (e.g. '8xH100'). ``
--from text Base ref to branch from. None
--priority float Queue priority. None
--no-code, --nocode boolean Submit an idea only — ignore code changes; the agent writes the code. Requires -m. False
--soft boolean Let the agent edit the fields you set (default: your fields are locked). False
--help boolean Show this message and exit. False

autolab token

Print the active token; subcommands manage PATs (create, ls, revoke).

Bare autolab token prints the token you're authenticated with — handy for bootstrapping a remote exec node without a browser:

TOK=$(autolab token create --name gpu-box)   # a fresh, revocable token
ssh gpubox "AUTOLAB_TOKEN=$TOK autolab serve"

Prefer a named token create over the bare print so you can revoke just that one later. A token acts as you on every project you can access — pipe it, don't paste it where it'll be logged.

Usage:

autolab token [OPTIONS] [COMMAND] [ARGS]...

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab token create

Mint a new personal access token. Prints the token (once) to stdout.

Usage:

autolab token create [OPTIONS]

Options:

Name Type Description Default
--name text Name for the token (prompted if a TTY). None
--help boolean Show this message and exit. False

autolab token ls

List your personal access tokens.

Usage:

autolab token ls [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab token revoke

Revoke a personal access token. REF = id-prefix or name.

Usage:

autolab token revoke [OPTIONS] REF

Options:

Name Type Description Default
--help boolean Show this message and exit. False

autolab update

Update this CLI to the build your control node serves.

Downloads the control node's current wheel and re-installs the tool with uv tool install --force — exactly what the install one-liner does. The control node stamps a fresh build (0.1.0.post<mtime>) on every deploy, so run this after the platform updates; it also syncs a machine back to an older build after a control-node rollback. A node daemon keeps its old code until restarted (autolab serve stop && autolab serve) — the command reminds you when one is running.

--check prints both versions and installs nothing; it exits 1 when this CLI differs from the control node's build (scriptable).

Usage:

autolab update [OPTIONS]

Options:

Name Type Description Default
--check boolean Report versions only; install nothing. False
--force boolean Reinstall even when already on the served build. False
--help boolean Show this message and exit. False

autolab whoami

Show the active host, signed-in user, and local auth context.

Usage:

autolab whoami [OPTIONS]

Options:

Name Type Description Default
--help boolean Show this message and exit. False