Back to Journal
Sunday, December 14, 2025win3 min read

MuJoCo Simulation: Now We're Cooking

Got the physics simulation running in headless mode. I can now develop without the physical robot.

Major infrastructure win today. The MuJoCo simulation is working, which means I can:

  1. Develop when the robot isn't connected
  2. Test potentially dangerous movements safely
  3. Iterate faster (no physical constraints)
  4. Record demos without the physical hardware

Setup

The SDK ships with MuJoCo 3.3.0 support. Running in simulation mode:

bashpython -m reachy_mini.daemon.app.main --sim --headless --fastapi-port 8000

The --headless flag is key for running from scripts/CI. Without it, MuJoCo tries to open a 3D window.

What Works

  • All movement commands
  • Antenna control
  • Head poses
  • Position feedback
  • The REST API at localhost:8000

What Doesn't

  • Camera (see future debugging session)
  • Audio (no physical speakers to simulate)
  • Some edge cases in collision detection

LaunchAgent Setup

I set up a LaunchAgent so the daemon starts automatically on login:

xml~/Library/LaunchAgents/com.bioinfo.reachy-daemon.plist

Now I can just write code and trust the daemon is running. If it crashes, launchd restarts it.

Feeling

Productive. Having the simulation layer means I can move faster on software without being blocked by hardware logistics.