LeRobot v0.7.0 rebuilds install, training, inference and hardware layer
LeRobot v0.7.0 is a breaking upgrade from v0.6.1: installation, training, inference and the hardware layer all change, and several old flags and checkpoint paths stop working.
LeRobot v0.7.0 is a breaking release from v0.6.1, and installation changes first. On Linux, torch and torchvision now come from PyPI as CUDA 13 builds and need NVIDIA driver 580.65 or newer; the cu128 index is gone, and older drivers must install torch from a CUDA 12 index first. macOS needs 14+ (15+ for MPS). Pins moved to transformers 5.22, huggingface-hub>=1.31,<3, motorbridge 0.5, datasets<6, Pillow<14 and torchcodec<0.18.
Training changes are the biggest trap. Weights & Biases is replaced by Trackio, so --wandb.* becomes --trackio.*, entity and mode have no equivalent, remote jobs with tracking need --trackio.space_id, and checkpoints are no longer uploaded as artifacts by default. FSDP1 is replaced by FSDP2/HSDP with --parallelism.dp_shard, --parallelism.dp_replicate and --accelerator.*; mixed precision moves to --accelerator.mixed_precision. FSDP checkpoints saved with lerobot ≤ 0.6.x cannot be resumed, though their model.safetensors still loads. --policy.use_peft=true alone now trains LoRA.
On hardware, Feetech and Dynamixel now share one rustypot-backed SerialMotorsBus: lerobot[feetech]/[dynamixel] install rustypot instead of the vendor SDKs. FeetechMotorsBus and DynamixelMotorsBus are deprecated aliases, OperatingMode/TorqueMode give way to bus.set_operating_mode("position"), and control tables, encoding_utils and SDK-level helpers such as broadcast_ping and scan_port are removed. Calibration files are unchanged. reBot B601 now uses motor_family (dm, rs); gripper_mit_kp/gripper_mit_kd are removed and per-joint gains take a dict instead of a list.
Inference and rollout also moved: lerobot.async_inference and lerobot[async] are removed, replaced by lerobot[remote], lerobot-policy-server and lerobot-rollout --inference.type=remote. lerobot.rollout.inference moved to lerobot.inference. select_action and predict_action_chunk may return a PolicyOutput ({"action", "prediction"}) instead of a bare tensor, so use policy_output_to_transition when calling them directly. With --interpolation_multiplier>1, rollout strategies record one frame per policy action instead of one per tick.
Sources
- [1] LeRobot GitHub releases — https://github.com/huggingface/lerobot/releases/tag/v0.7.0. Read 2026-11-12.
- [2] Release blog (Hugging Face) — https://huggingface.co/blog/lerobot/lerobot-release-v070. Read 2026-11-12.