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. Learned policies from the Hugging Face Hub, from
vision-language-action models to world foundation models and whole-body
controllers, run through the same run_policy call in the simulator and on
the physical robot.
from strands import Agent
from strands_robots import Robot
robot = Robot("so100") # MuJoCo sim by default; mode="real" for hardware
robot.add_object(name="red_cube", shape="box", size=[0.05, 0.05, 0.05],
position=[0.0, -0.2, 0.025], color=[1.0, 0.0, 0.0]) # the arm faces -Y
robot.add_camera(name="front", position=[0.3, -0.7, 0.45], target=[0.0, -0.2, 0.03])
Agent(tools=[robot])("pick up the red cube")In MuJoCo the SO-100 jaw cannot squeeze the cube hard enough to lift it, so the
agent carries it with attach_bodies(mode="weld"), a grasp assist that
set_gripper names as soon as the jaw closes.
uv venv --python 3.12 && source .venv/bin/activate
uv pip install "strands-robots[sim-mujoco]" # plain pip works tooPython 3.12+. from strands import Agent comes from the strands-agents
dependency, installed for you; the PyPI package named strands is an
unrelated physics solver, so do not pip install strands. Everything else is
an extra you pull in when you need it -
lerobot (hardware, local VLA inference, recording), groot (GR00T N1.7),
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 | |
|---|---|
| 150+ robots across 8 categories - arms, bimanual, hands and grippers, humanoids, mobile bases, mobile manipulators, aerial, expressive - from one registry with asset auto-download | Robots |
| Any policy behind one ABC: LeRobot (ACT / Pi0 / SmolVLA / Diffusion / GR00T N1.7), Cosmos 3, MolmoAct2, whole-body control, cuRobo, MoveIt2, scripted | Policies |
| Teleoperate and record LeRobotDataset episodes from leader arms, gamepads or WASD; push to a Hub dataset repo or sync to an HF Storage Bucket | Teleoperation, Recording |
Train with LeRobot (ACT to GR00T N1.7, strands_robots.training.create_trainer("lerobot_local")), Cosmos 3 ("cosmos3") or RL ("ppo" / "fast_sac" / "fast_td3"), locally or as a SageMaker job ("sagemaker"), 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(mesh=True) as a Zenoh peer (on one machine set STRANDS_MESH_LOCAL_DEV=true; across hosts, mTLS and an ACL): robot.mesh.tell(peer, instruction, policy_provider=...) asks another robot to run a policy; 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), bridge a real arm (rclpy or DDS) or, on a sourced distro, 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 venv --python 3.12 && source .venv/bin/activate
uv pip install -e ".[all,dev]" hatch # hatch is the task runner, in no extra
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 and kimodo, the
mesh CA-pinning controls and the ordered
CA Pin Rotation Runbook
are documented in the Configuration matrix.
Apache-2.0 - see LICENSE.