A complete MJCF lifecycle and trial orchestration suite for MuJoCo, powered by Pydantic v2.
MuJoCo Mojo bridges the gap between static XML modeling and large-scale simulation research. It provides a strongly-typed bridge for building models and a robust execution engine for running them at scale.
- Model: Build MJCFs via validated Python objects allowing for programatic generation.
- Scale: Execute multi-threaded Monte Carlo trials with built-in resume logic.
- Monitor: Track progress via a zero-dependency web dashboard and persistent logs.
- Assess: Quickly view interactive results of a trial in context of others.
- Reproduce: Automatic environment snapshotting (
requirements.txt) for every job.
Installation
Install using uv (recommended):
uv add mujoco-mojo[all]
or with pip:
pip install mujoco-mojo[all]
Features
MJCF Tools
- Strongly-Typed Elements: MJCF components backed by Pydantic v2 for immediate validation.
- Semantic Validation: Early detection of structural errors and attribute mismatches before the engine starts.
- MuJoCo Alignment: Designed to mirror MuJoCo’s XML schema closely (no magic abstractions)
- Object Enumerations: Embedded MuJoCo object mappings to simplify retrieving
mjOBJIDs. - Asset Sharing: Specialized handling of dependency by remapping assets to become shared allows for space efficient execution of complex models
Runtime Toolkit
- Forcing Functions: A library of typed
Loaddefinitions (spring-dampers, point-to-point forces, friction, and more) that apply themselves including reaction forces. - Proximity Sensing: Built-in distance and closest-point tracking between sites and bodies, exposed as both telemetry signals and live overlays with no extra instrumentation. Works on concave geometry meshes.
- Structured Telemetry: A single
post/trackcall records any value into a hierarchical namespace during simulations. This include prebuiltrequestcalls for commonly desired values. - Video Recording: Multi-camera MP4/WebM/GIF capture synced to simulation time, with playback-speed control, force/proximity overlays, on-frame labels, and single-frame snapshots.
Job Utilities
Campaign Orchestration
- Multi-Threaded Execution: Single or multi-threaded trial execution
- Environment Snapshotting: Automatically record installed Python packages to
requirements.txtfor job recreation (works withuvorpip) - Resume Logic: Resume a previously started job without rerunning previous cases
- Robust Logging: Built in Rich logging for terminal and a rotating file handler for persistent logs and status files for insight on trial progress
- Global Overrides: Force specific values onto distributions via CLI or JSON overrides to test "golden" cases.
Monte Carlo
- Reproducible Sampling: Random draw tools for Monte Carlo or rerun with global variable override
- End of run summary with metric to help perform a state of health check
- Support for running jobs with SLURM for distributed compute
Optimization
- Bayesian Search: Intelligent design space navigation powered by Optuna integration.
- Design Variables: Continuous (
DesignFloat) and discrete (DesignCategorical) parameters evolved by the solver. - Adaptive Refinement: "Zoom" into promising neighborhoods by aggressively shrinking search bounds on resume.
- Stochastic Robustness: Multi-evaluation trials that average scores over different seeds to filter out noisy physics outliers.
Dojo Dashboard
A zero-dependency, offline-first web suite for monitoring and analyzing your simulation jobs in real-time.
Monitor: Real-Time Oversight
- Live Progress Tracking: Dynamic progress bars and color-coded status cards provide a high-level view of your Monte Carlo runs.
- Success/Failure Analytics: Automatic categorization of trials with built-in data integrity checks to identify "empty" vs. "failed" runs.
- Sensory Feedback: Optional audio cues and visual celebrations let you know exactly when a multi-hour job hits 100%.
- Deep-Linked Navigation: Jump straight from the monitor to any individual trial in the viewer with one click.
Mosaic: Advanced Telemetry Analysis
- High-Fidelity Plotting: Hardware-accelerated visualization using Plotly.js for seamless zooming and panning through millions of data points.
- Dynamic Versus Mode: Overlay current telemetry against previous trials using an intuitive range-selection slider for instant regression testing.
- Regex-Powered Filtering: Navigate high-dimensional datasets using a "folder-style" signal selector with suffix and regex support.
- State Persistence & Sharing: Every view is captured in a shareable, compressed URL by pasting a link to share your exact configuration.
- Pro-Grade Tooling: Built-in JSON configuration editor, drag-and-drop config restoration, and multi-format exports (SVG, PNG, CSV).
- Keyboard-First Design: Full hotkey support for warping between trials and managing views without leaving the home row.
Reloaded
A rapid prototyping loop that allows you to modify physics logic and model architecture on the fly without ever closing the visualizer.
- Module Hot-Reloading: Recursively reloads local Python modules and MJCF logic, allowing code changes to propagate instantly to the active simulation.
- Unified Visualizer Bridge: Synchronized visualization of custom force and torque vectors across native OpenGL, Viser web interfaces, and video recordings.
- Multiple Viewer Backends: Drive the same reload/sync pipeline through either the native MuJoCo OpenGL viewer or a Viser web viewer.
- Interactive Prototyping: A developer-centric command loop to toggle playback speeds, repeat last commands, watch for file changes and auto-reload, switch telemetry recording on or off mid-session, or trigger "generation-only" mode for rapid MJCF debugging.
- Live Session Controls: Adjust the seed and trial number on the fly with
seed <N>andtrial <N>, without restarting the loop. - Asset Persistence: Automatically dumps current MJCF snapshots and model configurations to a workspace directory for post-hoc analysis or version tracking.
Metadata
Release files for mujoco-mojo 2.6.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mujoco_mojo-2.6.11.tar.gz | 8.8 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mujoco_mojo-2.6.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.6 MB
Release files / mujoco_mojo-2.6.11.tar.gz
| Download URL | mujoco_mojo-2.6.11.tar.gz |
|---|---|
| Size | 8.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6fd8e7da61d0ec89557604062de0f5a7139e73f4931fc212ea16844caeede86f
|
|
BLAKE2b-256 checksum How to use checksums |
2e1e1662cc14dd114282474a374a2c73b1662682bb5514141a0c1768630e8994
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mujoco_mojo-2.6.11-py3-none-any.whl
| Download URL | mujoco_mojo-2.6.11-py3-none-any.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bea592849c593a80536bd3d3c3df26c6a94a346f2c988e74adbaa1d712431689
|
|
BLAKE2b-256 checksum How to use checksums |
8aec4e2bcdffca02c86ab26ae89484a168ddda1cc17f39273d23c18236aa8c25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|