Isaac Lab API, powered by MuJoCo-Warp, for RL and robotics research.
Project description
mjlab
mjlab combines Isaac Lab's manager-based API with MuJoCo Warp, a GPU-accelerated version of MuJoCo. The framework provides composable building blocks for environment design, with minimal dependencies and direct access to native MuJoCo data structures.
Getting Started
mjlab requires an NVIDIA GPU for training. macOS is supported for evaluation only.
Try it now:
Run the demo (no installation needed):
uvx --from mjlab --refresh demo
Or try in Google Colab (no local setup required).
Install from source:
git clone https://github.com/mujocolab/mjlab.git && cd mjlab
uv run demo
For alternative installation methods (PyPI, Docker), see the Installation Guide.
Training Examples
1. Velocity Tracking
Train a Unitree G1 humanoid to follow velocity commands on flat terrain:
uv run train Mjlab-Velocity-Flat-Unitree-G1 --env.scene.num-envs 4096
Multi-GPU Training: Scale to multiple GPUs using --gpu-ids:
uv run train Mjlab-Velocity-Flat-Unitree-G1 \
--gpu-ids 0 1 \
--env.scene.num-envs 4096
See the Distributed Training guide for details.
Evaluate a policy while training (fetches latest checkpoint from Weights & Biases):
uv run play Mjlab-Velocity-Flat-Unitree-G1 --wandb-run-path your-org/mjlab/run-id
2. Motion Imitation
Train a humanoid to mimic reference motions. mjlab uses WandB to manage motion datasets. See the motion preprocessing documentation for setup instructions.
uv run train Mjlab-Tracking-Flat-Unitree-G1 --registry-name your-org/motions/motion-name --env.scene.num-envs 4096
uv run play Mjlab-Tracking-Flat-Unitree-G1 --wandb-run-path your-org/mjlab/run-id
3. Sanity-check with Dummy Agents
Use built-in agents to sanity check your MDP before training:
uv run play Mjlab-Your-Task-Id --agent zero # Sends zero actions
uv run play Mjlab-Your-Task-Id --agent random # Sends uniform random actions
When running motion-tracking tasks, add --registry-name your-org/motions/motion-name to the command.
Community Projects
mjlab is used for research and robotics applications around the world. Examples:
|
menloresearch/asimov-mjlab
|
Locomotion fork for the Asimov bipedal robot. |
|
HUSKY
#572 · Paper |
Humanoid skateboarding with dynamic balance control. |
|
Nagi-ovo/mjlab-homierl
|
Multi-task H1 locomotion (walk/squat/stand) with upper-body disturbance robustness. |
|
MyoHub/mjlab_myosuite
|
Musculoskeletal simulation integration with MyoSuite. |
|
MarcDcls/mjlab_upkie
|
Velocity control for the Upkie wheeled biped. |
|
unitreerobotics/unitree_rl_mjlab
|
Official Unitree RL environments for Go2, G1, and H1_2. |
Want to share your project? Post in Show and Tell!
Documentation
Full documentation is available at mujocolab.github.io/mjlab.
Development
make test # Run all tests
make test-fast # Skip slow tests
make format # Format and lint
make docs # Build docs locally
For development setup: uvx pre-commit install
Citation
If you use mjlab in your research, please cite:
@misc{zakka2026mjlablightweightframeworkgpuaccelerated,
title={mjlab: A Lightweight Framework for GPU-Accelerated Robot Learning},
author={Kevin Zakka and Qiayuan Liao and Brent Yi and Louis Le Lay and Koushil Sreenath and Pieter Abbeel},
year={2026},
eprint={2601.22074},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2601.22074},
}
License
mjlab is licensed under the Apache License, Version 2.0.
Third-Party Code
Some portions of mjlab are forked from external projects:
src/mjlab/utils/lab_api/— Utilities forked from NVIDIA Isaac Lab (BSD-3-Clause license, see file headers)
Forked components retain their original licenses. See file headers for details.
Acknowledgments
mjlab wouldn't exist without the excellent work of the Isaac Lab team, whose API design and abstractions mjlab builds upon.
Thanks to the MuJoCo Warp team — especially Erik Frey and Taylor Howell — for answering our questions, giving helpful feedback, and implementing features based on our requests countless times.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mjlab-1.1.1.tar.gz.
File metadata
- Download URL: mjlab-1.1.1.tar.gz
- Upload date:
- Size: 14.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d943795fa5df163c4d77fc5e63299242069dd307740315bdb41b758517ef0e31
|
|
| MD5 |
a782ca0efdd4e80098dafb1d702cf327
|
|
| BLAKE2b-256 |
9413e31f6be3b72ede6b2f09640a146b9421faf390769935cc93583e7cd562f1
|
File details
Details for the file mjlab-1.1.1-py3-none-any.whl.
File metadata
- Download URL: mjlab-1.1.1-py3-none-any.whl
- Upload date:
- Size: 14.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd60baff39f1a9cff137b2abf72b22011a25fd9d0ba1b7430a63d5d7d3f30d10
|
|
| MD5 |
1d72b77e9d6e538f3d0e49e289f40311
|
|
| BLAKE2b-256 |
df34c053173256d76ec6e7ff8f47566deac9ddf1147daec998525a3d6f88e302
|