Development
Last updated on June 16, 2026
In development mode you run procedures from your own machine with the TofuPilot CLI. Runs execute locally with the same operator UI a station shows, so you can build and debug a test before deploying it to the factory floor.
Install the CLI
The CLI is a single binary that runs on macOS, Linux, and Windows. Install it with a one-line script:
curl -fsSL https://tofupilot.sh/install | sh$p = "$env:TEMP\tp-install.ps1"; irm https://tofupilot.sh/install.ps1 -OutFile $p; powershell -ExecutionPolicy Bypass -File $p; ri $p -EA 0Authenticate once with tofupilot login. See the CLI reference for every subcommand.
Run in development mode
Point tofupilot run at a procedure directory to execute it locally. The run starts immediately, without contacting the dashboard:
tofupilot run ./my-testThe CLI bootstraps Python through uv, schedules the phases, and streams the operator UI to your terminal. See tofupilot run for the full set of flags.
Upload runs
To sync a development run to a procedure on your dashboard, link the directory once and run with --upload:
tofupilot link
tofupilot run ./my-test --uploadtofupilot link writes a tofupilot.json file binding the local directory to the remote procedure, and --upload sends the run there.
Switch between development and station
The CLI's mode is determined by who it is logged in as — there is a single set of credentials, and logging in again replaces the previous identity.
To turn a development machine into a station, run the install command from the station's setup token page. It redeems the token, pulls the station's deployments, starts the daemon, and registers the service so the station comes back on boot:
curl -fsSL https://tofupilot.sh/install | sh -s -- --token <setup-token-from-dashboard>To go back to development, log in as yourself again. A plain tofupilot login removes the station service and the CLI is back in development mode, where tofupilot run ./my-test executes procedures locally:
tofupilot loginHow is this guide?