
LeRobot 0.6.1 gives robotics teams a dataset format, a plugin bus and 22 policies. It does not give you curation, fleet ops or API stability. What that costs, and who is actually shipping on it.
What you need to know
- •LeRobot 0.6.1 shipped on 3 August 2026. It is Apache-2.0, needs Python 3.12 or newer, and installs as a deliberately thin core plus named extras such as lerobot[training] or lerobot[smolvla].
- •What you get: one dataset format, one Robot interface with a plugin bus, twenty-two policy implementations across five families, and four CLI commands that behave the same on every supported arm.
- •What you do not get: dataset curation, fleet management, checkpoint governance, a safety layer, or API stability across minor versions.
- •Adoption is checkable rather than anecdotal. The Hugging Face Hub listed 72,437 datasets under the LeRobot tag when we counted on 24 August 2026, and NVIDIA, Physical Intelligence, the Allen Institute for AI and Toyota Research Institute all ship policy code inside the repo.
- •The cost nobody budgets for is the version tax. v0.6.0 removed GR00T N1.5, split the install into extras, renamed several flags and raised the PyTorch floor, all in one release.
- •AY-Robots wraps the same LeRobot data path end to end: record with the desktop client, fine-tune on a rented GPU, serve the checkpoint back to the arm. It does not remove the version tax, it just moves it off your laptop.
If you are starting a robotics company in 2026 and you are not writing your own motor bus driver, your stack probably begins with huggingface/lerobot. That is not a marketing claim. It is what the dependency graph looks like: NVIDIA ships GR00T inside it, Physical Intelligence's Pi0 family has a reference implementation in it, and the tag on the Hugging Face Hub that identifies a robot dataset is literally the string LeRobot.
This article covers what the library actually hands you, what it very deliberately does not, and who is demonstrably building on it. Everything below was checked against the repo, the docs and the package index on 24 August 2026. Where upstream has changed, the version is named. If you want the shorter product-level version first, the five policies AY-Robots can train and the model and arm matrix are the practical entry points.
What LeRobot is, precisely, in August 2026
| Property | Value | Checked how |
|---|---|---|
| Latest release | v0.6.1, published 3 August 2026 | GitHub releases API |
| Previous release | v0.6.0, published 6 July 2026 | GitHub releases API |
| Licence | Apache-2.0 | repo metadata and PyPI |
| Python requirement | >= 3.12 | PyPI requires_python for lerobot 0.6.1 |
| Stars / forks | 26,865 / 5,458 | GitHub repo API, 24 August 2026 |
| Contributors | 252 | GitHub contributors API |
| Open issues and pull requests | 816 | GitHub repo API |
| Repo created | 26 January 2024 | GitHub repo API |
| Dataset format | LeRobotDataset v3.0 (Parquet plus MP4) | repo README |
| Reference paper | arXiv 2602.22818, submitted 26 February 2026 | arXiv listing |
Two of those numbers deserve a second look. 816 open issues and pull requests against 252 contributors is a healthy, busy project, not a finished one. And Python >= 3.12 is a hard floor as of 0.6.1, which is the single most common reason a team's existing robot control machine cannot just `pip install lerobot` on Monday morning.
Since v0.6.0, pip install lerobot pulls only core ML dependencies: PyTorch, torchvision, numpy, opencv, einops, draccus, huggingface-hub, gymnasium, safetensors. Everything else is behind an extra. Recording needs lerobot[core_scripts], training needs lerobot[training], and each policy family has its own tag such as lerobot[smolvla], lerobot[pi] or lerobot[groot]. If you upgraded from 0.5.x and your training script suddenly cannot find accelerate, this is why.
The four things the stack actually gives you
1. A dataset format that other people already speak
The LeRobot dataset format is the part of the stack with the highest leverage. An episode is stored as synchronised MP4 video plus Parquet columns for state and action, with metadata that names each joint and camera. Because the format is fixed, a dataset recorded on somebody else's SO-100 loads in your training script without a converter.
from lerobot.datasets.lerobot_dataset import LeRobotDataset
# Streams straight from the Hugging Face Hub, decodes video for you
dataset = LeRobotDataset("lerobot/aloha_mobile_cabinet")
episode_index = 0
print(f"{dataset[episode_index]['action'].shape=}")
print(dataset.features.keys()) # observation.state, observation.images.*, action, ...
print(dataset.num_frames, dataset.fps)Recorded datasets land in ~/.cache/huggingface/lerobot/{repo-id} before upload, and lerobot-record tags every pushed dataset with LeRobot automatically, which is how the Hub listing stays findable. If you want to see what a public catalogue of these looks like without a Hub account, the AY-Robots dataset directory lists the public ones.
2. One Robot interface, plus a plugin bus that third parties actually use
Natively supported hardware in 0.6.1 is SO100, LeKiwi, Koch, HopeJR, OMX, EarthRover, Reachy2, gamepads, keyboards, phones, OpenARM, Unitree G1 and reBot B601. That list is not the interesting part. The interesting part is the discovery rule: LeRobot imports any installed package whose name starts with lerobot_robot_, lerobot_teleoperator_ or lerobot_camera_, and the type it registers becomes available to every CLI command immediately.
# Install a vendor plugin, then use it like built-in hardware
pip install lerobot_robot_<name> lerobot_teleoperator_<name>
lerobot-record \
--robot.type=<robot_name> \
--teleop.type=<teleoperator_name> \
--dataset.repo_id=${HF_USER}/my-dataset \
--dataset.num_episodes=5This is why the hardware list in the docs undersells reach. The official third-party page names integrations maintained by the vendors themselves, which is the clearest available signal of who is invested in the stack:
| Vendor or project | Package | Hardware |
|---|---|---|
| UFACTORY | lerobot-robot-xarm | xArm collaborative arm series |
| Universal Robots (community) | lerobot_robot_ur5e | UR5e over RTDE with a Robotiq gripper |
| Trossen Robotics | lerobot_trossen | WidowX and ALOHA-style arms |
| AgileX (two independent plugins) | lerobot_robot_piper | Piper arm, one with multi-arm teleop and safety limits |
| I2RT | lerobot_yam, lerobot_teleoperator_yamactiveleader | YAM arm plus bilateral force-feedback leader |
| ROBOTIS | lerobot_teleoperator_omy | OMY-L100 six degree-of-freedom leader |
| Lebai | lerobot_lebai | six-axis collaborative arms |
| ugo | lerobot-robot-ugo-pro | ugo Pro dual-arm service robot |
| The Robot Learning Company | trlc-dk1 | single and bimanual development kit |
| Haply / Force Dimension | lerobot_teleoperator_inverse3, lerobot_teleoperator_omega7 | force-feedback haptic teleoperation |
| 3Dconnexion | lerobot-teleoperator-spacemouse | SpaceMouse with IK for SO-ARM robots |
| ROS 2 community | leros2, lerobot_robot_ros2_zenoh | bridges ROS 2 topics and actions into LeRobot |
3. Policy implementations you did not have to write
As of the 0.6.1 README, LeRobot carries twenty-two model implementations across five families. For a company, the value is not that they are state of the art; it is that they share one config system, one training loop and one checkpoint layout, so switching from a small imitation learning baseline to a large vision-language-action model is a flag change rather than a rewrite.
| Family | Models in lerobot 0.6.1 | Origin |
|---|---|---|
| Imitation learning | ACT, Diffusion, VQ-BeT, Multitask DiT | ACT comes from the Stanford ALOHA work; Multitask DiT follows Toyota Research Institute's Large Behavior Models recipe |
| Reinforcement learning | HIL-SERL, TDMPC (QC-FQL listed as coming) | academic reinforcement learning work; QC-FQL is listed but not shipped |
| Vision-language-action | Pi0, Pi0Fast, Pi0.5, GR00T N1.7, SmolVLA, XVLA, EO-1, MolmoAct2, WALL-OSS, EVO1 | Physical Intelligence (Pi0 family), NVIDIA (GR00T), Hugging Face (SmolVLA), Allen Institute for AI (MolmoAct2), X Square Robot (WALL-OSS) |
| World models | VLA-JEPA, LingBot-VA, FastWAM | added in v0.6.0, July 2026 |
| Reward models | SARM, TOPReward, Robometer | Robometer pretrained on more than one million robot trajectories |
AY-Robots trains five of these as managed jobs, and the ACT, SmolVLA, Pi0.5 and GR00T N1.7 pages carry the parameter counts, GPU tiers and measured per-step latency side by side. If you want the wider research picture instead, the model arena compares 85 VLA models across 332 benchmark results with every value linked to its source.
4. Four commands that are identical on every arm
Teleoperate, record, train, deploy. The teleoperation loop and the recording loop are the same code path, which is the reason a demonstration you can drive is a demonstration you can store.
- 1Teleoperate to check the arm and the cameras
The
idis what the calibration file is keyed on. Use the same id for recording and deployment or the joint offsets will be wrong and nothing downstream will make sense.bashlerobot-teleoperate \ --robot.type=so101_follower \ --robot.port=/dev/tty.usbmodem5AB90687491 \ --robot.id=my_follower_arm \ --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \ --teleop.type=so101_leader \ --teleop.port=/dev/tty.usbmodem5AB90689011 \ --teleop.id=my_leader_arm \ --display_data=true - 2Record a dataset
Defaults matter here:
--dataset.episode_time_sis 60 seconds,--dataset.reset_time_sis 60 seconds and--dataset.num_episodesis 50. During recording, the right arrow ornends an episode early, the left arrow orrre-records it, andESCorqstops and encodes.bashlerobot-record \ --robot.type=so101_follower \ --robot.port=/dev/tty.usbmodem585A0076841 \ --robot.id=my_follower_arm \ --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 1920, height: 1080, fps: 30}}" \ --teleop.type=so101_leader \ --teleop.port=/dev/tty.usbmodem58760431551 \ --teleop.id=my_leader_arm \ --dataset.repo_id=${HF_USER}/record-test \ --dataset.num_episodes=50 \ --dataset.single_task="Grab the black cube" \ --dataset.streaming_encoding=true - 3Train a policy
The policy adapts itself to the number of joints and cameras stored in your dataset, so the same command works across arms. Add
--job.target=a10g-smallto run it on Hugging Face Jobs instead of your own machine.bashlerobot-train \ --dataset.repo_id=${HF_USER}/so101_test \ --policy.type=act \ --output_dir=outputs/train/act_so101_test \ --job_name=act_so101_test \ --policy.device=cuda \ --wandb.enable=true \ --policy.repo_id=${HF_USER}/my_policy - 4Deploy and evaluate on the real arm
lerobot-rolloutreplaced the ad hoc eval scripts.--strategy.typeselectsbase(no recording),sentry(continuous recording with auto-upload),highlight(ring buffer plus keystroke save),dagger(human in the loop) orepisodic. Slow VLAs want--inference.type=rtc.bashlerobot-rollout \ --strategy.type=base \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \ --task="Put lego brick into the transparent box" \ --duration=60

