Skip to content

Installation

DAM is set up from source using make setup. The setup script handles the Python environment, Rust extension build, and frontend dependencies in one step.


Prerequisites

Tool How to get it
Git Already installed on most systems
uv Auto-installed by make setup if missing
Rust + cargo rustup.rs — required for the Rust data plane
Node.js nodejs.org — optional, only needed for the dashboard UI

Quick Start

# 1. Clone the repository
git clone https://github.com/ez945y/DAM.git
cd DAM

# 2. Run one-time setup (Python venv + Rust extension + npm)
make setup

# 3. Start the system
make run

make run starts both the backend API (port 8080) and the pre-built dashboard UI (port 3000). Run make build after frontend changes. Open http://localhost:3000 in your browser to see the DAM Console.


What make setup Does

The setup script runs automatically and handles:

  1. Python environment — creates .venv/ and installs development, service, and PyTorch dependencies via uv sync --frozen --inexact
  2. Rust extension — compiles dam_rs via maturin and installs it into .venv/
  3. Frontend — installs dashboard dependencies from package-lock.json with npm's offline cache preference and creates .env.local if it doesn't exist

If uv is not installed, the script installs it automatically. cargo must be available beforehand — install it with:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Hardware Support (SO-ARM101 / LeRobot)

For physical robot hardware, use the lerobot variant:

make setup-lerobot   # adds lerobot + cv2 hardware extras

Running make setup after make setup-lerobot will preserve the hardware extras — it detects lerobot in the existing venv and keeps it.

After installing hardware extras, complete the no-hardware Quick Start first. Move to Hardware Readiness only when validation, inspection, and console checks are familiar.


Useful Make Targets

Target Description
make setup First-time setup: venv + Rust + npm
make setup-lerobot Setup with SO-ARM101 hardware support
make build Build the production console after frontend changes
make run Start backend + pre-built console (follows .dam_stackfile.yaml)
make test Run full test suite (Python + Rust + frontend)
make build-rs Rebuild Rust extension only
make lint Run linters (ruff, mypy, cargo clippy)
make clean Remove .venv/, Rust build artefacts, node_modules/

Verify

After setup completes, verify the installation:

# Python package
.venv/bin/python -c "import dam; print(dam.__version__)"

# Rust extension
.venv/bin/python -c "import dam_rs; print('Rust data plane OK')"

# Runtime dependency check
.venv/bin/dam doctor

# Run the test suite
make test

Expected results:

  • The Python package command prints the installed DAM version, such as 0.5.0.
  • The Rust extension command prints Rust data plane OK.
  • dam doctor reports required components as available; optional hardware packages may warn unless installed.
  • make test ends with All checks passed.

Next, continue with Quick Start.