teleop, gravity-comp, collect-data, replay-dataset, run-policy, and inference-server — expose their entire configuration through draccus instead of a fixed set of argparse flags. Every field of the underlying config dataclass is reachable from the command line, and the whole config can also be loaded from a file.
The remaining commands (can.*, motor.*, zed.*, gst.*, jetson.setup, provision, tune.*, and serve) still use plain argparse flags and are unaffected by anything on this page.
Two ways to set any field
Dotted CLI overrides
Override any nested field with
--dotted.path VALUE, e.g. --axol.left.elbow.kp 60.Whole-config file
Load a complete JSON/YAML config with
--config_path run.json, then layer CLI overrides on top.Dotted overrides
Each command is backed by a config dataclass (for exampleTeleopCmdConfig wraps the full AxolConfig). Nest into it with dots:
--axol.left.elbow.kp leaves every other per-joint gain at its tuned default.
Config files
--config_path file → CLI flags (later wins), so flags always override file values, which override the built-in defaults.
Field-name conventions
Booleans are value-taking under draccus (
--push_to_hub true, not a bare --push_to_hub). The one exception is teleop’s --sim, which is normalized so a bare --sim works as well as --sim true.Validation
Choice fields (e.g.--log_level, --policy_type, --aggregate_fn) are validated against their allowed values, and missing required fields or type mismatches are reported as a clean usage error rather than a traceback.
axol <command> --help lists only the common fields (top-level options plus stiffness and gripper limits) to keep the output readable — the deeply-nested per-joint gains are hidden but remain fully overridable with their dotted paths (e.g. --axol.left.elbow.kp). This page is the complete reference for the override syntax.