Start here · Make data · Updated 2026-08-23
Recording is teleoperation with a tape running. The commands are simple; the habits are what separate data people thank you for from data that gets junk-flagged.
hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential
Note it is hf auth login in current tooling, not the older huggingface-cli command.
lerobot-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 \
--display_data=true \
--dataset.repo_id=YOURNAME/first-pick-place \
--dataset.num_episodes=10 \
--dataset.single_task="Pick up the black cube and place it in the bin"
During recording: right arrow or n ends an episode, left arrow or r re-records one, ESC or q stops everything, encodes, and uploads. Episodes default to 60 seconds. Full flag list in the official recording docs.
First, the task string: notice ours says exactly what happens, not "task desc". That sentence trains language models; treat it like product copy. Second, fixed cameras: clamp them, never nudge them mid-session, keep one wide view and add a wrist view when you can. Third, variation on purpose: the official guidance is 50 or more episodes with about 10 per object position. Move the cube between positions, not your camera.
Record 10 episodes today as your quality rehearsal, replay one with lerobot-replay to see what the robot saw, fix what bothers you, then push toward 50 in your next sessions with --resume=true.