> ## Documentation Index
> Fetch the complete documentation index at: https://docs.almond.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Install Axol on the robot machine with one command, then open the web control panel.

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.

<Note>
  Working on Axol itself, or running without the install script? See [Development install](/advanced/development-install) in the Advanced section for the clone + `uv sync` path.
</Note>

## 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](#install).)

| Field    | Value   |
| -------- | ------- |
| Username | `user`  |
| Password | `admin` |

<Warning>
  Change the default password after first login if the machine is reachable by anyone else.
</Warning>

## Install

<Note>
  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](#first-connection). Run the command below only to set up a fresh machine, or to upgrade an existing one (re-running upgrades in place).
</Note>

Run this on the robot machine:

```bash theme={null}
curl https://axol.almond.bot/install -fsS | bash
```

This one command:

* Installs [`uv`](https://docs.astral.sh/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`](/cli/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`](/cli/provision)) for the optional [Quest-over-USB](/guides/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`](/cli/zed-driver), also via [`axol provision`](/cli/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`](/cli/jetson-setup)) for low-latency camera encode and a steady IK loop.
* Registers a root systemd service (`axol.service`) that runs [`axol serve`](/cli/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`](/cli/collect-data) datasets land in that account rather than `/root` even though the service runs as root.

When it finishes, open [axol.almond.bot](https://axol.almond.bot) and connect to the machine — see the [Web Control Panel guide](/guides/control-panel). From then on, everything happens in the browser.

<Note>
  The service runs as root, so privileged steps (CAN bring-up, ZED daemon restarts) need no `sudo` password.
</Note>

### Staying up to date

Installs track [GitHub releases](https://github.com/almond-bot/axol/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.

```bash theme={null}
journalctl -u axol -f        # follow the service logs
systemctl restart axol       # restart manually
```

## First connection

Open [axol.almond.bot](https://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](/guides/control-panel) for the full connect flow.

The control panel runs [`can.setup`](/cli/can-setup) for you on first connect, so there's no manual hardware setup on the install path.

## Next steps

<CardGroup cols={2}>
  <Card title="Teleoperation" icon="gamepad" href="/operations/teleop">
    Drive the robot from a VR headset.
  </Card>

  <Card title="Web Control Panel" icon="display" href="/guides/control-panel">
    The browser UI that drives every operation.
  </Card>
</CardGroup>
