Skip to main content

Isaac Lab API, powered by MuJoCo-Warp, for RL and robotics research.

Project description

Project banner

mjlab

GitHub Actions Documentation License Nightly Benchmarks PyPI

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
GitHub stars
Locomotion fork for the Asimov bipedal robot.
HUSKY
#572 · Paper
Humanoid skateboarding with dynamic balance control.
Nagi-ovo/mjlab-homierl
GitHub stars
Multi-task H1 locomotion (walk/squat/stand) with upper-body disturbance robustness.
MyoHub/mjlab_myosuite
GitHub stars
Musculoskeletal simulation integration with MyoSuite.
MarcDcls/mjlab_upkie
GitHub stars
Velocity control for the Upkie wheeled biped.
unitreerobotics/unitree_rl_mjlab
GitHub stars
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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mjlab-1.1.1.tar.gz (14.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mjlab-1.1.1-py3-none-any.whl (14.1 MB view details)

Uploaded Python 3

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

Hashes for mjlab-1.1.1.tar.gz
Algorithm Hash digest
SHA256 d943795fa5df163c4d77fc5e63299242069dd307740315bdb41b758517ef0e31
MD5 a782ca0efdd4e80098dafb1d702cf327
BLAKE2b-256 9413e31f6be3b72ede6b2f09640a146b9421faf390769935cc93583e7cd562f1

See more details on using hashes here.

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

Hashes for mjlab-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd60baff39f1a9cff137b2abf72b22011a25fd9d0ba1b7430a63d5d7d3f30d10
MD5 1d72b77e9d6e538f3d0e49e289f40311
BLAKE2b-256 df34c053173256d76ec6e7ff8f47566deac9ddf1147daec998525a3d6f88e302

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page