strands-robots gives a Strands Agent
hands. One Robot() call returns a MuJoCo simulation (default: no GPU, no
hardware) or a real robot - same code, same natural-language control, same
opt-in peer-to-peer mesh.
from strands import Agent
from strands_robots import Robot
robot = Robot("so100") # MuJoCo sim by default; mode="real" for hardware
Agent(tools=[robot])("pick up the red cube")uv pip install "strands-robots[sim-mujoco]" # plain pip works tooPython 3.12+. Everything else is an extra you pull in when you need it -
lerobot (hardware, local VLA inference, recording), groot-service,
cosmos3-service, mesh, mesh-iot, sim-newton, sim-isaac, wbc -
see Installation for the full table.
A prompt reaches the agent; the agent calls the robot tool; a policy turns the
observation into an action chunk; the backend (MuJoCo, Newton, Isaac, or the
hardware driver) executes it and returns the next observation. Sim and hardware
share the policy interface, the mesh, and the tool surface, so a workflow proven
in sim runs on the metal by changing mode.
| Read | |
|---|---|
| 70+ robots across 8 categories - arms, bimanual rigs, humanoids, quadrupeds, hands, drones - from one registry with asset auto-download | Robots |
| Any policy behind one ABC: NVIDIA GR00T, Cosmos 3, LeRobot (ACT / Pi0 / SmolVLA / Diffusion), MolmoAct2, whole-body control, cuRobo, MoveIt2, scripted | Policies |
| Teleoperate and record LeRobotDataset episodes from leader arms, gamepads or WASD; stream to HF datasets or Storage Buckets | Teleoperation, Recording |
| Train with LeRobot, GR00T, Cosmos 3 or RL (PPO / FastSAC), locally or as a SageMaker job, then run the checkpoint in sim and on hardware | Training |
| Simulate with an agent-callable MuJoCo tool: worlds, terrain, domain randomization, rendering, dataset capture; Newton and Isaac backends | Simulation |
Mesh every robot as a Zenoh peer: tell() another robot what to do, broadcast an E-STOP, bridge fleets over AWS IoT Core |
Mesh |
ROS 2 - observe and command any graph (use_ros), act as a node without rclpy (use_rtps), expose a running sim |
ROS 2 |
| Configure every environment variable the package reads, with its default and its guard | Configuration |
Real servos never move by accident: mode="real" is an explicit opt-in.
Full guide, API reference and per-robot pages: strands-labs.github.io/robots - start with the Quickstart and Architecture.
uv pip install -e ".[all,dev]"
hatch run test && hatch run lint # pytest; ruff + mypyConventions and review learnings are in AGENTS.md; CONTRIBUTING covers the workflow. Work is tracked on the project board.
Found a vulnerability? Do not open a public issue - follow
SECURITY.md. The trust_remote_code gate on lerobot_local, the
mesh CA-pinning controls and the ordered
CA Pin Rotation Runbook
are documented in the Configuration matrix.
Apache-2.0 - see LICENSE.