mrkeyoor.com_
Sun 08 Nov 21:54 UTC
Dev Toolsevaluationupdated 08 Nov 2026

mujoco review

MuJoCo is a general-purpose physics engine for simulating articulated structures interacting with their environment. Maintained by Google DeepMind, it has a C API and Python bindings for researchers and developers working on robotics, control and related simulation problems.

Verdict

Our MuJoCo Python run stopped with 25 collection/setup errors, so it established no working simulation. Researchers seeking direct model control have a reason to evaluate its documented bindings, but this sandbox cannot support a recommendation about physics behavior. Verify imports and a representative model in the intended environment before committing an experiment.

We ran it

Lab card: what happened when we ran mujocoScreenshot of mujoco (mujoco.org)
Install✓ · 20s35 packages · 38 MB
Build✓ · 1s
Tests✗ · 2s0 passed · 0 failed · 25 errors of 25 (pytest)
Known vulns0(pip-audit)
Repo2414 files~626,789 lines of source · 118.1 MB · 5 CI workflows · tests dir

Answers from our run

Does mujoco build from source?

Dependencies installed in 20 seconds (35 packages), and the build succeeded in 1 seconds. We cloned commit 371c2b4 into a clean Debian container with 3 CPUs and no project-specific setup.

Do mujoco's tests pass?

No. The project's own test command finished in 2 seconds and reported 0 passed, 0 failed, 25 collection errors (pytest).

Does mujoco have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use mujoco?

Teams requiring a working Python simulation demonstrated by this review: our run stopped with 25 collection/setup errors.

What are the alternatives to mujoco?

PyBullet / Bullet Physics SDK, dm_control. Our MuJoCo Python run stopped with 25 collection/setup errors, so it established no working simulation.

SetupN/AInstallation and the Python build step succeeded, but collection/setup errors prevented a working simulation. This run does not establish setup ease in a supported environment.
DocsN/AThe supplied README, Python documentation and release notes explain the interfaces and package split. Their usability through a successful setup was not established.
CommunityN/AThe supplied metadata records a November 6, 2026 release and November 7 last push. These establish recent activity, but the packet does not assess maintainer responsiveness or support quality.
MaturityN/AThe run stopped before simulation validation. It provides no basis for scoring physics reliability, model correctness or production suitability.

Who it’s for

Robotics and control researchers who need direct access to models and simulation state.
Python developers comfortable with bindings that closely follow a C API.
Teams prepared to verify imports and representative model behavior before planning an experiment.

Who it’s NOT for

Teams requiring a working Python simulation demonstrated by this review: our run stopped with 25 collection/setup errors.
Users seeking ready-made reinforcement-learning tasks directly from the low-level bindings.
Researchers requiring official Google product support: the README says MuJoCo is not an officially supported Google product.
Projects below Python 3.11 following the supplied main-branch requirements.

Setup reality

Our November 8, 2026 run at commit 371c2b4 targeted the Python project in ./python/. Installation succeeded in 20 seconds, recording 35 dependencies and 38 MB on disk. The build step succeeded in 1 second. Pytest then exited 1 after 2 seconds with 0 passed, 0 failed and 25 collection/setup errors. The exposed ImportError reports missing or corrupted mujoco-core bindings. We did not establish working imports, model execution or rendering.

MuJoCo 4.0.0 separates the Python distribution into core bindings, Studio and renderer bindings, and a default package that installs both. Its November 6, 2026 release notes describe repair guidance for upgrades from the earlier package layout. The log does not establish that such an upgrade caused our failure, and the packet contains no successful repair run. The release also directs readers to the latest Python documentation because package-split documentation landed shortly after release.

The recorded sandbox configuration was 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. The image label does not establish actual runtime or operating-system versions. Desktop viewing requires a separate check; the documented passive viewer requires mjpython on macOS. Start a further evaluation by recording installed package versions and checking imports, then test a representative model before adding rendering. That sequence is proposed, not an evaluation completed here.

A successful package step did not produce a working simulation

Our MuJoCo Python run stopped with 25 collection/setup errors after installation and the build step succeeded. That distinction matters when choosing a simulator: the run provides setup evidence but cannot establish accuracy, speed or suitability for a particular robot.

MuJoCo is a physics engine for articulated structures interacting with their environment. The project README describes its C API and Python bindings. Researchers who want to control models and simulation state directly should consider evaluating those interfaces. This review did not reach a working physics workload.

