MuJoCo Playground is a suite of robot environments, reinforcement learning tasks, and hardware workflows written in PyTorch and built on reaf-sim, MuJoCo, and MuJoCo Warp.
Robots exist in mujoco_playground/robots/, either in simulation or paired with a hardware counterpart, enabling end-to-end workflows across simulation and hardware:
- Large-batch RL training on GPU: with state and vision observations across control, manipulation, and humanoid whole-body tracking.
- Sim & real teleoperation: with leader-follower control and episodic MCAP logging.
- System identification: fitting simulated joint dynamics to logged hardware trajectories via
mujoco.sysid. - Zero-shot sim-to-real policy deployment: running the same task layer and policy in simulation (
--mode=sim) and on hardware (--mode=real). - Agentic manipulation: for vision-language model (VLM) examples across simulation and hardware (
SO-101,i2rt YAM).
Whole body motion tracking |
Sim teleoperation |
Real teleoperation |
System identification |
Sim2Real and interactive viewer |
Agentic manipulation |
Note
Looking for the original RSS 2025 JAX/MJX environments? They remain available under rss2025.
Clone the repository and sync dependencies with uv:
git clone https://github.com/google-deepmind/mujoco_playground.git && cd mujoco_playground
# Then install with one of:
make sync # For GPU, good for RL training
make sync-cu12 # For CUDA 12 on Linux
make sync-cpu # Or for CPU only, (i.e. on macOS)Verify your installation by running the test suite:
make testNote
Real-robot hardware SDKs are optional extras so simulation-only stays lightweight. Passing --extra so101 or --extra yam to uv run (or uv sync --extra so101) installs the hardware drivers on demand.
To get started, either try training an RL policy, or try agentic manipulation in simulation or on the real hardware.
Train a PPO policy across parallel GPU environments with RSL-RL:
# Train SO-101 Pick-Cube
uv run --extra rl python -m mujoco_playground.rl.rsl_rl.train \
--env=SO101PickCubeVision \
--logdir=/tmp/rslrl_logs/so101_pick_cube_vision
# --overrides='{"nworld": 64}' # For CPU
# Play back the trained policy in the interactive viewer
uv run --extra rl python -m mujoco_playground.rl.rsl_rl.play \
--env=SO101PickCubeVision \
--resume_path=/tmp/rslrl_logs/so101_pick_cube_visionMonitor training curves in TensorBoard:
uv run --extra rl tensorboard --logdir=/tmp/rslrl_logs/so101_pick_cube_visionOptionally set up the SO-101 hardware and deploy to the real arm:
# Deploy the trained policy on the physical SO-101 follower arm
uv run --extra so101 --extra rl python -m \
mujoco_playground.tasks.manipulation.pick_cube.so101.deploy.run \
--mode=real \
--checkpoint=/tmp/rslrl_logs/so101_pick_cube_visionSpin up the agentic tabletop manipulation task directly from your coding agent with a prompt in sim or real:
Start the tabletop_v0 bridge for the yam in sim and get it to <your task>,
following mujoco_playground/tasks/agentic/tabletop_v0/AGENT_PROMPT.md
Swap sim for real to run on hardware, or so101 for yam (see AGENT_PROMPT.md).
Note
On macOS, --viewer requires mjpython in place of python. Before the
first run, link libpython into the virtualenv so mjpython can load it:
ln -sf "$(uv run python -c 'import sys; print(sys.base_prefix)')"/lib/libpython3.13.dylib .venv/lib/- Documentation: See the MuJoCo Playground documentation.
- Contributing: See the contributing guide for contribution guidelines.
- Changelog: See the changelog.
If you use MuJoCo Playground in your work, please cite it as follows (see the GitHub contributors page for the full list of contributors):
@software{mujoco_playground_2026,
author = {Tabanpour, Baruch and Howell, Taylor and Haves, Sam and Abeyruwan, Saminda and Ma, Tony and Suh, Dan and {MuJoCo Playground Contributors}},
title = {{MuJoCo Playground}},
url = {https://github.com/google-deepmind/mujoco_playground},
year = {2026},
}For the RSS 2025 benchmark suite that was built on JAX/MJX (see rss2025), please cite:
@misc{mujoco_playground_2025,
title = {MuJoCo Playground: An open-source framework for GPU-accelerated robot learning and sim-to-real transfer.},
author = {Zakka, Kevin and Tabanpour, Baruch and Liao, Qiayuan and Haiderbhai, Mustafa and Holt, Samuel and Luo, Jing Yuan and Allshire, Arthur and Frey, Erik and Sreenath, Koushil and Kahrs, Lueder A. and Sferrazza, Carlo and Tassa, Yuval and Abbeel, Pieter},
year = {2025},
publisher = {GitHub},
url = {https://github.com/google-deepmind/mujoco_playground}
}All content in this repository is licensed under the Apache License, Version 2.0. See LICENSE for details.
This is not an officially supported Google product.






