Skip to content

Start

The ladder: six rungs from watching a captured agent run to a fleet with one e-stop, each ending with something you can show.

See it

Using a coding agent? Copy this prompt into Claude Code, Codex, Kiro, or any coding assistant and it will walk you through these pages.

Six rungs. Each page ends with a checkpoint: what you now have, and every python fence ran against this commit on a laptop with no GPU. Fences needing an arm on USB are noted in the text, not run.

Left column, top to bottom: a Strands Agent with the robot in its tools makes a tool call; it passes the operator gate, the one green element, where run_policy and send_action through the tool wait for a yes (an interrupt, fail closed without an operator, an audit row); after a yes it reaches Robot("so101"), the execution target and the tool, with run_policy, send_action, get_observation, get_state, render and status; a dashed result wire returns to the agent. Under the robot a dashed policy runtime layer holds create_policy, the embodiment map and the action chunk, fed by the observation and returning actions. Right column, the backends the same calls reach: simulation with MuJoCo, Newton or Isaac Sim; a hardware driver, lerobot or native; and a PolicyServer on a GPU host that a RemotePolicy talks to over a WebSocket. Footnote: one interface, get_observation, send_action, run_policy; the backend changes, the call does not.Left column, top to bottom: a Strands Agent with the robot in its tools makes a tool call; it passes the operator gate, the one green element, where run_policy and send_action through the tool wait for a yes (an interrupt, fail closed without an operator, an audit row); after a yes it reaches Robot("so101"), the execution target and the tool, with run_policy, send_action, get_observation, get_state, render and status; a dashed result wire returns to the agent. Under the robot a dashed policy runtime layer holds create_policy, the embodiment map and the action chunk, fed by the observation and returning actions. Right column, the backends the same calls reach: simulation with MuJoCo, Newton or Isaac Sim; a hardware driver, lerobot or native; and a PolicyServer on a GPU host that a RemotePolicy talks to over a WebSocket. Footnote: one interface, get_observation, send_action, run_policy; the backend changes, the call does not.
rung page time you need you leave with
0 See it 30 s nothing a recorded conversation: an agent builds a scene in the simulator, runs a policy on it, and must ask a person before it may drive the real arm
1 Install, Run it 3 min Python >=3.12 an SO-101 in MuJoCo: joints moved, state read, a frame saved, a cube on the table
2 Talk to it 10 min a model provider Agent(tools=[robot]), a sentence that moves the sim arm, the operator gate stopping a real one
3 Real arm 30 min an SO-101 on USB the port found, the driver rehearsed on the model, the two lines that move it, calibration, what is refused
3 Same checkpoint 15 min the sim, optionally the arm SmolVLA from the Hub driving the sim arm from three cameras, and the same run_policy call for the real one
4 Teach it a day a GPU for training a dataset recorded on the robot, a checkpoint trained from it, the checkpoint running back on the robot
5 Fleet a week two machines several robots on the mesh, one dashboard, one e-stop
Doctor 2 min strands-robots doctor: what each probe checks and what its verdict means

Rungs 4 and 5 are itineraries through the guides that hold them; every guide page they point at carries fences run against this commit.

Edit page