What happened when we ran it

The sandbox targeted ./python/ at commit 371c2b4 on November 8, 2026. Installation succeeded in 20 seconds, with 35 dependencies recorded and 38 MB on disk. The build step succeeded in 1 second. Pytest exited 1 after 2 seconds with 0 passed, 0 failed and 25 collection/setup errors.

Zero failed tests does not mean the suite passed. Collection/setup errors prevented a passing result. The tail names thread-safety, USD, virtual-filesystem and viewer modules, among others; those names do not establish whether the corresponding features work.

The exposed ImportError reports missing or corrupted mujoco-core bindings. The log suggests reinstalling related packages, but it does not establish the cause or show a successful repair. A missing-core error is a finding about this setup, not evidence that the engine's physics is defective.

The recorded configuration was 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. Actual runtime and operating-system versions remain unverified. The checkout contained 2,414 files, roughly 626,789 source lines and 118.1 MB. The recorded build step targeted the Python project; its 1-second duration is not a benchmark for compiling the entire native engine.

The run recorded 0 known vulnerabilities from pip-audit. That advisory result does not verify working bindings or simulation correctness. The repository scan found five CI workflows, a tests directory and no Dockerfile.

The 4.0.0 package split gives context, not a diagnosis

MuJoCo 4.0.0 separates core bindings from Studio and renderer bindings. The release notes, published November 6, 2026, identify mujoco-core, mujoco-studio and the default mujoco package that installs both.

The notes warn that upgrading a pre-split installation with pip can remove files moved to mujoco-core, and provide uninstall or force-reinstallation guidance. That guidance is relevant to the error message, but our log does not establish an upgrade history. No successful repair accompanies the measurement.

The release notes also direct readers to the latest Python documentation because documentation for the package split landed shortly after release. The supplied checkout was measured at commit 371c2b4; the record does not establish that the sandbox installed the published 4.0.0 distribution. Keep release behavior and checkout observations separate when reproducing the result.

Check imports, model behavior and viewing separately

The Python documentation describes low-level bindings close to the C API. That interface suits custom simulation loops. A researcher seeking ready-made learning tasks may need an environment layer instead.

For another evaluation, first record the installed distribution versions and confirm that the bindings import. Next, load a small representative model and check its state progression before adding a controller or viewer. These are proposed acceptance checks; this review did not execute them successfully.

Viewing introduces its own requirements. In the documented passive mode, the calling script remains responsible for timing and advancing physics state. On macOS, that mode requires the mjpython launcher. These are documented constraints, not an explanation for our missing-core error. No documentation example was executed for this correction.

Choose an alternative by the layer you need

Bullet's README recommends PyBullet Python bindings for robotics and reinforcement learning. PyBullet is a route for evaluating another engine and its API. We have no comparative simulation results or evidence that it would be easier to set up in this sandbox.

dm_control supplies reinforcement-learning environments powered by MuJoCo, along with task-composition tools. It addresses a need for environments above the engine. Its MuJoCo dependency means it does not establish an independent solution to the unresolved binding problem.

The supplied metadata records a November 7, 2026 last push, following the November 6 release. Those dates show recent repository activity; they do not establish maintainer responsiveness or support quality. The README says MuJoCo is not an officially supported Google product.

Before committing a research schedule, obtain a working import and a reproducible run of your representative model. Record the environment alongside the experiment.

Alternatives

ProjectWhat it isPick it when
PyBullet / Bullet Physics SDKA separate physics engine with Python bindings recommended by its README for robotics and reinforcement learning.Consider PyBullet when you want to evaluate another engine and API. This review provides no comparative setup, accuracy or throughput results.
dm_controlA MuJoCo-based stack with reinforcement-learning environments and tools for composing tasks.Consider dm_control when you need task environments above the engine bindings. It uses MuJoCo, so changing to this layer does not establish that the unresolved binding problem is fixed.

What people are saying

  1. [github-trending] google-deepmind/mujoco

Sources

  1. MuJoCo README
  2. MuJoCo 4.0.0 release notes
  3. Python bindings documentation, as directed by the 4.0.0 release notes
  4. Bullet Physics SDK README
  5. dm_control README

More dev tools reviews

SteamTools · git-cliff · blackbird · czkawka · controller-runtime · openchoreo · the whole board →