Web UI for LeRobot SO101 bimanual robot arms — teleoperation, calibration, and data recording. The UI wraps lerobot CLI commands and does not modify the lerobot codebase.
Download the latest release from Releases.
# After downloading the installer script
# Make it executable
chmod +x install.sh
# Run it
./install.sh# After downloading the .zip
# Unzip if needed
unzip MakerMods-App-[VERSION].zip
# Move into the extracted folder
cd MakerMods-App-[VERSION]
# Make the installer script executable
chmod +x install.sh
# Run the installer
./install.shThe following part covers manual installation of the UI only. Install and configure lerobot-MakerMods first (see installation instructions).
| Part | Stack | Path | Port |
|---|---|---|---|
| Backend | FastAPI (Python) | backend/ |
8000 |
| Frontend | Next.js 16, React | frontend/ |
3000 |
- Backend runs lerobot CLI via subprocess and serves REST + WebSocket (logs).
- Frontend proxies
/api/*and/ws/*to the backend (seefrontend/next.config.ts). - Config is stored in
webui_config.jsonat the repo root (gitignored).
- lerobot installed and working in its own environment (e.g.
conda activate lerobot). Not covered here. - Node.js 18+ and npm (for the frontend).
- Python 3.10+ in the same environment you use for lerobot (for the backend).
You need Node 18 or newer for the frontend. Pick one method.
NVM installs Node in your home directory.
# Install NVM
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# Load NVM in this shell (or open a new terminal)
export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
# Install Node LTS
nvm install --lts
# Verify
node -v # e.g. v20.x.x or v22.x.x
npm -vAdd to your shell profile so NVM loads in new terminals (NVM’s install script usually does this):
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"sudo apt update
sudo apt install -y nodejs npm
node -v # Should be 18+ for Next.js 16If your distro ships an old Node, use NVM (Option A) or the NodeSource repo.
Use the same environment where lerobot is installed (e.g. conda lerobot).
# Activate your lerobot environment
conda activate lerobot # or: source /path/to/venv/bin/activate
# From the MakerMods-LeRobot-UI repo root
cd /path/to/MakerMods-LeRobot-UI
pip install -r requirements.txtrequirements.txt includes:
fastapi,uvicorn— API and serveropencv-python-headless— camera scanning/preview (no GUI)huggingface_hub— Hugging Face datasets/repos
If you already have lerobot installed, some of these may be present; installing again is safe.
Optional: If you run the backend on a machine with a display and want OpenCV windows, use opencv-python instead of opencv-python-headless (or install it in addition; headless is enough for the UI).
From the repo root:
cd /path/to/MakerMods-LeRobot-UI/frontend
npm installIf you use NVM, ensure it’s loaded in this terminal (nvm use default or open a new terminal after installing NVM).
Use two terminals.
Terminal 1 — Backend (port 8000)
conda activate lerobot
cd /path/to/MakerMods-LeRobot-UI
python -m backend.mainTerminal 2 — Frontend (port 3000)
cd /path/to/MakerMods-LeRobot-UI/frontend
npm run devThen open http://localhost:3000 in your browser. The frontend will talk to the backend at localhost:8000 via the configured rewrites.
- Backend: http://localhost:8000/api/health should return
{"status":"healthy",...}. - Frontend: http://localhost:3000 should show the wizard UI.
- Ensure ports 3000 and 8000 are free before starting.
