Multi-Joint dynamics with Contact. A general purpose physics simulator.

★ 17,124⑂ 2,041👁 138⑃ 891● 1,966▤ 58◈ 841
C++Apache-2.0Created 2021-08-27mujoco.org
17,124
stars
+464+1,086+1,653
2,041
forks
138
watchers
891
prs
1,966
issues
58
releases
841
discussions

README

MuJoCo stands for Multi-Joint dynamics with Contact. It is a
general purpose physics engine that aims to facilitate research and development
in robotics, biomechanics, graphics and animation, machine learning, and other
areas which demand fast and accurate simulation of articulated structures
interacting with their environment.

This repository is maintained by Google DeepMind.

MuJoCo has a C API and is intended for researchers and developers. The runtime
simulation module is tuned to maximize performance and operates on low-level
data structures that are preallocated by the built-in XML compiler. The library
includes interactive visualization in native desktop windows and web browsers.
MuJoCo further exposes a large number of utility functions for computing
physics-related quantities.

We also provide [Python bindings] and a plug-in for the [Unity] game engine.

 Documentation

MuJoCo's documentation can be found at [mujoco.readthedocs.io]. Upcoming
features due for the next release can be found in the [changelog] in the
"latest" branch.

 Getting Started

1. Try MuJoCo in your browser.
Visit mujoco.org to explore MuJoCo on desktop or mobile
with nothing to install, or open live.mujoco.org to
inspect and drag and drop your own models in the WebAssembly version of the
[MuJoCo Studio] app (slower than native C, since it runs in WebAssembly).

2. Run a viewer on your machine.
Follow the [Getting Started] guide in the documentation to download a prebuilt
release and run the [MuJoCo Studio] app or the classic simulate viewer (shown
in this video) on your machine.

3. Explore our online IPython notebooks.
If you are a Python user, you might want to start with our tutorial notebooks
running on Google Colab:

 - The introductory tutorial teaches MuJoCo basics:
   
 - The Model Editing tutorial shows how to create and edit models procedurally:
   
 - The rollout tutorial shows how to use the multithreaded rollout module:
   
 - The LQR tutorial synthesizes a linear-quadratic controller, balancing a
   humanoid on one leg:
   
 - The least-squares tutorial explains how to use the Python-based nonlinear
   least-squares solver:
   
 - The MJX tutorial provides usage examples of
   MuJoCo XLA, a branch of MuJoCo written in JAX:
   
 - The differentiable physics tutorial trains locomotion policies with
   analytical gradients automatically derived from MuJoCo's physics step:
   

 Installation

 Prebuilt binaries

Versioned releases are available as precompiled binaries from the GitHub
[releases page], built for Linux (x86-64 and AArch64), Windows (x86-64 only),
and macOS (universal). This is the recommended way to use the software.

 Building from source

Users who wish to build MuJoCo from source should consult the [build from
source] section of the documentation. However, note that the commit at
the tip of the main branch may be unstable.

 Python (= 3.11)

The native Python bindings, which come pre-packaged with a copy of MuJoCo, can
be installed from [

Top issues

Discussions

Latest release

4.0.0 4.0.0 2026-11-06
Version 4.0.0 (November 6, 2026)

 [!IMPORTANT]
 Read the MuJoCo 4.0 announcement for an overview of everything new since 3.0, the interactive showcase at mujoco.org, MuJoCo Live browser demos, visual showcases, and maintainer Q&A.



 Significant new features

1. 89daf8d19 Added the speculative enable flag for speculative contacts to prevent fast-moving convex geoms from tunneling through thin obstacles within a single
   timestep. On the right, one step of conservative advancement between two rotating boxes. See
   model/speculative/ for examples.



2. Added elasto-plasticity

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON