Skip to content

Install LeRobot v0.5.0: The Real Setup Guide

Deploy Hugging Face LeRobot v0.5.0 the right way - pip vs source vs Docker, the ffmpeg traps, and verified fixes for the libtorchcodec error.

7 min readIntermediate

Two ways people install open source robotics AI stacks like LeRobot. One works. The other wastes your afternoon.

Approach A: copy a blog post from 2024, run conda create -n lerobot python=3.10, then watch import errors stack up because v0.5.0 needs Python 3.12. Approach B: read the actual release notes first, pick the install method that fits your hardware, and skip 90% of the GitHub-issue spelunking. This guide is approach B.

What you’re actually installing

LeRobot is Hugging Face’s PyTorch-native framework for real-world robot learning – imitation learning, RL, and Vision-Language-Action models, plus a standardized dataset format. v0.5.0 shipped with over 200 merged PRs since v0.4.0 and modernized the codebase to Python 3.12 and Transformers v5. The repo sits at github.com/huggingface/lerobot, and the LeRobot paper was accepted to ICLR 2026.

Why deploy it now: v0.5.0 added full Unitree G1 humanoid support, Pi0-FAST autoregressive VLAs, and Real-Time Chunking for responsive inference. If you were holding off because the framework felt arm-only, that’s no longer the case.

System requirements (with the catches)

Don’t skim this. The version requirements changed in v0.5.0 and old guides will lie to you.

Component Minimum Notes
Python 3.12 Hard requirement as of v0.5.0 – 3.10 will fail
PyTorch ≥ 2.8 (for TorchCodec on Windows) Check TorchCodec compatibility table for your OS
OS Ubuntu 22.04 / macOS Apple Silicon / Windows Linux ARM and macOS Intel have TorchCodec limitations (see below)
Hardware specs No official minimums published as of v0.5.0 – community guidance varies by use case (inference vs. training vs. teleop)

The big trap: TorchCodec – LeRobot’s default video decoder – is supported on Linux x86_64, macOS Apple Silicon, and Windows with PyTorch ≥ 2.8, but unsupported on Linux ARM (aarch64) and macOS Intel, where it silently falls back to pyav. If you’re deploying on a Jetson or Raspberry Pi, expect dataset recording quirks: pyav doesn’t handle libsvtav1 (the preferred codec for LeRobotDataset format) the same way, and there’s no warning when the fallback happens.

Pick your install method

Three official paths exist. Most tutorials only show one.

  • pip from PyPI – the default. LeRobot installs directly from PyPI with optional extras. Use this unless you have a specific reason not to.
  • Source install (pip install -e .) – only if you plan to modify policies or add hardware drivers. Editable installs save you reinstall time during development, but you own the dependency management.
  • Docker – official images exist on Docker Hub for CPU and GPU environments (the GPU image runs around 5.4 GB). One catch that’s easy to miss: a bug logged in GitHub issue #1704 confirmed the CPU and GPU tag names were inverted in nightly builds – turns out huggingface/lerobot-cpu was pulling the GPU build and vice versa, depending on when the nightly ran. Run docker inspect before trusting the tag.

Skip Docker for a first install. The image weight is real, and plugging in USB hardware later requires extra flags that trip people up. Pip is faster to debug.

Install (the actual commands for v0.5.0)

# 1. Get miniforge if you don't have conda
wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

# 2. Create environment - Python 3.12, not 3.10
conda create -y -n lerobot python=3.12
conda activate lerobot

# 3. Install ffmpeg with libsvtav1 from conda-forge
conda install -y ffmpeg -c conda-forge

# 4. Install LeRobot from PyPI
pip install lerobot

# Or with hardware extras (Feetech for SO-100/SO-101)
pip install "lerobot[feetech]"

# Everything at once (heavy)
pip install "lerobot[all]"

The [feetech], [dynamixel], [aloha], [pusht] extras correspond to specific hardware or sim environments – you can combine them like .[aloha,feetech], and the full list lives in pyproject.toml.

On Ubuntu, if pip throws build errors for native deps, install the system libs first:

sudo apt-get install -y cmake build-essential python3-dev pkg-config 
 libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev 
 libswscale-dev libswresample-dev libavfilter-dev

WSL users: install evdev separately via conda install evdev -c conda-forge. Without it, anything using pynput for hardware input – including the keyboard teleoperator – crashes on first use.

Verification

No config file needed for a base install. The CLI works out of the box.

# Confirm install
lerobot-info

If lerobot-info prints your Python version, torch version, and the LeRobot version without a traceback, the install is clean. Now test the dataset pipeline – this exercises TorchCodec, ffmpeg, and the HF Hub together:

python -c "from lerobot.datasets.lerobot_dataset import LeRobotDataset; 
d = LeRobotDataset('lerobot/aloha_mobile_cabinet'); 
print(d[0]['action'].shape)"

That downloads a real dataset from the Hub, decodes a video frame, and prints the action tensor shape. Shape tuple returned? Your install is functional end-to-end.

There’s a question worth sitting with here: a passing install check doesn’t mean your codec path is optimal. If your machine falls into the pyav fallback category – Linux ARM, macOS Intel – the install looks fine but recording a new dataset will behave differently than what the docs describe. Worth knowing before you build your first data pipeline.

Common errors and the actual fixes

These come from real GitHub issues – #964, #1131, and #912 all show the same error stack traces.

1. RuntimeError: Could not load libtorchcodec

The traceback points at ffmpeg. Ffmpeg is probably fine. The actual cause – confirmed across those three issues – is a PyTorch/TorchCodec ABI mismatch: PyTorch nightly paired with a stable TorchCodec release, or vice versa. Fix: pin matching versions. Check the TorchCodec compatibility table and align your PyTorch and TorchCodec versions before reinstalling.

2. Failed building wheel for av / jpeg12_write_raw_data, version LIBJPEG_8.0 not found

Community-reported conflict between OpenCV’s bundled ffmpeg and the ffmpeg that PyAV needs (PR #883). The workaround that’s stuck:

conda install -y -c conda-forge ffmpeg
pip uninstall -y av opencv-python
pip install --no-binary=av lerobot
conda install -y -c conda-forge "opencv>=4.10.0"

3. Import errors after install

You’re on Python 3.10 from a stale tutorial. Recreate the env with 3.12 – there’s no fix-in-place.

Upgrade and uninstall

Upgrades from v0.4.x are not in-place safe because of the Transformers v5 jump. Don’t pip upgrade over an existing v0.4 env.

# Clean upgrade - recommended
conda remove -n lerobot --all -y
conda create -y -n lerobot python=3.12
conda activate lerobot
conda install -y ffmpeg -c conda-forge
pip install lerobot

# In-place attempt (only if you must)
pip install --upgrade lerobot

For a complete uninstall, drop the conda env and clear the dataset cache – those Parquet files accumulate fast:

conda deactivate
conda env remove -n lerobot
rm -rf ~/.cache/huggingface/lerobot

The v0.6.0 roadmap is public. Per GitHub issue #3134, the core team is focused on benchmark leaderboards and a Libero nightly regression CI. If you’re thinking about contributing, that’s where the gaps are.

Actually – one thing that’s genuinely unclear from the current docs: how the benchmark leaderboard will handle hardware variance. Two setups running identical policies on identical datasets can get different latency numbers depending on codec path alone. Whether the v0.6.0 CI will normalize for that is an open question worth watching.

FAQ

Can I run LeRobot without a physical robot?

Yes. pip install "lerobot[pusht]" or [aloha] gets you sim environments, and the Hub has prebuilt datasets you can train on right away. No hardware required.

Why does the official guide push conda when uv is faster?

The short answer: conda-forge ships an ffmpeg build that satisfies LeRobot’s libsvtav1 requirement out of the box. Uv pulling from system ffmpeg can’t always guarantee the same codec availability – and a missing libsvtav1 doesn’t error loudly, it just breaks dataset recording silently. If you know your toolchain well enough to install a compatible ffmpeg manually first, uv works fine.

Is v0.5.0 stable enough for production deployment on real hardware?

For tabletop arms and the supported humanoids, yes – dataset format and policy APIs are stable as of this release. But real-time inference paths for VLA models are still maturing. The v0.6.0 roadmap calls out benchmark leaderboards as a work-in-progress, which means there’s no official latency SLA per policy type yet. For anything where inference timing matters: profile your specific model on your specific hardware before committing. The framework is ready; the benchmarking infrastructure to tell you what “ready” means in numbers isn’t published yet.

Next: open huggingface.co/docs/lerobot/installation, run the four conda commands above in a fresh terminal, then load the lerobot/aloha_mobile_cabinet dataset to confirm decoding works on your machine.