tofupilot run

Last updated on May 21, 2026

The run command executes a procedure. It takes an optional positional path to a procedure.yaml, a directory, or a Python entry point, and when you pass a path, the procedure runs locally without contacting the dashboard. Without a path, run picks from pulled deployments.

run a local procedure
tofupilot run ./procedures/pcb-fvt

<PATH>

A positional argument that points to a procedure.yaml, a directory, or a Python entry point. This conflicts with --deployment.

local path
tofupilot run ./procedures/pcb-fvt

--deployment <ID>

To run a specific pulled deployment by ID, pass --deployment. This conflicts with a positional path.

run by deployment
tofupilot run --deployment dep_abc123

--ui-values <FILE>

When you want to drive runs without an operator, pass a JSON file with pre-baked Operator UI values keyed by { phase_key: { component_key: value } }.

ui-values
tofupilot run --ui-values phases.json

--ui-timeout <SECONDS>

To time out phases waiting on required UI input, pass a number of seconds. The default is to wait forever.

ui-timeout
tofupilot run --ui-timeout 600

--tui

The --tui flag force-enables the in-terminal operator UI for this run, overriding the terminal_ui station config. It conflicts with --no-tui.

tui
tofupilot run ./procedure.yaml --tui

--no-tui

The --no-tui flag force-disables the in-terminal operator UI for this run, overriding the terminal_ui station config.

no-tui
tofupilot run ./procedure.yaml --no-tui

--kiosk

The --kiosk flag force-enables the local browser kiosk UI for this run, and it spins up an in-process WebSocket and static-file server on loopback. It overrides the kiosk_ui station config and conflicts with --no-kiosk.

kiosk
tofupilot run --kiosk

--no-kiosk

The --no-kiosk flag force-disables the local browser kiosk UI for this run, overriding the kiosk_ui station config.

no-kiosk
tofupilot run --no-kiosk

--no-bootstrap

The --no-bootstrap flag skips the auto-bootstrap prompt for missing Python virtualenvs on local-path runs, so the run fails with the original Python resolution error instead of offering to provision a venv with uv venv and install dependencies.

no-bootstrap
tofupilot run ./procedure.yaml --no-bootstrap

In CLI, run is what the desktop UI calls under the hood, so you can run it directly from the terminal for the same effect without opening CLI.

How is this guide?

On this page