Describe your robot in plain English. Get a simulation-ready MuJoCo scene in 30 seconds.
simforge is a developer tool that bridges the gap between "I have a robot idea" and "I'm training it in simulation." It converts natural language descriptions into complete MuJoCo/Isaac Lab simulation environments with working physics, assets, and RL training scripts.
Setting up a robotics simulation environment in 2026 still takes 2-4 weeks of manual configuration:
- URDF → MuJoCo conversion silently drops visual meshes
package://URIs don't resolve in MuJoCo- Physics parameters need manual tuning
- Quality simulation-ready 3D assets are scarce
- Isaac Lab has a massive setup overhead (Reddit)
# Install
npm install -g simforge
# Generate a simulation from natural language
simforge create "a 6-DOF robot arm on a table picking up a red cube"
# Convert and fix URDF files for MuJoCo
simforge convert my_robot.urdf --fix-all --output ./mjcf/
# Preview in MuJoCo viewer
simforge view scene.xml
# Export RL training script
simforge export --rl-framework rsl_rl --output train.py| Command | Description |
|---|---|
simforge create "<description>" |
Generate MJCF scene from natural language |
simforge convert <urdf_path> |
Convert URDF → MJCF with auto-fixes |
simforge view <xml_path> |
Launch MuJoCo viewer |
simforge export |
Generate RL training script |
simforge gallery |
Browse built-in sim-ready assets |
simforge validate <xml_path> |
Check physics constraints |
# Quadruped robot
simforge create "a quadruped robot walking on uneven terrain with height sensors"
# Manipulation
simforge create "two robot arms cooperating to carry a large box on a conveyor belt"
# Navigation
simforge create "a wheeled robot navigating a maze with LiDAR and depth camera"
# Dexterous manipulation
simforge create "a robot hand with 5 fingers picking up a deformable cloth"The convert command automatically solves the 3 most common issues:
package://URI resolution — Converts ROS package paths to relative paths- Visual mesh restoration — MuJoCo discards visual meshes by default; simforge restores them
- Actuator/sensor generation — Auto-generates missing
<actuator>and<sensor>definitions
simforge convert my_robot.urdf --fix-all --verbosesimforge includes 50+ physics-calibrated assets:
| Category | Assets |
|---|---|
| Furniture | Table, chair, shelf, desk, cabinet |
| Objects | Cube, sphere, cylinder, mug, bottle, box |
| Terrain | Flat, stairs, ramp, uneven, gaps |
| Sensors | Camera mount, LiDAR mount, force plate |
# List available assets
simforge gallery list
# Preview an asset
simforge gallery preview table_round
# Import custom mesh
simforge gallery import my_mesh.obj --add-collision --material wood| Backend | Status | Notes |
|---|---|---|
| MuJoCo | ✅ Full | Primary backend, MJCF native |
| MuJoCo Warp | ✅ Full | GPU-accelerated via Isaac Lab |
| Isaac Lab | ✅ Export | Generates compatible environment scripts |
| Isaac Sim | 🔄 Planned | USD export in v0.2 |
simforge.config.yaml:
# Default backend
backend: mujoco # or "isaac_lab"
# LLM provider for natural language generation
llm:
provider: anthropic # or "openai", "ollama"
model: claude-sonnet-4-20250514
api_key_env: ANTHROPIC_API_KEY
# Physics defaults
physics:
gravity: [0, 0, -9.81]
timestep: 0.002
iterations: 4
# Asset search paths
asset_paths:
- ./assets
- ~/.simforge/assetsgit clone https://github.com/your-user/simforge.git
cd simforge
npm install
npm run build
npm testUser Input (Natural Language / URDF)
│
▼
┌─────────────────┐
│ Scene Generator │ ← LLM + MJCF templates
│ (NL → MJCF) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Asset Resolver │ ← Built-in gallery + mesh import
│ (mesh + physics)│
└────────┬────────┘
│
▼
┌─────────────────┐
│ Physics Validator│ ← Constraint checking
│ (contact/joint) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ RL Exporter │ ← rsl_rl / stable-baselines3 / custom
│ (train scripts) │
└─────────────────┘
MIT
From idea to simulation in 30 seconds.