Skip to main content

Strands Robots

Control, simulate, and train robots with natural language

PyPI Version GitHub stars License MuJoCo GR00T LeRobot

Strands Docs ◆ MuJoCo ◆ NVIDIA GR00T ◆ LeRobot ◆ Project Board

Strands Robots: one Robot object, any robot. A Strands Agent perceives, reasons and acts; the world, MuJoCo or a real arm, answers

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.

Install

uv venv --python 3.12 && source .venv/bin/activate
uv pip install "strands-robots[sim-mujoco]"   # plain pip works too

Python 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.

How it works

How strands-robots is layered: Strands Agent, policies, backends, robots; actions flow down, observations flow up

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.

What you get

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

Strands Robots mesh: every Robot(mesh=True) is a Zenoh peer; an agent lists peers, tells one what to do, and an emergency stop reaches all of them

Real servos never move by accident: mode="real" is an explicit opt-in.

Documentation

Full guide, API reference and per-robot pages: strands-labs.github.io/robots - start with the Quickstart and Architecture.

Development

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 + mypy

Conventions and review learnings are in AGENTS.md; CONTRIBUTING covers the workflow. Work is tracked on the project board.

Security

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.

License

Apache-2.0 - see LICENSE.

Metadata

Release files for strands-robots 0.5.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for strands-robots 0.5.3
File Size Uploaded
strands_robots-0.5.3.tar.gz 19.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for strands-robots 0.5.3
File Interpreter ABI Platform
strands_robots-0.5.3-py3-none-any.whl Python 3 none any Details

Total release size: 23.9 MB

Release files / strands_robots-0.5.3.tar.gz

Download URL strands_robots-0.5.3.tar.gz
Size 19.0 MB
Tags Source
SHA-256 checksum
How to use checksums
4c587c5ad61c45d8ed8f180ee17a59980d43152411493f588ce65f0c711b9da0
BLAKE2b-256 checksum
How to use checksums
09c12f8bde3b1e1c04ec25a9ea15035531eb8c2b158a8ba39fcecc8d66d8a93c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / strands_robots-0.5.3-py3-none-any.whl

Download URL strands_robots-0.5.3-py3-none-any.whl
Size 4.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
cdf92924a5397acee19a18d2baf46202bde46d400256a47fa3f2a956b5c4617b
BLAKE2b-256 checksum
How to use checksums
9c5fc768993d842e12cf634292608076bda53de64e0afe6379e5f57642feb4b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.3 This release

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page