Skip to content

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.

    Start here

  • User guide


    Learn the Sim2Bot interface, scene workflow, simulation tools, cameras, telemetry, and settings.

    Learn the system

  • Python examples


    Build from complete Python programs for motion, telemetry, cameras, multi-robot control, and networking.

    Run an example

  • API reference


    Find exact Python signatures, parameters, units, return values, limitations, and examples.

    Find an API

  • Contributing


    Understand the repository, architecture, test workflow, and documentation system.

    Contribute

  • Release notes


    Review notable changes, compatibility notes, current limitations, and migrations.

    See what changed

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.