Skip to main content
This page is for working on the Axol software itself: installing from a source checkout, choosing optional extras and building the web UI. To run Axol on the robot, use the one-command install instead.

Install from a clone

In your checkout, install the package with uv. Every dependency comes from PyPI:
Then activate the virtual environment so the axol CLI is on your path:
Activate the environment in every new shell. Or start each command with uv run (for example, uv run axol can.setup) and skip activation.

Optional extras

Add optional extras as you need them. The install script includes lerobot, sim and tracker.
On a Jetson, the PyTorch package from PyPI has no GPU support. uv sync also replaces any GPU build of PyTorch you installed yourself. To run policies on the Jetson’s GPU, install a PyTorch and Torchvision build for your JetPack version after each uv sync. Remote inference and --device cpu work without it.
Streaming the ZED cameras to the headset (teleop --cameras, collect-data) is not an extra. It needs system packages that axol provision installs. See Headset-video stack below.

ZED Python bindings

The ZED Python bindings (pyzed) are not on PyPI. Install the ZED SDK first, then run:
See zed.install for details.

Headset-video stack

Streaming the ZED cameras to the headset needs GStreamer, PyGObject and Axol’s patched ZED GStreamer plugins. None of these come from PyPI. axol provision installs them all, and it is safe to run again. The install script and the updater run the same command:
Its main steps are listed below, in the order they run. Each optional step is skipped on hardware it doesn’t apply to. You can also run most of them on their own. The Jetson tuning resets when the computer restarts. The install script’s service applies it again at every boot with axol provision --boot. On a development checkout without that service, run axol provision --boot yourself after each restart.

First-run hardware setup

Before you run any motor or robot command, set up the CAN bus once:
The command asks for sudo when it needs it. It also installs a service that brings the CAN interfaces back up when you unplug and replug an adapter. See can.setup for details, and can.enable to bring the interfaces up again by hand.

Build the web UI

axol serve serves the web UI from web/app/dist. To serve the control panel and VR interface from your own computer, build it once:
Then start the server and open the printed URL:
You can skip the build. Without it, axol serve still runs, and the hosted UI at axol.almond.bot connects to it. See serve and the Web Control Panel guide.

Next steps

CLI Reference

Every axol command and flag, and how configuration works.

Python API

Axol, the kinematics solver, VR teleop, and the LeRobot wrappers.