CLI
Reference for every Argos CLI command — what it does, what it takes, and how to use it.
Overview
The Argos CLI is how you talk to the daemon running on your robot's machine — it doesn't do any of the real work itself. Pulling model weights, opening a serial connection to a servo, spawning the inference engine, running the control loop: all of that happens inside a long-running background process, started once and left running. Every CLI command is really just an HTTP request to that daemon, wrapped in a clean terminal interface with readable errors and correct exit codes.
That split matters in practice. Starting a run doesn't tie up your terminal — you can close it, come back later, and the robot is still doing whatever you told it to do. And if a command fails because the daemon isn't running, you get a clear message telling you how to fix that, not a stack trace.
Installation
One command installs everything: system dependencies, a Python virtual environment, the inference engine built from source with GPU detection (Jetson, desktop GPU, or a CPU-only fallback), and the daemon itself as a systemd service.
The daemon is enabled but not started automatically — add your Hugging Face token to local/.env first, then start it:
Commands
Every command below follows the same shape: a verb, sometimes a model or device argument, and options for anything optional. The two connect commands share a pattern worth calling out — run them with no arguments to discover what's available, then run them again with the specific one you want.
list
argos listShows the full model catalog and flags which ones are already pulled onto this machine. This is usually the first command you run — it's how you find out what's available before committing to a multi-gigabyte download.
pull
argos pull <model>Downloads a model's weights from Hugging Face into the daemon's local cache. The model name must match one from `argos list`. This can take a while for larger models — the daemon shows a live progress spinner while it downloads.
- model
- Required. Model name from the catalog, e.g. smolvla.
connect actuator
argos connect actuator [--port PORT] [--servo-id ID]Connects the robot arm over the Feetech servo protocol. Run it with no arguments first — it scans and lists every serial port it can see, so you can figure out which one is actually your arm before connecting to it. Once you know the port, connecting does a real handshake: it pings each servo ID and only counts the connection as live if servos actually respond, not just because the port opened.
- --port
- Serial port, e.g. /dev/ttyUSB0. Omit to list available ports instead.
- --servo-id
- A servo ID to ping. Repeatable. Omit to use the default set for the reference arm.
connect sensor
argos connect sensor [--index N] [--view NAME]Connects a camera under a named view. Just like connect actuator, running it with no arguments discovers what's available first. The --view name isn't just a label — it has to match one of the view names the model you're about to run actually expects, so the right camera feed ends up in the right slot instead of being guessed from connection order.
- --index
- Camera index. Omit to discover available cameras.
- --view
- View name — must match the model's expected camera view key exactly.
run
argos run <model> <instruction>Starts the model running. This is the command that actually moves the arm: it checks that the model is pulled and that both the actuator and required cameras are connected, spawns the inference engine, and kicks off the control loop. The instruction is a plain-language description of what you want the robot to do — it gets fed straight to the model alongside the camera feed.
- model
- Required. Model name to run, e.g. smolvla.
- instruction
- Required. Natural-language task instruction for the robot.
devices
argos devices [--kind actuator|sensor]Lists whatever's currently connected — useful as a sanity check before running, or any time you've lost track of what's plugged in. Filter to just one kind if you don't need the full picture.
- --kind
- Optional. Filter to 'actuator' or 'sensor'. Omit to show both.
In-session commands
While a run is active, three more operations are available: checking logs, checking status, and safely stopping. These exist today as routes on the daemon's own API — wiring them into the CLI as interactive commands you can type while a run is in progress is next.
logs
Coming soonGET /cli/logsReturns both the inference engine's raw output and Argos's own pipeline log (frame captured, request sent, response received, correction applied) — everything that's happened since the run started. Today this lives on the daemon's API; a native `argos logs` command that talks to it while a run is active is coming.
status
Coming soonGET /cli/statusReports what model is loaded, which devices are connected, and how long the daemon and the current run have each been up. Same story as logs — available on the daemon today, landing as a CLI command next.
stop
Coming soonPOST /cli/stopSafely ends the active run: stops the control loop, drives the arm back to a home position, and shuts down the inference engine — the daemon itself keeps running throughout, ready for the next run.