uv tool install can’t manage on its own:
- adb + the Quest udev rule — for the Quest-over-USB controller transport (the
adb reversetunnel that streams poses over the cable). Self-gates onapt. tracker.install— a pinned libsurvive build and Vive USB permissions for Mantis Lighthouse tracking.zed.driver— replaces a ZED Box’s outdated factory GMSL camera driver (stereolabs-zedbox-duoon the Duo,stereolabs-zedbox-minion the Mini) with the release pinned for the ZED SDK. Takes effect on the next reboot (prints a notice; never reboots itself). A no-op off a factory-flashed ZED Box; warns about a Stereolabs driver package it has no pin for.- board IMU (
gyro.install) — grants theimugroup access to the carrier board’s BMI088 sampling timer, the powered cart’s heading-hold yaw reference, so teleop can start it without root. Self-gates on the board driver’s presence. zed.install— the pyzed bindings (not on PyPI; needs the ZED SDK).gst.install— the GStreamer + PyGObjectappsinkstack (PyGObject builds against the system gobject-introspection and is dropped whenever the tool environment is rebuilt, e.g. by a release upgrade).gst.build-zed— the patchedzedxonesrc/zedsrcplugins (sensor-accurate PTS so collected images line up with joint samples).
axol serve self-updater run this command, so the set of steps lives in exactly one place and can’t drift between them. Every step is idempotent and best-effort — each self-gates on the ZED SDK / apt / NVENC and no-ops when unavailable — so axol provision is safe to run on any host and re-run anytime.
Provisioning holds the host-wide update lock, which is root-only. Run from a terminal as a regular user, the steps still execute as that user (their uv, download caches, and Python environment) and only a small lock-holder process escalates via sudo (one password prompt, shared with the steps that need root). Without a usable sudo the command exits with a message instead of a traceback.
provision does not pin the Jetson clocks — that’s jetson.setup, a per-boot runtime tweak owned by the systemd ExecStartPre, not an install step./usr/local/zed, the pyzed and zed-gstreamer build steps are skipped. The GStreamer/NVENC steps also skip on non-Jetson hosts, where that pipeline cannot run. Lighthouse tracking and adb remain independently available on normal Linux workstations.
See Development install → Headset-video stack for when you’d run this by hand.