Skip to content

Install

A Python environment where Robot imports, MuJoCo renders offscreen and the robot model files are on disk.

At the end of this page you have a Python environment where from strands_robots import Robot works, a MuJoCo robot renders offscreen, and the robot model files are on disk.

Requirements

Python >=3.12. A CPU is enough for the MuJoCo path; a GPU is only needed for the Newton and Isaac backends and for policy inference at speed.

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

pip install works the same way. The bare package has four dependencies (strands-agents, numpy, opencv-python-headless, Pillow); everything else is an extra.

Pick extras

Most people start with sim-mujoco: MuJoCo, robot_descriptions for asset download, imageio for video, mink for inverse kinematics. Add lerobot when a physical arm arrives, mesh when a second machine does.

uv pip install "strands-robots[sim-mujoco,lerobot]"

Every extra, read from pyproject.toml at build time:

extra installs purpose
cosmos3-service msgpack, websockets Cosmos 3 service client
cosmos3-diffusers diffusers, torch, transformers, accelerate Cosmos 3 through diffusers
cosmos3-sim mink, mujoco, qpsolvers[quadprog] IK solvers for the Cosmos 3 sim path
moveit2 pyzmq, msgpack MoveIt 2 planning client
curobo cuRobo planning (no pins, install cuRobo yourself)
flux3 FLUX 3 Action policies (no pins, install flux-action yourself)
wbc onnxruntime, pyyaml, huggingface_hub whole body controller (ONNX checkpoints from the Hub)
kimodo torch, diffusers, transformers, huggingface_hub, accelerate, scipy Kimodo diffusion policies
protomotions onnxruntime, pyyaml, huggingface_hub ProtoMotions humanoid checkpoints
holosoma onnxruntime, huggingface_hub Holosoma G1 locomotion (ONNX checkpoints from the Hub)
microduck onnxruntime, huggingface_hub Microduck walking policy
crazyflie cflib Crazyflie radio driver
ur ur-rtde Universal Robots RTDE driver
xarm xarm-python-sdk UFactory xArm driver
earthrover requests Earth Rover HTTP driver
rby1 rby1-sdk Rainbow Robotics RB-Y1 driver
spot bosdyn-client Boston Dynamics Spot driver
stretch hello-robot-stretch-body Hello Robot Stretch driver
serial pyserial Feetech and Dynamixel serial drivers, serial_tool, pose_tool
lerobot lerobot[feetech,dataset], psutil lerobot drivers, teleoperation, recording, Feetech buses
molmoact2 [lerobot], lerobot[molmoact2] MolmoAct 2 policies through lerobot
smolvla [lerobot], lerobot[smolvla] SmolVLA policies through lerobot
groot [lerobot], lerobot[groot] GR00T N1.7 through lerobot (policy_type groot)
sim robot_descriptions asset download through robot_descriptions
rl [sim-mujoco], torch, gymnasium reinforcement learning on the MuJoCo backend
sim-mujoco [sim], mujoco, imageio, imageio-ffmpeg, mink, qpsolvers[daqp] MuJoCo simulation, offscreen rendering, IK (the default sim)
sim-urdf [sim-mujoco], trimesh, pycollada, xacrodoc URDF robots compiled for MuJoCo (Collada mesh conversion)
sim-newton [sim-mujoco], newton, warp-lang, mujoco, mujoco-warp, trimesh Newton GPU simulation on warp
sim-mjlab [sim-mujoco], mjlab, mujoco, mujoco-warp, warp-lang, onnxruntime mjlab GPU-vectorized MuJoCo (MuJoCo-Warp), rsl_rl training, ONNX policies
sim-isaac [sim], usd-core, imageio, imageio-ffmpeg, mujoco, mink, qpsolvers[daqp] Isaac Sim backend (USD assets)
sim-gs gsplat, plyfile, torch Gaussian splat rendering (gsplat)
mesh eclipse-zenoh, json5, cryptography Zenoh fleet mesh
mesh-iot [mesh], awsiotsdk, awscrt, boto3, botocore AWS IoT Core bridge for the mesh
device-connect device-connect-edge, device-connect-agent-tools device-connect edge agent
ros2 cyclonedds pure DDS (cyclonedds) ROS 2 bridge
ollama strands-agents[ollama] Ollama model provider for the agent
foxglove foxglove-sdk, mcap live Foxglove view and MCAP recording
inference websockets WebSocket inference server
rosbridge roslibpy rosbridge WebSocket client
sagemaker boto3 SageMaker endpoints
dashboard fastapi, uvicorn[standard], webauthn, python-multipart, PyJWT, [serial], opencv-python-headless, huggingface_hub the web dashboard
voice strands-agents[bidi] the dashboard's speech-to-speech voice operator
all [moveit2], [lerobot], [sim-mujoco], [sim-urdf], [rl], [mesh], [mesh-iot], [device-connect], [wbc], [holosoma], [kimodo], [protomotions], [molmoact2], [smolvla], [groot], [ollama], [inference], [foxglove], [rby1], [rosbridge], [sagemaker], [earthrover], [xarm], [spot], [serial], [dashboard] a curated bundle; GPU backends, cosmos3, ros2 and the hardware drivers stay opt-in
dev pytest, pytest-cov, ruff, mypy, pytest-timeout, pytest-xdist tests and linters

Robot models

Simulation loads a robot from its MJCF or URDF. Models are not in the wheel. The first Robot("so101") resolves the file through robot_descriptions and caches it under ~/.strands_robots/assets/. Set STRANDS_ASSETS_DIR to move that cache.

To fetch models ahead of time, or on a machine that will go offline, call the download tool. It is a plain function as well as an agent tool:

from strands_robots import download_assets

report = download_assets(action="status")
print("\n".join(report["content"][0]["text"].splitlines()[:3]))

You should see a count, then one line per robot with a model to fetch, [ok] when its files are present and [--] when they are not:

<available> available, <missing> missing
[ok] ability_hand         hand         PSYONIC Ability Hand (5-finger prosthetic, 11-DOF)
[ok] adam_lite            humanoid     PNDbotics Adam Lite Humanoid (26-DOF)

action="download" fetches what is missing; robots="so101,panda" narrows the set, category="arm" filters by family, force=True refetches. A download that fetched nothing returns status="error" naming the cause, not a success with zeros.

Rendering

MuJoCo reads MUJOCO_GL once, on first import, and the package sets it when it is unset: on Linux without a display egl or osmesa, whichever is present; on macOS cgl, the only backend, which needs a logged-in window server. Set it yourself only when that choice is wrong:

export MUJOCO_GL=egl     # Linux, headless, NVIDIA or Mesa EGL
export MUJOCO_GL=osmesa  # Linux, headless, software rendering

Check

strands-robots doctor

No probe touches hardware or the network; Doctor lists each and what a FAIL means. Then move a robot: First robot.

Edit page