Release Blog
https://huggingface.co/blog/lerobot-release-v060
⚠️ Breaking changes (v0.5.1 -> v0.6.0)
v0.6.0 cleans house, and a few changes need your attention when upgrading:
pip install lerobotno longer includes dataset or training dependencies; add the extra you need (e.g.lerobot[training]).- Some import paths have changed. Please use the canonical public entry points rather than internal submodule paths.
- GR00T N1.5 is replaced by N1.7 (pin
lerobot==0.5.1if you need N1.5). - The minimum PyTorch version is now 2.7.
eval_freqwas renamed toenv_eval_freqin the train config.- The RL stack was rebuilt: the
sacpolicy type is nowgaussian_actorunder the new modular RL API. - Legacy per-frame
subtask_indexannotations are superseded by the new language columns. --dataset.vcodecwas renamed to--dataset.rgb_encoder.vcodec, such that RGB and depth cameras video codecs may be set separately.
What's Changed
- chore(dependencies): Bump lerobot to 0.5.2 by @imstevenpmwork in #3307
- refactor(envs): move benchmark dispatch into EnvConfig subclasses by @pkooij in #3272
- feat(envs): lazy env init + AsyncVectorEnv as default for n_envs > 1 by @pkooij in #3274
- feat(ci): add agent assitance workflow by @imstevenpmwork in #3332
- chore(security): update claude.yml by @hf-security-analysis[bot] in #3333
- fix(ci): pin claude-code-action to v1.0.88 by @imstevenpmwork in #3336
- chore(ci): proper claude args workflow by @imstevenpmwork in #3338
- fix(dataset): adding metadata loading when reading from a dataset after writing by @CarolinePascal in #3305
- chore(dependencies): update uv.lock by @imstevenpmwork in #3308
- chore(dependencies): update uv.lock by @imstevenpmwork in #3361
- refactor(deps): minimal default install with facade pattern and dependency isolation by @imstevenpmwork in #3362
- fix(rl): ensure queue and process cleanup on abnormal exit by @jashshah999 in #3063
- feat(ci): benchmark smoke tests with isolated Docker images (LIBERO + MetaWorld) by @pkooij in #3319
- fix(feetech): motor position readings overflow by @Maximellerbach in #3373
- Update reward classifier training config by @EPronovost in #3147
- fix(test): add missing device placement in multi-task DiT tests by @s1lent4gnt in #3349
- fix(groot): compatibility fixes for gr00t in v0.5 by @mtiezzi in #3182
- Add thread synchronization to ReplayBuffer to prevent race condition between add() and sample() by @s1lent4gnt in #3372
- fix(rl): preserve teleop intervention flag in step_env_and_process_transition by @remete618 in #3273
- fix: catch KeyboardInterrupt in safe_stop_image_writer to prevent corrupted frames by @s1lent4gnt in #3381
- refactor(imports): enforce guard pattern by @imstevenpmwork in #3382
- chore(docs): update contributing by @imstevenpmwork in #3387
- chore: bump doc-builder SHA for PR upload workflow by @rtrompier in #3386
- chore(docs): adding a jupyter notebook that gives you ready-to-paste commands by @Maximellerbach in #3395
- feat(ci): send slack notification if latest dependency test is broken by @imstevenpmwork in #3398
- fix(ci): not fail when skipped by @imstevenpmwork in #3399
- fix(record): pass rename_map to make_policy in lerobot-record by @wadeKeith in #3240
- Improve loading performance in
_absolute_to_relative_idxwhen remapping indices by @hello3x3 in #3279 - chore(dependencies): update uv.lock by @imstevenpmwork in #3365
- feat(dataset): 2x faster dataloader via parallel decode, uint8 transport, and persistent workers by @imstevenpmwork in #3406
- fix(dataset): cleanup_interrupted_episode wipes image temp dirs by @whats2000 in #3405
- episods→episodes by @k1000dai in #3410
- fix(policies): replace deprecated torch.cuda.amp.autocast with torch.… by @Defalt-Meh in #3167
- ci: skip Docker Hub login step on fork PRs by @pkooij in #3417
- fix(envs): preserve AsyncVectorEnv metadata/unwrapped in lazy eval envs by @HaomingSong in #3416
- feat(envs): add RoboCasa365 benchmark integration by @pkooij in #3375
- feat(envs): add RoboTwin 2.0 benchmark by @pkooij in #3315
- feat(envs): add RoboCerebra long-horizon manipulation benchmark by @pkooij in #3314
- feat(envs): add RoboMME benchmark by @pkooij in #3311
- feat(envs): add LIBERO-plus robustness benchmark by @pkooij in #3313
- feat(sim): VLABench benchmark integration by @pkooij in #3396
- fix(robotwin): pin compatible curobo in benchmark image by @pkooij in #3427
- docs(agents): add AGENT_GUIDE.md for user facing agent by @pkooij in #3430
- chore(dependencies): update uv.lock by @imstevenpmwork in #3408
- fix(smolvla): correct loss normalization for padded actions by @whats2000 in #3434
- docs(xvla): fix broken local file links in documentation by @kuafou in #3291
- fix(policy): loss normalization for padded actions in ACT, Diffusion, and MultiTaskDiT by @imstevenpmwork in #3442
- fix(sarm): handle BaseModelOutputWithPooling from transformers 5.x in… by @masato-ka in #3419
- fix(policies): remove @DataClass from GR00TN15Config to fix import crash on transformers ≥ 5.5 by @ChuyaoShen in #3414
- fix(imports): realsense import name is platform dependent by @imstevenpmwork in #3451
- fix(dataset): no default overwrite in lerobot tool recompute stats by @imstevenpmwork in #3452
- fix(pi): avoid peak RAM in PiGemma construction by freeing replaced submodules by @imstevenpmwork in #3454
- chore(dependencies): update uv.lock by @imstevenpmwork in #3437
- feat(rollout): decouple policy deployment from data recording with new
lerobot-rolloutCLI by @imstevenpmwork in #3413 - chore(ci): bump docs workflows by @imstevenpmwork in #3476
- Reward models refactor by @s1lent4gnt in #3142
- refactor(datasets): replace untyped dict with typed DatasetInfo dataclass by @Maximellerbach in #3472
- fix(rollout): propagate policy-specific CLI config paramaters by @imstevenpmwork in #3483
- Migrate legacy RA-BC fields in train config loading by @s1lent4gnt in #3480
- Expose sarm package API and ship reward model card template by @s1lent4gnt in #3477
- fix(pi0&pi05): keep training sampling outside compiled forwards by @HaomingSong in #3487
- fix(peft): fix LoRA resume from Hub (PosixPath + double wrap) by @jashshah999 in #3485
- chore(ci): upgrade docker internal by @imstevenpmwork in #3505
- chore(ci): increase time stale by @imstevenpmwork in #3507
- chore(dep): bump transformers to 5.4.0 by @imstevenpmwork in #3374
- feat(dagger): adding smooth handover by @Maximellerbach in #3506
- fix(robots): openarm features compatibility with openarm_mini by @imstevenpmwork in #3524
- feat(policies): add EO-1 model by @HaomingSong in #3403
- fix(ci): bump robotwin benchmark image to CUDA 12.6 by @pkooij in #3525
- feat(policy): use pretrained vision encoder weights by default for diffusion and vqbet by @villekuosmanen in #3202
- fix(ci): speed up multi-task benchmark evals (parallelize + cap VLABench steps) by @pkooij in #3529
- fix(robots): allign lekiwi default with so100 use_degrees by @imstevenpmwork in #3531
- fix(train): restrict legacy RA-BC migration to JSON checkpoints only by @masato-ka in #3490
- chore(ci): disable auto-stale by @imstevenpmwork in #3550
- chore(dependencies): update uv.lock by @imstevenpmwork in #3475
- chore(deps): allow torch 2.11/2.12 and fix autocast deprecation by @shoumikhin in #3435
- fix(datasets): close file handle on VideoDecoder init failure in cache by @jashshah999 in #3542
- docs: add policy & compute guide by @imstevenpmwork in #3534
- docs(omx): adding some examples and scripts by @Maximellerbach in #3566
- chore(deps): cap torch ceiling at <2.12, pin Linux wheels to cu128 by @imstevenpmwork in #3570
- RL stack refactoring by @s1lent4gnt in #3075
- fix(datasets): expand torchcodec platform coverage + rewrite pyav fallback for torchvision >0.26 by @imstevenpmwork in #3588
- feat(episodes): adding support for metadata based episodes filtering by @CarolinePascal in #3530
- chore(dependencies): update uv.lock by @imstevenpmwork in #3561
- Fix policy.path not working in YAML config files by @jashshah999 in #3145
- fix(config): add lora_alpha to PeftConfig by @wadeKeith in #3573
- docs(quickstart): adding rollout by @NikodemBartnik in #3598
- add comprehensive CLI cheat sheet for quick reference by @NikodemBartnik in #3602
- feat(encoding parameters): adding support for user provided video encoding parameters by @CarolinePascal in #3455
- fix(pi05): update pi05 with transformers v5.4.0 scaled PaliGemma embeddings by @HaomingSong in #3603
- Allow zero-shot reward configs without optimizer presets by @s1lent4gnt in #3625
- Mention the new Lance LeRobotDataset implementation in the docs by @lhoestq in #3609
- feat(robots): natively integrate Seeed Studio reBot B601-DM arm by @pkooij in #3624
- Set OpenCV fourcc after size and fps by @von-Neumann101 in #3620
- Add extensive language support by @pkooij in #3467
- feat(video re-encoding): Adding utility and dataset edition tool for video re-encoding by @CarolinePascal in #3611
- fix(datasets): normalize shape=(1,) numeric values before HF encoding by @SevenFo in #3344
- fix(datasets): bound VideoDecoderCache to prevent OOM on large datasets by @rzninvo in #3614
- Feat/clean can bus by @Virgileboat in #3526
- refactor(rewards) : support custom progress parquet overlays by @s1lent4gnt in #3640
- fix api examples by @NikodemBartnik in #3623
- fix(pi0, pi05): stabilize torch.compile and expand test coverage by @HaomingSong in #3610
- fix(groot): align GR00TN15Config with transformers config dataclasses by @HaomingSong in #3606
- fix(deps): cap placo below 0.9.16 and harden kinematics import by @pkooij in #3647
- fix(configs): make policy.path in YAML work without a type discriminator by @reeceomahoney in #3597
- fix(groot): support Transformers 5.4+ Eagle Flash Attention initialization by @HaomingSong in #3652
- feat(rewards): add TOPReward reward model by @s1lent4gnt in #3629
- Add MolmoAct2 policy by @hq-fang in #3604
- feat(rewards): add ROBOMETER reward model by @s1lent4gnt in #3627
- fix(datasets): default private to None in push_to_hub by @s1lent4gnt in #3713
- fix(train): enable relative action overrides for pretrained processors by @HaomingSong in #3711
- Docs/add lelab by @NikodemBartnik in #3707
- docs: fix broken dataset script paths (datasets/v30 -> scripts) by @jpatel3 in #3695
- feat(policies): add VLA-JEPA by @Maximellerbach in #3568
- feat(rollout): adding episodic strategy by @Maximellerbach in #3717
- feat(processor): Add in-memory processor pipeline serialization by @AdilZouitine in #3732
- fix(pyproject): adding ceiling bound on mujoco (<3.9.0) by @CarolinePascal in #3751
- Revert "fix(pyproject): adding ceiling bound on mujoco (<3.9.0)" by @imstevenpmwork in #3754
- chore(dependecies): update mujoco transitives by @imstevenpmwork in #3756
- fix(train): synchronize EpisodeAwareSampler shuffling across ranks and gate dataset download per node by @pkooij in #3768
- chore: update readme by @imstevenpmwork in #3774
- feat(training): bump accelerate + use reduction types for tracked metrics in a multi rank setup by @imstevenpmwork in #3773
- chore(deps): relax
grpcio/protobuf/wandbbounds by @imstevenpmwork in #3777 - feat(trim): adding optional trimming option in reencode_video by @CarolinePascal in #3779
- feat(datasets): deterministic, resumable shuffling for EpisodeAwareSampler by @pkooij in #3769
- Docs/model card improvements by @NikodemBartnik in #3634
- feat: language annotation pipeline by @pkooij in #3471
- feat(edit-dataset): add
concatenate_videosopt-out to merge by @Ace3Z in #3663 - fix(datasets): avoid uint8 overflow in image stats by @Altman-conquer in #3697
- refactor(robots): homogenize bi-manual setups implementations by @imstevenpmwork in #3772
- chore(dependencies): update uv.lock by @imstevenpmwork in #3595
- fix(images/videos): fixing aggregate_pipeline_dataset_features to avoid unwanted images features deletion by @CarolinePascal in #3783
- fix(datasets): enforce one parquet row group per episode in v3 data writes by @pkooij in #3807
- fix(features copy): adding deepcopy on LeRobot dataset features to avoid shallow copy leaks by @CarolinePascal in #3826
- fix(cameras): snapshot stop_event in read loops to avoid None deref by @CarolinePascal in #3812
- fix(image transforms): cleaning up image_transforms implementation by @CarolinePascal in #3829
- docs: add LeLab web interface to README by @nicolas-rabault in #3831
- Add third-party env plugin discovery by @s1lent4gnt in #3823
- Fix batch wandb logging metrics and handle scalar stats by @s1lent4gnt in #3821
- Add pretrained_revision to pin Hub model versions by @s1lent4gnt in #3820
- fix(policies): support offline batch inference for ACT and Diffusion by @s1lent4gnt in #3822
- feat(train): FSDP checkpoint saving by @Maximellerbach in #3810
- Record eval rollouts as LeRobot datasets by @s1lent4gnt in #3825
- fix(deps): pin cmeel-urdfdom <5 and cmeel-tinyxml2 <11 in placo-dep by @jiwenc-nv in #3873
- Fix pi0fast model id in docs by @AlexandreEDMOND in #3855
- docs: fix ACT policy type examples by @someone114514 in #3792
- feat(utils): display-independent keyboard controls for recording (Wayland / headless / macOS) by @imstevenpmwork in #3875
- Update follower arm description in documentation by @hazzelnut in #3780
- refactor(policies): clean MolmoAct2 by @s1lent4gnt in #3724
- Add inline offline validation with train/eval split by @s1lent4gnt in #3824
- feat(depth maps): adding support for depth in LeRobot by @CarolinePascal in #3644
- feat(dependencies): bump rerun-sdk to
<0.34.0by @CarolinePascal in #3763 - feat(train): run training remotely on HF Jobs via --job.target by @nicolas-rabault in #3856
- refactor(vla-jepa): removing gpu roundtrip by @Maximellerbach in #3750
- Enable MolmoAct2 rollout on SO-100/101 with calibration correction by @s1lent4gnt in #3879
- Feat(robot): add MIT control mode to ReBot by @s1lent4gnt in #3778
- fix(datasets dependency): removing datasets dependency in pretrained.py by @CarolinePascal in #3897
- feat(policies): Add FastWAM Policy by @Maximellerbach in #3834
- perf(tests): cache draccus docstring extraction to fix Fast Tests regression by @nicolas-rabault in #3903
- feat(visualization): add foxglove support by @imstevenpmwork in #3902
- feat(libaom-av1): adding support for libaom-av1 codec library by @CarolinePascal in #3898
- fix(depth unit): adding input depth unit storage in the dataset metadata by @CarolinePascal in #3899
- fix(save codec options): making sure codec options are always set via
set_ifby @CarolinePascal in #3910 - fix(train): drive Accelerate mixed precision from policy.dtype by @pkooij in #3912
- Docs/improve HF jobs documentation by @NikodemBartnik in #3909
- LingBot-VA: video-action world model by @pkooij in #3731
- feat(policies): add Gr00t N1.7 policy by @imstevenpmwork in #3922
- feat(policies): add EVO1 policy by @imstevenpmwork in #3908
- chore(infra): remove requirements files by @imstevenpmwork in #3925
- chore(dependencies): update uv.lock by @imstevenpmwork in #3816
- chore(docs): update readme + gr00t libero results by @imstevenpmwork in #3941
- feat(examples): add Isaac Teleop → SO-101 teleoperation and dataset recording example by @CarolinePascal in #3927
- docs(prettier): making video encoding parameters docs prettier by @CarolinePascal in #3911
- chore(dependencies): update uv.lock by @imstevenpmwork in #3928
- chore(dependencies): Bump lerobot to 0.6.0 by @imstevenpmwork in #3956
New Contributors
- @hf-security-analysis[bot] made their first contribution in #3333
- @EPronovost made their first contribution in #3147
- @mtiezzi made their first contribution in #3182
- @remete618 made their first contribution in #3273
- @rtrompier made their first contribution in #3386
- @wadeKeith made their first contribution in #3240
- @hello3x3 made their first contribution in #3279
- @Defalt-Meh made their first contribution in #3167
- @kuafou made their first contribution in #3291
- @ChuyaoShen made their first contribution in #3414
- @shoumikhin made their first contribution in #3435
- @NikodemBartnik made their first contribution in #3598
- @von-Neumann101 made their first contribution in #3620
- @rzninvo made their first contribution in #3614
- @Virgileboat made their first contribution in #3526
- @hq-fang made their first contribution in #3604
- @jpatel3 made their first contribution in #3695
- @Ace3Z made their first contribution in #3663
- @jiwenc-nv made their first contribution in #3873
- @AlexandreEDMOND made their first contribution in #3855
- @someone114514 made their first contribution in #3792
- @hazzelnut made their first contribution in #3780
Full Changelog: v0.5.1...v0.6.0