A workflow described by the authors shows how a single Strands Robots agent can record demonstrations, stream the resulting LeRobot dataset from a Hugging Face Storage Bucket, train on it without a full local copy, and deploy the resulting checkpoint back to hardware. The process keeps the on-disk LeRobot format intact throughout the loop.
How the streaming loop works
The loop runs with one Robot() instance that both records and reads datasets. Recordings are written in LeRobot format and synced into a mutable, non-versioned Storage Bucket (Xet-backed), announced in March 2026. The agent can stream the dataset back frame-by-frame from the bucket and decode camera video on the fly, so training jobs can read frames directly from the Hub rather than copying the entire dataset to GPU hosts first.
The authors show a minimal code path using Robot(“so100”) and an Agent to record, sync, stream, and retrain, and note that the same factory supports multiple embodiments such as the SO-100 and SO-101. LeRobot’s dataset format is reported in the LeRobot Project Pulse as being used by over 90,000 datasets and models on the Hub from more than 8,000 publishers, so recordings are readable by existing LeRobot-compatible tools without conversion.
Security, scope and cleanup
The authors emphasize several operational risks. Prompt injection can arise if untrusted data is provided to an agent that controls tools; they recommend restricting agent tools when input cannot be trusted. Buckets overwrite in place and retain no revisions, so each collection run should use an explicit run_id and sensitive credentials should be scoped to the writing namespace. For auditability, push_to_hub() should be used for artifacts that must retain revision history.
Other cautions include scoping hf CLI tokens to specific namespaces, using private buckets for collection data, and limiting trust_remote_code usage to organizations that are trusted. Where available, safetensors-format checkpoints are preferred because model weights may contain arbitrary code.
Cleanup steps are concrete: remove bucket contents when no longer needed, delete temporary /tmp datasets, and stop any active GPU instances. The authors provide notebooks and example scripts (for example examples/notebooks/05_streaming_data_loop.ipynb and examples/06_agent_collect_and_stream.py) and document required software versions and extras such as Python 3.12+, strands-robots[sim-mujoco,lerobot]>=0.5.1, LeRobot >=0.6.1, and huggingface-hub >=1.6.0 for bucket operations.
Original source: Hugging Face Blog