# Getting Started

It is strongly recommended that you work through this guide if you have never run CloudXR.js before.

## The Pieces of a CloudXR.js Deployment

Even for development, you'll need all the pieces of a CloudXR.js deployment in order to build and test a client. These are:

- a CloudXR Server
  - with a top-end NVIDIA GPU or 2 (e.g. dual RTX 6000 Ada)
  - which will run
    - the CloudXR Runtime
    - an OpenXR application (the thing you want to render on the server but see on the client)
- a CloudXR.js development workstation
  - with Node.js and `npm`
  - which will run
    - the CloudXR.js sample client build
    - a Node-based development web server
- a CloudXR.js client
  - which is one of:
    - a Meta Quest 3 with its built-in Browser app
    - a desktop browser: Google Chrome or Edge (IWER automatically loads for WebXR emulation)
  - which will run...
    - the CloudXR.js sample client served from the development web server.

We recommend that for your first experience, all above run on the same computer to eliminate networking related issues.

## High Level Workflow

You need both a working client and a working server in order to test. Typically we follow a startup flow where server starts before the client:

1. CloudXR Runtime
2. Server XR application
3. Sample client build + web server
4. Test from the same computer
5. Test from Quest 3 or a different computer

## Detailed Requirements

### CloudXR Server

Minimum: Single NVIDIA RTX 6000 Ada / L40 GPU or equivalent

Recommended: Two (2x) NVIDIA RTX 6000-class Ada (or later) GPUs:

- RTX 6000 Ada
- L40 / L40S
- RTX 6000 PRO Blackwell (Workstation, Max-Q Workstation, or Server)

Additional requirements:

- Linux OS (required for Isaac Lab Teleoperation)
- Docker and NVIDIA Container Toolkit (Linux only)
- Network: Wired Ethernet connection recommended

### Client Device

Supported headset:

- Meta Quest 3 (OS version 79 or later) - only headset validated for this release
- Uses built-in Browser app (no special software installation needed)
- Some manual browser configuration required (see Client Setup Guide)

For development/testing:

- Desktop Google Chrome (IWER automatically loads for WebXR emulation)

### Network Requirements

Critical requirements:

- Latency: ≤ 40ms required, ≤ 20ms recommended
- Bandwidth: 200+ Mbps per streaming connection
- WiFi: WiFi 6 (WiFi 6e recommended) at 5GHz or 6GHz
- At most one WiFi hop: Either server or client must use wired Ethernet

See Networking Setup Guide for detailed configuration examples.

## Step-by-Step Guides

Following the high-level workflow above, use these guides to set up each component:

### 1. Set Up CloudXR Runtime and Server Application

Choose an OpenXR server application to stream:

- Isaac Lab Teleoperation - Robot learning and teleoperation workflows

The guide includes instructions for setting up the CloudXR Runtime alongside the server application.

### 2. Build and Serve a Sample Client

Build one of our example web clients:

- WebGL Sample - Simple example using vanilla WebGL
- React Sample - Example using React and Three.js

### 3. Test and Configure

- Test from the same computer first - Follow the desktop testing sections in the sample guides
- Test from Meta Quest 3 - See Client Setup Guide for browser configuration
- Configure networking (if needed) - See Networking Setup Guide for firewall and proxy examples

## Advanced Topics

- Session APIs - Programmatic control of CloudXR sessions
- Telemetry - Performance monitoring and debugging