Who is actually building on it
Adoption claims in robotics are usually unfalsifiable. These are not, because each one leaves an artefact you can open:
| Organisation | What they put into LeRobot | Where to check |
|---|---|---|
| NVIDIA | GR00T N1.7 policy plus Isaac Teleop for data collection, announced 6 July 2026; Cosmos 3 flagged as future work | nvidia/GR00T-N1.7-3B on the Hub, policy_groot docs in the repo |
| Physical Intelligence | Pi0, Pi0-FAST and Pi0.5 reference implementations; lerobot/pi05_base is the base checkpoint Pi0.5 fine-tunes start from | lerobot[pi] extra, lerobot/pi05_base model page |
| Hugging Face | SmolVLA, 450M parameters, pretrained on 487 curated community datasets | SmolVLA release blog (the 487 count); paper arXiv 2506.01844 |
| Allen Institute for AI | MolmoAct2 policy, added in v0.6.0 | v0.6.0 release notes and lerobot[molmoact2] extra |
| Toyota Research Institute | Multitask DiT, following the Large Behavior Models recipe | v0.6.0 release blog |
| Pollen Robotics | Reachy 2 is a natively supported robot; Hugging Face acquired the company in April 2025 | Reachy 2 page in the LeRobot docs; TechCrunch, 14 April 2025 |
| Yaak | L2D, a driving dataset published in LeRobotDataset v3.0 format | yaak-ai/L2D on the Hub |
| A dozen arm vendors | Self-maintained plugins for xArm, UR5e, WidowX, Piper, YAM, OMY, Lebai and others | third-party robots page in the docs |
The most useful adoption number is the dumbest one. The Hub listing for the LeRobot tag reported 72,437 datasets when we counted it on 24 August 2026. The lerobot organisation itself hosts only 66 models and 188 datasets, so the overwhelming majority of that is community and company data rather than anything the core team published. A chunk of the first wave came from the worldwide LeRobot hackathon of 14 and 15 June 2025, whose Hub organisation still carries 992 members, 190 datasets and 12 models.

