Skip to main content
Axol installs with a single command on the machine wired to the robot (typically a ZED Box / NVIDIA Jetson). It sets up the axol CLI and starts the web control panel as a background service — so once it finishes you can drive the robot from a browser, no terminal needed.
Working on Axol itself, or running without the install script? See Development install in the Advanced section for the clone + uv sync path.

Requirements

  • Linux with systemd (the installer registers a service).
  • (Optional) NVIDIA Jetson (e.g. a ZED Box) — required for the GMSL-attached ZED cameras used in data collection and policy inference. The installer runs on any Linux host; the Jetson-specific tuning steps simply no-op elsewhere.

ZED Box login

If you’re setting up a ZED Box from Almond, log in with the default credentials. (Perception Kit boxes ship with axol already installed — see the note under Install.)
Change the default password after first login if the machine is reachable by anyone else.

Install

The ZED Box that ships with the Perception Kit comes with axol already installed and the control-panel service running — skip straight to First connection. Run the command below only to set up a fresh machine, or to upgrade an existing one (re-running upgrades in place).
Run this on the robot machine:
This one command:
  • Installs uv if it isn’t already present.
  • Installs the axol CLI from GitHub, pinned to the latest release (Python 3.13 bundled), with the lerobot and sim extras.
  • Provisions the headset-video stack — the pyzed bindings, GStreamer/PyGObject, and the patched ZED source plugins — via axol provision. Each step self-gates and no-ops if the ZED SDK isn’t present.
  • Installs adb and the Quest udev rule (also via axol provision) for the optional Quest-over-USB controller link — no extra setup needed on the robot to use it.
  • On a factory-flashed ZED Box Duo, upgrades the known-bad factory GMSL camera driver to the pinned release (zed.driver, also via axol provision). The new driver only loads at boot, so the installer prints a reboot-required notice in its summary when it upgrades — reboot when convenient. A no-op on any other machine.
  • On a Jetson, pins the real-time clocks (jetson.setup) for low-latency camera encode and a steady IK loop.
  • Registers a root systemd service (axol.service) that runs axol serve at boot and restarts it automatically if it ever goes down. The service is pointed at the installing user’s home for dataset storage (HF_LEROBOT_HOME=~<user>/.cache/huggingface/lerobot), so collect-data datasets land in that account rather than /root even though the service runs as root.
When it finishes, open axol.almond.bot and connect to the machine — see the Web Control Panel guide. From then on, everything happens in the browser.
The service runs as root, so privileged steps (CAN bring-up, ZED daemon restarts) need no sudo password.

Staying up to date

Installs track GitHub releases, not individual commits. The server checks for a newer release in the background; when one exists, the control panel shows an update banner with the installed and latest versions (e.g. v0.1.2 → v0.1.3). Press Update to apply it — the server reinstalls at the new release tag, re-provisions, and restarts once idle. Nothing updates without that button press. Re-running the install command also upgrades to the latest release.

First connection

Open axol.almond.bot on any machine on the same network and enter the robot machine’s IP address. The very first time, your browser will warn about the self-signed certificate — accept it once (the certificate is shared between the control panel and the VR teleop link). See the Web Control Panel guide for the full connect flow. The control panel runs can.setup for you on first connect, so there’s no manual hardware setup on the install path.

Next steps

Teleoperation

Drive the robot from a VR headset.

Web Control Panel

The browser UI that drives every operation.