Streaming Omniverse to Meta Quest and Browsers: CloudXR.js Client Overview#
Note
Applies to: Spatial Extensions, Kit 109.0.3+, CloudXR 6
The Meta client path uses CloudXR.js, a JavaScript SDK, to stream spatial XR content from an Omniverse Kit server to web browsers running on XR headsets. The SDK uses WebXR (Immersive Web) for browser-based XR and WebRTC for low-latency media transport.
Tip
No headset required for initial testing You can validate the full CloudXR.js pipeline from desktop Chrome without any headset hardware. The CloudXR.js samples include IWER (Immersive Web Emulator Runtime), which emulates an XR device in your browser. See the Quick Start for the desktop-first workflow.
Supported Devices#
Device |
OS Requirement |
Browser |
Notes |
|---|---|---|---|
Meta Quest 2/3/3S |
OS 79+ |
Meta Quest Browser (Chromium) |
HTTP and HTTPS modes |
Pico 4 Ultra |
Pico OS 15.4.4U+ |
Pico Browser |
HTTPS mode only |
Desktop (dev) |
Any |
Any |
Uses IWER for XR emulation |
Architecture#
The CloudXR.js path involves two connections:
Web server -> Browser: The headset browser loads the CloudXR.js web application from an HTTP/HTTPS server
Browser -> Kit server: The browser connects directly to the Kit server’s CloudXR 6 (WebRTC) runtime through WebSocket (signaling) and WebRTC (media)
Key Features#
WebXR integration – Uses the Immersive Web standard for head and controller tracking
Hand tracking – WebXR hand tracking on supported devices (Meta Quest 2/3/3S)
Opaque data channels – Bidirectional messaging for application-level communication
Audio streaming – Spatial audio from the server
IWER desktop emulation – Automatic XR device emulation for desktop development
Framework agnostic – Works with vanilla WebGL, React Three Fiber, or any WebXR-compatible framework
HTTP and HTTPS modes – HTTPS required for production and Pico devices
Sample Applications#
CloudXR.js sample applications are available at NVIDIA/cloudxr-js-samples:
Sample |
Description |
|---|---|
|
Minimal WebGL client – best for getting started |
|
React Three Fiber client – for React-based projects |
Kit Server Requirements#
The Kit server must be configured with:
XR extensions enabled (see Create a Kit XR App)
OpenXR Runtime set to
CloudXR 6 (WebRTC)XR started (click Start XR in the XR panel)
Important
Use CloudXR 6 (WebRTC) for Meta and web clients. The CloudXR 6 (Native) runtime is for Apple clients and will not work with CloudXR.js.
Network Ports#
Port |
Protocol |
Purpose |
|---|---|---|
8080 |
TCP |
Web application server (configurable) |
49100 |
TCP |
CloudXR Runtime signaling (WebSocket) |
47998 |
UDP |
CloudXR Runtime media (WebRTC) |
48322 |
TCP |
WebSocket proxy (required for HTTPS mode) |
Next Steps#
Next step:
Setup and Build – Install dependencies and build the web client
See also:
Connect to Server – Connect from a headset or desktop browser