CLI Reference¶
Complete reference for all otto command-line options.
Global options¶
These options are available on every otto command:
Option |
Env var |
Default |
Description |
|---|---|---|---|
|
|
(required) |
Lab name(s), comma-separated |
|
|
current dir |
Output directory for logs and artifacts |
|
|
|
Use field or debug products |
|
|
|
Number of days to retain logs |
|
|
|
Logging level |
|
|
|
Rich formatting in log files |
|
|
Verbose console output |
|
|
|
Preview without running commands |
|
|
List available lab names and exit |
||
|
List host IDs in the loaded lab and exit |
||
|
Print full lab details and exit |
||
|
Show version and exit |
||
|
Show help and exit |
Important
Option placement matters. Global options (including --lab/-l) must
appear before the subcommand — they are parsed by the top-level otto
command, not the subcommand. For example:
✅
otto --lab my_lab run deploy --debug❌
otto run deploy --debug --lab my_lab
The same rule applies to --dry-run, --xdir, --log-level, and every
other option listed above. Subcommand-specific options (like --firmware
for a suite, or --interval for monitor) go after the subcommand.
otto run¶
Run registered instructions.
otto run <instruction> [OPTIONS]
otto run --list-instructions
Option |
Description |
|---|---|
|
List all available instructions and exit |
Each instruction defines its own options via Typer annotations. Use
otto run <instruction> --help to see them.
otto test¶
Run registered test suites.
otto test [PARENT OPTIONS] <Suite> [SUITE OPTIONS]
otto test --list-suites
Parent options (before the suite name)¶
Option |
Default |
Description |
|---|---|---|
|
|
Pytest marker expression (e.g. |
|
|
Repeat each test N times in one setup/teardown cycle |
|
|
Repeat tests for SECONDS in one setup/teardown cycle |
|
|
Minimum per-test pass rate percent in stability mode (0-100) |
|
auto |
JUnit XML output path |
|
off |
Collect gcov coverage from remotes after the run |
|
|
Override coverage destination (implies |
|
off |
Allow |
|
on |
Delete |
Each suite also defines its own options via its Options dataclass.
Use otto test <Suite> --help to see them.
otto host¶
Run commands and transfer files on lab hosts.
otto host <HOST_ID> run <COMMANDS...>
otto host <HOST_ID> put <SRC...> <DEST>
otto host <HOST_ID> get <SRC...> <DEST>
otto host --list-hosts
Subcommands¶
Subcommand |
Description |
|---|---|
|
Execute one or more commands on the host |
|
Upload local files to the host |
|
Download files from the host |
Host-level options¶
Option |
Description |
|---|---|
|
Host ID to operate on (see |
|
Route through an intermediate SSH hop host |
|
List all available host IDs and exit |
otto monitor¶
Launch the interactive performance dashboard.
otto monitor [HOSTS] [OPTIONS]
Option |
Default |
Description |
|---|---|---|
|
all hosts |
Comma-separated host IDs to monitor |
|
|
Collection interval (minimum 1.0) |
|
Load historical data from |
|
|
Persist live data to SQLite for later viewing |