Open-source real-world RL toolkit for LeRobot101 (SO101), with continuous model, algorithm, and dataset releases.
LeRobot101 is live now. AgileX PiPER robot-arm support is coming soon.
Project Website • Reproduce Current Release • Community Program • WeChat Draft (ZH)
Evo-RL is a continuous open-source program, not a one-time demo release.
- Current platform: LeRobot101 / SO101.
- Next platform: AgileX PiPER robot arms (coming soon, https://www.agilex.ai/).
- Goal: build a community where tasks on both platforms can be uploaded, reproduced, and benchmarked with shared protocols.
- To our knowledge (within current open-source LeRobot ecosystem), Evo-RL is the first project continuously pushing real-world RL releases on LeRobot101.
- End-to-end loop already implemented: data collection -> value -> indicator -> policy -> real-world re-collection.
- Engineering-first design: intervention/outcome labels, dataset quality report, indicator-conditioned training integration, and reproducible CLI chain.
- Community-first roadmap: open task uploads and cross-platform benchmark evolution.
As of commit 852b23cb (2026-02-26), compared to main, core RL tooling includes:
101core files changed (websiteand outreach files excluded)+6336 / -3224lines- New CLIs:
lerobot-human-inloop-recordlerobot-dataset-reportlerobot-value-trainlerobot-value-infer
- Indicator-conditioned policy path integrated into
lerobot-train - Value/advantage/indicator write-back pipeline for iterative real-world training
Recompute stats with:
git diff --shortstat main..kye/main -- . \
':(exclude)website' \
':(exclude)docs/outreach' \
':(exclude).github/workflows/deploy-website-pages.yml' \
':(exclude)README.md'[HIL collection on real robot]
|
v
[Dataset quality report]
|
v
[Value training]
|
v
[Value / Advantage / Indicator annotation]
|
v
[Indicator-conditioned policy training]
|
v
[Real-world rollout + next iteration]
- Ubuntu 22.04
- Python 3.10
- CUDA 12.x class environment
- SO-series leader/follower arm + USB camera (640x480@30)
git clone https://github.com/Elvin-yk/evo-lerobot.git
cd evo-lerobot
conda activate lerobot
pip install -e .
pip install -e ".[pi]" # value pipeline deps
pip install -e ".[feetech]" # SO101 related depsexport DATASET_REPO_ID=<your_dataset_repo_id>
export DATASET_ROOT=~/.cache/huggingface/lerobotlerobot-find-port
lerobot-find-camerasConfirm:
- Correct follower/leader serial ports
- Correct camera index/path
- Current user has serial device permission
lerobot-human-inloop-record \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--teleop.type=so100_leader \
--teleop.port=/dev/ttyACM1 \
--dataset.repo_id=${DATASET_REPO_ID} \
--dataset.root=${DATASET_ROOT} \
--dataset.single_task="Pick and place the red block" \
--dataset.num_episodes=20 \
--dataset.push_to_hub=falseHotkeys:
i: toggle interventions: mark success and end episodef: mark failure and end episode
lerobot-dataset-report --dataset ${DATASET_REPO_ID} --root ${DATASET_ROOT}
lerobot-dataset-report --dataset ${DATASET_REPO_ID} --root ${DATASET_ROOT} --jsonExpected output:
- Terminal report with success/failure/intervention metrics
- JSON report for logging and experiment cards
lerobot-value-train \
--dataset.repo_id=${DATASET_REPO_ID} \
--dataset.root=${DATASET_ROOT} \
--dataset.download_videos=true \
--value.type=pistar06 \
--batch_size=16 \
--steps=2000 \
--output_dir=outputs/value_train/evo_value_demo \
--job_name=evo_value_demoExpected output:
- Value checkpoints under
outputs/value_train/evo_value_demo
lerobot-value-infer \
--dataset.repo_id=${DATASET_REPO_ID} \
--dataset.root=${DATASET_ROOT} \
--inference.checkpoint_path=outputs/value_train/evo_value_demo \
--inference.checkpoint_ref=last \
--runtime.batch_size=64 \
--acp.enable=trueExpected output:
- Dataset fields written/updated:
complementary_info.valuecomplementary_info.advantagecomplementary_info.acp_indicator
Optional visualization export:
lerobot-value-infer \
--dataset.repo_id=${DATASET_REPO_ID} \
--dataset.root=${DATASET_ROOT} \
--inference.checkpoint_path=outputs/value_train/evo_value_demo \
--inference.checkpoint_ref=last \
--acp.enable=true \
--viz.enable=true \
--viz.episodes=all \
--viz.output_dir=outputs/value_infer/vizCLI flags use --acp.*, where acp_indicator is the binary advantage-indicator field.
lerobot-train \
--dataset.repo_id=${DATASET_REPO_ID} \
--dataset.root=${DATASET_ROOT} \
--policy.type=pi05 \
--policy.pretrained_path=lerobot/pi05_base \
--acp.enable=true \
--acp.indicator_field=complementary_info.acp_indicator \
--steps=3000- Platform: dual-arm SO101 task iteration
- D0 dataset scale:
300episodes,413,134frames, ~3.82hat30 FPS - Internal observed trend:
100% data + Full FTforms a viable baseline in current setup
More benchmark cards and protocol details are published on the project website as releases progress.
We are opening a community track for tasks on:
- LeRobot101 (SO101)
- AgileX PiPER robot arms (coming soon, https://www.agilex.ai/)
Current submission flow:
- Open an Issue with task setup and success definition.
- Share dataset link + exact training/inference commands.
- Submit result table + short video for benchmark integration.
Project page is in website/:
cd website
python -m http.server 8000- This repository is LeRobot-derived and keeps the
lerobot-*CLI namespace. - Evo-RL extends upstream with real-world RL loop tooling and continuous release workflow.
@misc{evorl2026,
title = {Evo-RL: Continuous Open-Source Real-World RL on LeRobot101 and Beyond},
author = {Evo-RL Contributors},
year = {2026},
howpublished = {\url{https://github.com/Elvin-yk/evo-lerobot}}
}Apache-2.0. See LICENSE.