Simulate robots. Control them like real endpoints.¶
Sim2Bot is a browser-based robotics workbench powered by MuJoCo and Three.js. Build a scene, run one or more robots, inspect telemetry and cameras, then control the simulation from Python or another client through the local bridge.
Use it to prototype robot programs without installing a desktop simulator or connecting hardware. The browser runs the simulation; your normal controller code communicates through WebSocket, TCP, or UDP.
Choose the documentation you need¶
-
Getting started
Install Sim2Bot, understand the basic workflow, and move a robot from Python.
-
User guide
Learn the Sim2Bot interface, scene workflow, simulation tools, cameras, telemetry, and settings.
-
Python examples
Build from complete Python programs for motion, telemetry, cameras, multi-robot control, and networking.
-
API reference
Find exact Python signatures, parameters, units, return values, limitations, and examples.
-
Contributing
Understand the repository, architecture, test workflow, and documentation system.
-
Release notes
Review notable changes, compatibility notes, current limitations, and migrations.
Three audiences, three direct paths¶
| If you are… | Go here | What you will get |
|---|---|---|
| Evaluating Sim2Bot | What Sim2Bot does | A concise capabilities and limitations summary. |
| New to Sim2Bot | Five-minute quickstart | One guided, end-to-end success path. |
| Looking for runnable code | Python examples | Complete task-focused programs with explanations and troubleshooting. |
| Already building | Python API reference | Precise answers generated from the SDK source. |
| { .audience-paths } |
Documentation inside Sim2Bot
Open ? → Documentation in the app. The same site appears in a floating window, so you can keep the scene visible while following a guide.
Current runtime model¶
- MuJoCo physics and Three.js rendering run locally in the browser.
- The Python SDK connects through a small bridge running on your computer.
- Cameras are global scene resources; robot commands use explicit robot indices.
- Browser scheduling is not a hard real-time robot servo. Keep the simulation tab visible for consistent timing.
The Python workflow in 30 seconds¶
from sim2bot import Robot
with Robot(auto_bridge=True, wait_for_sim=True) as sim:
arm = sim.describe()[0]
sim.move_to(arm.home, robot=arm.index)
print(sim.state(robot=arm.index))
That discover-before-control pattern is used throughout the documentation. It keeps code correct when the scene changes robot model, joint count, or instance order.
Start with the five-minute quickstart, or jump
straight to sim2bot.Robot.