Skip to content

Browser-only botrail

The studio does not need the Python server. The core compiles to WebAssembly, and the wasm build bundles it with the UI into a static page: the full studio — posing, planning, collision, USD import — running entirely in the browser. No install, no server, no GPU; host it anywhere that serves files.

Try it now: the live demo — a Franka in the factory cell, served from GitHub Pages. The robot is NVIDIA's official Isaac asset, fetched straight from their CDN; the page itself is just static files.

You can also drop a USD file straight into the viewport — stages become the scene, articulations become robots, the same import pipeline as everywhere else.

How it works

The studio talks to a SessionBackend interface with two implementations: a WebSocket connection to the Python server, or the in-browser wasm session. Same UI, same wire protocol, same Rust core — Architecture has the picture. A server-mode studio build switches into wasm mode with ?wasm in the URL when the wasm assets are present.

Building it

./scripts/build_wasm_demo.sh              # needs wasm-pack + the wasm32 target
python -m http.server -d studio/dist-wasm 8899

The output of build_wasm_demo.sh is studio/dist-wasm/ — deployable to any static host as-is (this documentation site's /demo/ is exactly that, deployed by CI on every push).

What it is for

  • Trying botrail before installing it — the demo is the pitch.
  • Sharing a cell as a URL — no "install this first" in the email.
  • Machines you can't install on — a shop-floor terminal with a browser.

The Python API is, of course, the one thing a static page cannot give you: scripted authoring, baking from code, pytest, exports to disk. The browser build is the studio side of botrail, self-contained.