Requirements
- Linux
- Python 3.13+ (the quick install below provides it automatically)
- (Optional) NVIDIA Jetson — if ZED cameras are used.
Quick install (recommended)
One command installs everything and starts the web control panel:- Installs
uvif it isn’t already installed. - Installs the
axolCLI from GitHub as auvtool (Python 3.13 included), with every dependency extra exceptcudaanddev. - Registers a root systemd service (
axol.service) that runsaxol serveat startup and restarts it automatically if it ever goes down.
The service runs as root, so privileged steps (CAN bring-up, PTP clock-sync daemons) need no sudo password.
Development install
For working on Axol itself, install from a clone usinguv. pyroki and lerobot are sourced from Git and resolved automatically:
axol CLI is on your path:
Optional extras
Install optional dependency groups as needed (the quick install above includes all of them exceptcuda and dev):
| Extra | Contents | When to use |
|---|---|---|
lerobot | LeRobot (from GitHub) | collect-data, run-policy |
sim | viser | teleop --sim |
video | aiortc | Streaming the ZED camera feeds to the headset over WebRTC (teleop --zed_host, collect-data) — see Camera views |
cuda | JAX with CUDA 13 support | GPU-accelerated JAX (IK solver used by teleop); note that CPU is usually faster for the JAX IK solver |
dev | OpenCV (headless) | Development / debugging |
ZED Python bindings
The ZED Python bindings (pyzed) are not on PyPI and must be installed separately after the ZED SDK is installed:
zed.install for details.
Web control panel (optional)
With the quick install, the control panel is already running — just open axol.almond.bot and connect to the machine. For a development install, you can build and serve the UI locally instead. This produces the bundle thataxol serve hosts at web/app/dist:
axol serve works without this step (the API is still available) — the hosted UI at axol.almond.bot connects to it directly. See the Web Control Panel guide.
First-run hardware setup
Before using any motor or robot commands, initialize the CAN hardware:Run directly in a terminal,
sudo is invoked automatically where required (with the quick install, the control panel runs this for you as root on first connect). See can.setup for what it configures.