Skip to main content

Almond Axol SDK

Axol dual-arm robot

Command-line interface and Python SDK for the Almond Axol dual-arm robot. CLI invoked as axol <command> [flags].

The browser front-ends live under web/: a VR teleoperation interface (WebXR, hosted at axol.almond.bot), a web control panel that drives the robot from a browser via axol serve, and a diagnostics dashboard for live motor telemetry and health. See web/README.md for the front-end details.

The full documentation is hosted at docs.almond.bot. The sources live under docs/, and the pages below link to them.

New here? See Teleoperation to go from installation to a live session, or the Web Control Panel guide to drive Axol from a browser.

Requirements

  • Linux
  • Python 3.12+ (the hosted installer bundles 3.13)
  • (Optional) NVIDIA Jetson (e.g. a ZED Box) — required for the GMSL-attached ZED cameras (data collection / policy inference).

Installation

One-command install (recommended)

One command installs uv, the axol CLI (from PyPI, with the lerobot, sim, and tracker extras), and a root systemd service that keeps axol serve running at boot:

curl https://axol.almond.bot/install -fsS | bash

Then open axol.almond.bot and connect to the machine. The install tracks releases: when a newer release exists, the control panel shows an update banner, and pressing Update reinstalls at the new release and restarts the server once idle.

On aarch64/Jetson, PyPI's pinned Torch 2.10 wheel is CPU-only. Local CUDA policy inference needs an explicitly managed JetPack-compatible Torch + Torchvision build; otherwise use remote inference or --device cpu. The hosted update paths refuse to overwrite an existing custom/CUDA build.

Development install

Install the package from a clone using uv — every dependency resolves from PyPI (kinematics comes through our published forks, almond-pyroki and almond-jaxls):

uv sync

Then activate the virtual environment so the axol CLI is on your path (or prefix every command with uv run):

source .venv/bin/activate

Install optional dependency groups as needed:

Extra Contents When to use
lerobot LeRobot (from PyPI, pinned to 0.6.1) collect-data, run-policy
sim viser teleop --sim
tracker Lighthouse/Ultimate bridge dependencies tracker.bridge, Mantis tracking
uv sync --extra lerobot --extra sim --extra tracker   # hosted feature set

The ZED Python bindings (pyzed) are not on PyPI and must be installed separately after the ZED SDK is installed:

axol zed.install

Streaming the ZED cameras to the headset (teleop --cameras, collect-data) encodes on the Jetson's NVENC via GStreamer and sends over WebRTC with aiortc. The encode path needs the system GStreamer NVENC tools plus the patched ZED source plugins, so it isn't a dependency extra. Install it once (and, on a Jetson, pin the NVENC/VIC clocks for low-latency encode):

axol gst.install
axol gst.build-zed   # build the patched ZED source plugins (needs the ZED SDK)
axol jetson.setup    # Jetson only; no-op elsewhere

Before using any motor or robot commands, initialize the CAN hardware:

axol can.setup

To drive Axol from a browser instead of the terminal, build the web UI once (it's served by axol serve):

cd web
npm install
npm run build --workspace=packages/axol-vr-client   # client package first
npm run build --workspace=app                        # → web/app/dist

See the installation guide for the full walkthrough.

Sitemap

Get Started

Operations

Each operation can be driven from the web control panel or the CLI:

Mantis

  • Mantis Hardware — handheld rigs for collecting demonstrations without moving the robot
  • Mantis Tracking — set up Quest, Lighthouse, or Ultimate tracking as the pose source

Remote Teleop

  • Remote Teleop — drive over the internet by sideloading Tailscale on a Meta Quest

Web Interfaces

  • Web Control Panel — drive the robot from a browser via axol serve
  • Diagnostics Dashboard — live motor telemetry, health tiles, and diagnostics scripts, served by axol serve
  • VR Interface — the in-repo WebXR teleop app (web/)
  • Quest over USB — low-latency wired controller transport (poses over a USB adb tunnel; camera stays on the LAN)
  • Quest Without Wearing It — keep the headset awake with nobody wearing it (proximity sensor off) for headless sessions

Advanced

CLI Reference

Python API

Release files for almond-axol 0.1.39

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for almond-axol 0.1.39
File Size Uploaded
almond_axol-0.1.39.tar.gz 957.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for almond-axol 0.1.39
File Interpreter ABI Platform
almond_axol-0.1.39-py3-none-any.whl Python 3 none any Details

Total release size: 2.0 MB

Release files / almond_axol-0.1.39.tar.gz

Download URL almond_axol-0.1.39.tar.gz
Size 957.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b5eca82618dfba1a3ef2b93abe2a60964dc425f78242bf842adeb70a56581b0f
BLAKE2b-256 checksum
How to use checksums
4b5bb4c8646ee97dfb20f25ffef7b5bbb7fb14158584e1d9e6a9af5c23ecc9e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / almond_axol-0.1.39-py3-none-any.whl

Download URL almond_axol-0.1.39-py3-none-any.whl
Size 1.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
79e8c9f2ffb81fef21be4bc095ff8f3e0299ba3977a07574fbd140d49f27f629
BLAKE2b-256 checksum
How to use checksums
0c7449c2f3f040f5ecec48332f68c7703c0eeb046cca6b0e7fdbb5dee8a89e7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.39 This release

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page