That is the honest shape of the ecosystem: a very large pile of hobby and hackathon data, a much smaller pile of curated company data, and a handful of vendors treating the plugin bus as a distribution channel. If you are collecting your own, what makes a dataset trainable matters far more than how many megabytes you have.
What LeRobot does not give you
This is the section that decides whether you ship. LeRobot is a research-grade library that is very good at the first mile. Everything after the first working policy is your problem.
- Apache-2.0, so no licence conversation with your lawyer before a pilot.
- The dataset format is the de facto interchange standard, which means partner data and public data drop in without conversion work.
- Twenty-two policies behind one config system, so model choice stops being an engineering commitment.
- Vendor plugins mean you can change arm supplier without changing your recording pipeline.
- The four CLI commands are genuinely arm-agnostic, so a second robot costs you a port string, not a sprint.
- Upstream moves fast: world models, reward models and six simulation benchmarks all landed in a single July 2026 release.
- No curation. Hugging Face filtered the community pile down to 487 usable datasets to pretrain SmolVLA. That filtering was their work, not the library's.
- No fleet management, no device inventory, no calibration registry across machines. Calibration lives in a local file keyed by
--robot.id. - No checkpoint governance. Which run produced which checkpoint on which data is whatever your naming convention says it is.
- No safety layer. There is no watchdog, no joint-limit supervisor and no emergency-stop abstraction in the library.
- API stability is not promised between minor versions. v0.6.0 alone removed GR00T N1.5, renamed
eval_freq, renamed--dataset.vcodec, replaced thesacpolicy type and raised the PyTorch floor to 2.7. - Python 3.12 or newer is mandatory, which excludes a lot of existing robot control machines and most ROS 1 era images.
| Gap | What it costs you | What teams do about it |
|---|---|---|
| Dataset quality control | Episodes with empty task strings, single-frame episodes, camera keys that mean different things in different datasets | Write a validator that runs before training; check episode length distribution and camera key consistency |
| Experiment tracking | Weights and Biases is wired in, lineage is not | Store the dataset commit sha next to the checkpoint; treat train_config.json as the record |
| Evaluation on real hardware | lerobot-rollout runs the policy, it does not score it | Define a success criterion and a fixed reset procedure before the first run |
| Multi-user access | One machine, one operator, one USB tree | Either build a scheduler or use a platform that already has one |
| GPU procurement | Local card or a Hugging Face Job, both of which you manage | Managed spot rental, or accept the queueing |
| Latency budgeting | Nothing warns you that your policy is too slow for the task | Measure per-step time before you design the task |
GR00T is the clearest example of a problem that recurs across the VLA ecosystem. NVIDIA's original gr00t package pins transformers==4.57.3. LeRobot's GR00T N1.7 integration requires transformers>=5.x for the Qwen3-VL backbone. Under transformers 5.x the original config dataclasses fail to import outright, so the two implementations cannot be imported in the same Python process. LeRobot's own parity test works around it with two separate virtualenvs and a producer/consumer split. If you plan to compare an upstream reference against the LeRobot port, budget for two environments from the start, not after you have spent a day on non-default argument follows default argument. Related: GR00T N1.5 support was removed entirely, and lerobot==0.5.1 is the last release that has it.
# Pin hard. A robotics repo that floats its lerobot version will break
# on a Tuesday for reasons unrelated to your code.
pip install 'lerobot[core_scripts,training,smolvla]==0.6.1'
# On Linux the CUDA wheel depends on the install path, and this bites people:
# uv source install -> torch pinned to cu128, driver floor 570.86
# pip install lerobot -> PyPI default is a cu130 wheel, driver floor 580.65
# If your driver is older than 580.65, install torch explicitly first.
pip install --index-url https://download.pytorch.org/whl/cu128 torch torchvision
pip install 'lerobot[core_scripts,training]==0.6.1'The dataset format itself is a moving target too. LeRobotDataset v3.0 packs many episodes per file and moved metadata to Parquet; several trainers, including NVIDIA's GR00T loader, still expect v2.1 and crash on v3.0. The wider model landscape is in the VLA overview, and this particular failure has its own page at dataset rejected as v3. On AY-Robots the conversion happens in the pipeline, which is a small thing that stops being small the third time it happens to you.
Same goal, two routes
You own an arm, a workstation with a 24 GB card or a cloud account, and a week. This is the correct path if your hardware is unusual, if your data cannot leave your network, or if you intend to modify the policy code.
- 1Environment
Python 3.12, then install only the extras you need. Add
ffmpegfrom conda-forge unless you are on PyTorch 2.10 or newer, where a system ffmpeg works.bashconda create -y -n lerobot python=3.12 conda activate lerobot conda install ffmpeg -c conda-forge pip install 'lerobot[core_scripts,training,feetech]==0.6.1' lerobot-info - 2Record 50 episodes
The docs recommend at least 50 episodes, roughly 10 per object location, with fixed cameras and consistent grasping. Add variation only after the simple version works.
bashhf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}') lerobot-record \ --robot.type=so100_follower --robot.port=/dev/ttyACM0 --robot.id=arm_a \ --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 --teleop.id=leader_a \ --dataset.repo_id=${HF_USER}/pick-cube --dataset.num_episodes=50 \ --dataset.single_task="Pick up the cube and drop it in the bin" - 3Train
Locally on a 24 GB card, or on a Hugging Face Job. ACT on ~45k frames for 5 epochs is roughly 30 to 60 minutes on a single RTX 4090 according to the upstream compute guide; SmolVLA on an L4 is roughly 3 to 6 hours.
bashlerobot-train \ --dataset.repo_id=${HF_USER}/pick-cube \ --policy.type=act \ --policy.repo_id=${HF_USER}/act_pick_cube \ --policy.device=cuda \ --job.target=a10g-small # omit to train locally - 4Deploy
Run the checkpoint on the arm, then decide honestly whether it worked. Nothing in the library will tell you.
bashlerobot-rollout --strategy.type=base \ --policy.path=${HF_USER}/act_pick_cube \ --robot.type=so100_follower --robot.port=/dev/ttyACM0 --robot.id=arm_a \ --task="Pick up the cube and drop it in the bin" --duration=120
The training run is the cheap, visible part. The invisible parts are USB enumeration on your control machine, camera indices that change on reboot, calibration drift on Feetech servos, and the fact that a Hugging Face Job defaults to a 2d (48 hour) timeout, so a stuck run bills for two days unless you pass --job.timeout=4h.
Same LeRobot format, same policies, with the operational layer already built. You record with the desktop client, which writes LeRobot-format datasets straight out of a teleop session, then pick a model and a dataset in the training form. The backend rents a GPU on a spot market sized by the VRAM the policy needs, runs the trainer and writes checkpoints to object storage.
- Datasets can come from the desktop client, from a Hugging Face repo id, or from your own machine. The public directory is there if you want to train on somebody else's data first.
- Five policies are trainable: GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA and ACT. GR00T and Pi0.5 are cloud-only; SmolVLA and ACT also run locally.
- Inference pods auto-provision, serve the policy and destroy themselves after an idle period, so a forgotten pod does not bill quietly.
- The same operations are exposed to a terminal via the CLI and to AI agents via the MCP server.
- No hardware yet? A physical arm streams at /live with no signup, and /try lays out the three ways to start.
It does not maintain your fork of lerobot, and it does not pin your dependency tree. If your robot is not one of the four supported arms (SO-100, SO-101, Koch v1.1, LeKiwi), the teleoperation and recording path will not cover it and you are back to LeRobot's plugin bus. It cannot make remote inference fast enough for reactive motion either. And it will not tell you your task was badly chosen, which remains the most common reason a policy fails.
What a training run costs, either way
Cost is where the two routes stop looking similar. Upstream, you either own the card or you submit a Hugging Face Job and pay by the second against flavours such as t4-small, l4x1, a10g-large or a100-large. On AY-Robots the GPU is rented on a spot market by required VRAM, so the number is a range rather than a price.
| Policy | Parameters | GPU tier | Per action step | Min episodes | Typical AY-Robots run |
|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, ~40 M trained during fine-tuning | A100 80 GB or H100 80 GB | 152 ms | 50 | 3 to 6 h, about 4 to 12 USD |
| GR00T N1.5 | ~3 B | A100 80 GB or H100 80 GB | 165 ms | 50 | 3 to 6 h, about 4 to 12 USD |
| Pi0.5 | ~3 B, PaliGemma backbone | A100 80 GB or H100 80 GB | 485 ms | 50 | 3 to 6 h, about 4 to 12 USD |
| SmolVLA | ~450 M | RTX 4090 or any 24 GB card | 245 ms | 30 | 2 to 5 h, about 1 to 3 USD |
| ACT | ~80 M | RTX 4090 or any 24 GB card | 20 ms | 50 | 2 to 5 h, about 1 to 3 USD |

