Skip to main content

Hosted Teleop

Operate a DimOS robot remotely from any browser or Quest headset over WebRTC. The robot dials out to a hosted Cloudflare Realtime SFU broker (teleop.dimensionalos.com), so you don’t need to open any inbound ports on the robot’s network — it works behind a home router, on Wi-Fi, or wired LAN.

Quick Start

The robot registers with the broker. Open teleop.dimensionalos.com, log in, and your robot appears under Available Robots. Click Connect and you’re driving.

Get an API key

  1. Visit teleop.dimensionalos.com and sign up.
  2. On the dashboard, API Keys → + New Key.
  3. Copy the key (shown once) and pass it as TELEOP_API_KEY when launching the blueprint.
The key is per-robot; one key authenticates one robot. The same user account can manage many keys for different robots.

Available blueprints

Pair with the recorder to log a session and emit a transport-stats report:
This writes recording_teleop_<ts>.db plus a report.md next to it on disconnect. Reports can also be regenerated from an existing .db:

Operator inputs

The browser is modality-agnostic — it just streams whatever the device gives it, and the robot blueprint decides what to do with it. Shift = 2× speed, Ctrl = ½× speed and strafe on keyboard.

Live metrics HUD

While connected, the operator sees a metrics overlay (corner pill in the browser, in-headset stats panel in VR). Color-coded green/amber/red based on video and command-plane health: The recorder captures these to the session .db and summarizes them in report.md.

Configuration

HostedTeleopConfig (base, applies to both subclasses): HostedTwistTeleopConfig adds: HostedArmTeleopConfig adds:

How it connects

Datachannels are negotiated (SCTP ids assigned by the broker). The video track is added before the SDP offer; the broker pulls it onto each operator session and renegotiates so the operator’s ontrack fires. For the WebRTC / aiortc / Cloudflare implementation details (MAX_BUNDLE constraints, candidate propagation, the throwaway SCTP id 0 channel, thread model), see dimos/teleop/quest_hosted/README.md.

Known Limitations

  • Single operator per robot session today. Multi-viewer / single-driver+watchers is roadmapped.
  • TURN is not wired yet. ICE relies on STUN only, so direct connectivity must succeed — works on most home/office networks, can fail on symmetric NAT or cellular. TURN field plumbing exists.
  • No auto-reconnect. If the link drops mid-session, the operator must click Connect again. The robot side stays up; reconnection is supported, just manual.
  • Single camera per robot today. Multi-camera support is roadmapped.
  • Operator is in a fixed slot until clean disconnect — a tab-close leaves the slot held until the broker’s grace timeout fires (or the robot restarts).