Skip to main content
Cyberwave turns every environment into a runnable simulation. Hit Simulate in the editor, or flip the SDK into sim mode: same scene, same twins, same code:
When you’re done, cw.affect("live") points the same code at the real robot. No rewrites, no second SDK, no second environment.

Why simulate?

Develop at code speed

Tweak a policy, re-run, see the result in the viewport: no robot, no lab, no waiting on hardware.

CI for robotics

Run the same scene headlessly in CI. Catch regressions in motion planners, perception, and controllers before they ship.

Train models

Use simulation rollouts to train and evaluate VLAs and RL policies on the same twins you’ll deploy on.

Synthetic data

Render camera streams, depth, and joint states from any environment to bootstrap datasets when real-world data is scarce.

Simulation engine agnostic

Set up your environment once. Cyberwave handles the export to each backend so you can pick the right tool for the job without re-modeling anything.

Playground

Browser-based, runs on your machine’s compute. Best for fast iteration.

MuJoCo

High-fidelity, contact-rich physics. Best for RL, evaluation, and reproducible sim sweeps.

Isaac Sim

GPU-accelerated photoreal simulation. Coming soon.
Each twin advertises which backends it supports; see Simulator compatibility to control which simulators an asset or twin can participate in.

Powered by the twin catalog

There’s no separate “simulation setup” step. Physics, kinematics, sensors, and collision geometry are read straight from the digital twins you dropped into the environment; every twin in the catalog ships with a URDF and inertial data ready to simulate. Add a twin → it’s instantly simulatable. Swap a SO-101 for a UR7e → the physics update on the next run.

The two simulators today

Open any environment in the editor and click Simulate in the top bar.

Playground: instant browser physics

Playground is a lightweight rigid-body simulator that runs entirely in your browser, using your machine’s compute. There’s nothing to install and nothing to wait for; it’s running the moment the page loads.
  • Fastest feedback loop: change a joint target in code, see the twin move in the viewport.
  • Great for sanity checks: verify motion plans, joint limits, and basic collisions before going live.
  • Works offline from cloud compute: every browser is its own simulator.
Locomotion previews in Playground too. Locomotion and flight commands drive the twin in the browser viewport exactly like the keyboard teleop overlay does, so you can sanity-check a driving/flying script before pointing it at hardware:

MuJoCo: contact-rich physics, your way

Need real grasps, friction, and reproducible RL sweeps? Cyberwave one-click-exports any environment to MuJoCo, two ways:

Export and run anywhere

Download a self-contained MuJoCo scene (XML + meshes) and run it on your laptop, your cluster, or your CI runner. Backed by the environment MuJoCo export API.

Run in the Cyberwave cloud

Kick off a MuJoCo simulation from the editor and stream results straight back into the browser viewport, no local install required.
All twins in the environment must be marked MuJoCo-compatible before a remote run starts; see how the compatibility gate works.

Runtime profiles, cost, and what each serves

cw.affect(...) picks the runtime and, for MuJoCo, starts the simulation for you:
  • cw.affect("simulation") / "sim" / "mujoco" — starts (or reuses) a MuJoCo run. A MuJoCo simulation is a billable cloud instance (~0.6 credits/hour); selecting it logs the cost. Pass environment_id= / duration= to affect(), or set CYBERWAVE_ENVIRONMENT_ID.
  • cw.affect("playground") — lightweight kinematic runtime, no MuJoCo instance, no cost.
  • cw.affect("live") — real hardware.
Stop a run with sim.stop() (it also stops at its duration):
What each runtime serves:
  • Any sim runtime: pose, joints.
  • MuJoCo only: camera frames, get_video(), depth, point clouds, LiDAR — otherwise SimulationNotRunningError / SimulationLevelError.
  • Not in simulation: imu sensor and control surfaces — twin.commands.*, twin.locomotion.*, twin.flight.* and their twin shortcuts (twin.move_forward(), twin.takeoff(), twin.land(), …) — raise NotSimulatedError (live/driver-only).
  • WIP : gps, compass sensors aren’t implemented in any runtime yet.

See simulation in action

Autonomous rover inspection

Build and run an AI-driven inspection mission in a fully simulated environment.

Train a VLA with SO-101

Collect data, train a vision-language-action model, and validate in sim before touching hardware.

Go2: digital to physical

Configure a Unitree Go2 in simulation, then flip the same code onto the real robot.

Sandwich-making robot (SmolVLA)

Train, evaluate, and iterate a manipulation policy with simulation in the loop.