One number to sanity-check yourself against: at 30 fps, 50 episodes of 30 seconds is about 45,000 frames, and robotics imitation learning typically converges in 5 to 10 epochs over the dataset rather than in hundreds of thousands of raw steps. If your step count implies 200 epochs, you are probably about to pay for overfitting. The pricing page and the training docs carry the platform-side detail.
The latency question, answered plainly
The honest limit of any cloud-served policy is inference latency. The five policies here sit between 20 ms and 485 ms per action step. Add a public-internet round trip to that and a working policy becomes a hesitant one. Remote inference is viable for slow pick-and-place. It is not viable for fast reactive motion, and no amount of engineering on the serving side changes that. If your task needs sub-100 ms closed-loop response, the model has to sit next to the servos.
LeRobot's own answer to part of this problem is asynchronous inference, introduced with SmolVLA: the robot keeps executing the current action chunk while the server is already computing the next one, so there are no idle frames waiting on the network. In the SmolVLA paper this finished tasks about 30 percent faster, 9.7 seconds against 13.75 seconds, and roughly doubled completions in a fixed time window.
# Terminal 1: the policy server (put this on the GPU machine)
python -m lerobot.async_inference.policy_server --host=127.0.0.1 --port=8080
# Terminal 2: the robot client (this one must sit next to the arm)
python -m lerobot.async_inference.robot_client \
--server_address=127.0.0.1:8080 \
--robot.type=so100_follower --robot.port=/dev/ttyACM0 --robot.id=arm_a \
--policy_type=smolvla \
--pretrained_name_or_path=lerobot/smolvla_base \
--policy_device=cuda \
--actions_per_chunk=50 \
--chunk_size_threshold=0.5 \
--debug_visualize_queue_size=TruePi0 occupies about 14 GB at inference time; SmolVLA needs roughly 2 GB. That gap is the whole edge-versus-cloud argument in one line. A 2 GB policy fits on hardware you can bolt to the robot, a 14 GB one usually does not, and once inference is remote you have bought yourself a network round trip on every chunk boundary.
So should you build on it
Yes, and then plan for the parts that are not there. LeRobot has won the interchange layer: the dataset format, the policy zoo and the plugin bus are all things you would otherwise build badly and maintain forever. It has not won the operations layer, and it is not trying to. Fleet state, data curation, checkpoint lineage, access control and GPU procurement are all still yours.
The practical pattern that works is: pin a version, keep your own thin wrapper around the four CLI commands, validate datasets before they reach a trainer, and treat every minor release as a migration with a test rather than a bump. If you would rather not run the operations layer at all, the recording walkthrough and first training run cover the managed version of the same path, and the SO-100 setup guide covers the hardware end. For the arm itself, SO-100 with LeRobot is the direct comparison of both routes on one robot.
Record LeRobot datasets without building the pipeline
The AY-Robots desktop client writes LeRobot-format datasets straight from a teleoperation session: episodes, camera streams and joint states, ready for GR00T, Pi0.5, SmolVLA or ACT. Same format the whole ecosystem reads.
Get the desktop clientIs LeRobot production ready?▾
It is production ready as a library and not as a platform. The dataset format, the policy implementations and the hardware abstraction are solid enough to build on, and companies including NVIDIA and Physical Intelligence ship code inside it. What is missing is everything operational: no fleet management, no dataset validation, no checkpoint lineage, no safety supervisor, and no API stability guarantee across minor versions. v0.6.0 in July 2026 removed GR00T N1.5 support, split the install into extras and renamed several flags in a single release. Pin your version and treat upgrades as migrations.
What licence is LeRobot and can I use it commercially?▾
LeRobot itself is Apache-2.0, both in the repository metadata and on PyPI, so commercial use is straightforward. The policies you load through it are a separate question. Each base checkpoint carries its own licence and its own terms, and some vendor backbones are gated on the Hugging Face Hub, meaning you need to accept terms on the model page before the weights download. Check the licence on each model card you intend to fine-tune, not just on the library.
Do I need a Hugging Face account to use LeRobot?▾
Not for local work. You can record, train and deploy entirely on disk. You need an account and a write token for three things: pushing a dataset or checkpoint to the Hub, downloading gated base checkpoints, and running training on Hugging Face Jobs. lerobot-record pushes to the Hub by default, so pass --dataset.push_to_hub=False if you want everything to stay local.
Which LeRobot version should I pin?▾
0.6.1, released 3 August 2026, is current as of this writing and requires Python 3.12 or newer. Pin it exactly, for example lerobot[core_scripts,training]==0.6.1. The one reason to stay on 0.5.1 is GR00T N1.5, which was removed in 0.6.0; 0.5.1 is the last release that supports it. Also note that lerobot 0.5.1 has no gradient accumulation flag for Pi0.5, so a config that sets one silently does nothing.
How many datasets are actually usable out of the public pile?▾
Far fewer than the raw count suggests. The Hub listed 72,437 datasets under the LeRobot tag on 24 August 2026, but when Hugging Face pretrained SmolVLA they filtered that pile down to 487 high-quality datasets, roughly 10 million frames from fewer than 30,000 episodes, using a custom filter on frame count, visual quality and task coverage plus manual review. Their own analysis lists the common defects: empty or placeholder task descriptions, camera keys such as images.laptop that mean different things in different datasets, single-frame episodes, and inconsistent action dimensions for the same robot type. Assume you will write a validator.
Can I run inference in the cloud and the robot at home?▾
For slow tasks, yes. For fast ones, no. Per-step latency for the policies here runs from 20 ms for ACT to 485 ms for Pi0.5, and a public-internet round trip is added on top of that at every chunk boundary. Asynchronous inference helps a lot, because the arm keeps executing the current action chunk while the next one is being computed, but it does not remove the round trip. If the task needs reactive correction rather than a smooth pre-planned trajectory, put the policy next to the servos.
Sources
- huggingface/lerobot: repository, README, supported hardware and policy list
- lerobot v0.6.0 release notes, including the full breaking-change list (6 July 2026)
- Hugging Face acquires Pollen Robotics, maker of Reachy 2 (14 April 2025)
- LeRobot: An Open-Source Library for End-to-End Robot Learning (arXiv 2602.22818)
- lerobot on PyPI: version 0.6.1, Python >= 3.12, Apache-2.0, full extras list
- LeRobot installation guide: extras, ffmpeg, and the CUDA wheel differences
- LeRobot imitation learning tutorial: record, train, rollout commands and defaults
- LeRobot compute and hardware guide: VRAM per policy group and wall-clock anchors
- Third-party robots and teleoperators: the vendor plugin directory
- LeRobot asynchronous inference: policy server, robot client, chunk tuning
- SmolVLA blog: 450M parameters, 487 curated community datasets, async results
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- LeRobot Community Datasets: the quality problems, in Hugging Face's own words
- LeRobot v0.6.0 release blog: world models, reward models, six benchmarks
- NVIDIA and Hugging Face bring new models and frameworks to LeRobot (6 July 2026)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started