Skip to main content
Runs the Axol web control panel: a small local server that lets you drive the robot from a browser instead of a terminal. It serves the built web UI and a JSON/WebSocket API that starts, streams, and stops the core operations — teleoperation, gravity compensation, data collection, dataset replay, and policy inference — in-process. With the one-command install, this command already runs as a root systemd service (axol.service) that starts at boot, restarts automatically, and offers an update in the control panel whenever a newer release exists — you don’t run it by hand. Manual invocation is for development installs:
For a guided walkthrough of the control panel — connecting the Axol host and Axol, assigning the cameras, and running each operation — see the Web Control Panel guide.

TLS

TLS is on by default so a browser on an HTTPS origin (e.g. the hosted VR app at axol.almond.bot) can reach this machine without mixed-content blocking. On first run a self-signed certificate is generated in ~/.almond/vr/certs/ — the same certificate the VR teleop WSS server uses, so accepting it once covers both the control panel and VR teleop. To connect from a browser on another machine, open the printed LAN URL once and accept the certificate warning. Pass --no-tls to disable TLS entirely (plain HTTP).

Building the web UI

The server looks for the built web bundle at web/app/dist (a repo checkout only — one-command installs have no checkout). If it isn’t there, axol serve still runs and the API is available; use the hosted UI at axol.almond.bot, which connects to the server directly. To serve the UI locally instead, build it once with:
See Development install → Build the web UI for details.

What it serves

The operations launched from the panel run in-process inside the serve process — the same Python entry points as the teleop, gravity-comp, collect-data, replay-dataset, and run-policy CLI commands. Anything those commands need on the host (CAN, the lerobot/sim extras, ZED access) is required here too.