Quick Start Guide#
This guide gets you streaming XR content from a server to a client on your local network.
Important
NVIDIA CloudXR™ requires a complete deployment to test. You need both a server and a client working together. This guide focuses on getting your first local development setup working, then explains how to expand from there.
Local Development Setup#
You are going to set up a server and a client, and stream content from the server to the client. To do this, you’ll need to:
Download, build, and run the CloudXR LÖVR sample on your server
Download, build, and run one of the client sample applications
Connect the two
Why use the LÖVR sample? Because a CloudXR deployment is complex, and many things can go wrong. The LÖVR sample is small, simple, and fast, so you can use it to confirm quickly that your network, deployment, and client are all working before you move on to something big like Omniverse, Isaac Sim, or Unreal Engine.
A few things to keep in mind going into this guide:
For the LÖVR sample, you need a Windows computer with a supported NVIDIA GPU (refer to CloudXR Runtime Requirements).
Note
The LÖVR sample also supports Linux, but this Quick Start assumes you are using Windows. Refer to the end-to-end example for Linux instructions.
For Apple device development, you need a Mac with the right Xcode installed (see CloudXR Framework), and a stable, fast LAN connecting the Mac to the server (refer to Network Setup). You don’t need a device; you can test with a device simulator on your Mac.
For Web development (Early Access), you can use the browser with localhost on your server to test, so you don’t need a device or a network connection for initial testing.
Targeting Apple Devices (Vision Pro, iPhone, iPad)#
Setup steps (~30 minutes total):
Server setup (~15 minutes plus build tools install time)
Download and install git.
Download and install an edition of Visual Studio, 2022 or later, that includes CMake and C++ development tools (or other CMake-compatible IDE).
Clone the CloudXR LÖVR Sample app repository.
Download the CloudXR Runtime.
Copy the CloudXR Runtime zip file to the directory
cloudxr-lovr-sample.Open a Visual Studio Developer Command Prompt or PowerShell terminal.
Navigate to the directory
cloudxr-lovr-sample.Run
build.batto build the sample app.Run
run.batto run the sample app.Configure firewall rules if needed.
Note
For a quick start on Windows, temporarily disable Microsoft Defender Firewall.
Note your server’s IP address.
Consult the CloudXR LÖVR Plugin README for more details and troubleshooting.
Client setup (~10 minutes plus Xcode install time)
Clone the CloudXR Generic Viewer sample app repository.
Open the
CloudXRViewer.xcodeprojproject in Xcode.Add CloudXR Framework as a package dependency.
Right click the project in the Project Navigator and select Add Package Dependencies.
Enter the URL
https://github.com/NVIDIA/cloudxr-frameworkand select Add Package.Select the
CloudXRKitpackage and click Add Package.Select the
CloudXRViewer-visionOS(orCloudXRViewer-iOS) target in Choose Package Products….
At the top of the Xcode window, select the CloudXRViewer-visionOS (or CloudXRViewer-iOS) target.
Build and run the sample to launch it in the simulator.
Consult the CloudXR Generic Viewer README for more details and troubleshooting.
Connect and test
In the client app:
Set Zone to Manual IP Address.
Enter your server’s IP address.
Enable hand tracking.
Click Connect.
On the client, you should see:
Text saying “Received: no data” from the LÖVR sample
Blue cubes tracking your finger joints (hand tracking)
In the simulator the blue cubes will drift gently from side to side, as the simulator creates fake hand tracking data.
Next steps: Refer to Next Steps below.
Targeting Web/Quest/Pico (CloudXR.js Early Access)#
Note
CloudXR.js is in Early Access. Apply for access at the CloudXR Early Access Program.
Setup steps (~40 minutes total):
Server Setup (~15 minutes plus build tools install time)
Set-up steps are the same as for the LÖVR sample, except: Run the server with
run.bat --webrtcto enable streaming to browsers.Web client setup (~20 minutes plus build tools install time)
Download the CloudXR.js package (from NGC after Early Access approval).
Follow the directions in the Simple WebGL example.
For desktop testing: Run with
npm run dev-server.
Connect and test
Open the web app in your browser. By default, its URL is
http://localhost:8080/.Note that this Simple WebGL example automatically loads IWER (Immersive Web Emulator Runtime) for WebXR emulation.
Click Connect and verify streaming from LÖVR sample.
On the client, you should see:
Text saying Received: no data from the LÖVR sample
One or both controllers with button press information
Next Steps#
After you have local streaming working with LÖVR, these are common next steps:
Local Streaming to Devices#
Apple Vision Pro / iPhone / iPad:
If you tested with the simulator, deploy the Generic Viewer to your actual device for the full experience. Follow the device deployment steps in the Generic Viewer README.
Meta Quest 3 or Pico 4 Ultra:
Run your web client with
npm run dev-server:httpsto enable HTTPS.Follow the WebSocket Proxy Setup to enable SSL streaming.
Open the web app on your VR device’s browser.
Build Custom Clients#
Apple Vision Pro / iPhone / iPad:
Follow the CloudXR Framework tutorial to build a custom visionOS/iOS client from scratch.
The tutorial provides a complete walkthrough of integrating CloudXR Framework into your own app.
Web/Quest/Pico:
Explore the React and Isaac Lab examples for more advanced CloudXR.js implementations.
Refer to CloudXR.js Client Setup for integration guidance.
Replace the LÖVR Sample with Your Application#
Isaac Sim / Isaac Lab: Use Isaac Lab on Linux with CloudXR Runtime for teleoperation.
Omniverse Digital Twins: For OpenUSD content in NVIDIA Omniverse, refer to Spatial Streaming for Omniverse Digital Twins Workflow for a complete solution, including deployment to NVIDIA’s Graphics Delivery Network (GDN).
Custom OpenXR app: Follow the CloudXR Runtime integration guide to add CloudXR Runtime to your OpenXR application.
Unreal Engine 5: Follow the comprehensive UE integration guide (2-4 hours) to add CloudXR streaming to your Unreal project.
Existing OpenXR app: Configure the app to use CloudXR as the OpenXR runtime (see CloudXR Runtime).
Move to Production Deployment#
To deploy beyond your local network:
Set up secure connections with TLS certificates.
Configure firewall and NAT rules for internet access.
Use Stream Manager for session and credential management.
Add Advanced Features#
Extend your streaming application:
Custom data channels: Use Opaque Data Channel (server-side) and Message Channel (client-side) for bidirectional communication.
Performance tuning: Review Network Setup for optimization guidelines.
Monitoring: Set up telemetry and streaming statistics monitoring.
Essential Resources#
For getting started:
Getting CloudXR - Download guide for all CloudXR components
LÖVR Sample - Recommended first server application
CloudXR Generic Viewer - Quick-start Apple client sample
CloudXR Framework Tutorial - Build custom Apple client from scratch
CloudXR.js Examples - Web client samples (Early Access)
For core documentation:
NVIDIA CloudXR SDK Overview - System architecture
Network Setup - Network requirements (critical for success)
CloudXR Runtime Requirements - Server hardware and software requirements
FAQ - Common questions
Troubleshooting - Troubleshooting
For server integration:
Getting Started with CloudXR Runtime - Runtime integration guide
Unreal Engine Integration Guide - Unreal Engine 5 integration (comprehensive)
Runtime Management API Reference - Runtime management C API
For advanced features:
XR Opaque Data Channel - Custom data channels (server)
Message Channel API - Message channels (Apple client)
Secure Connection Mode - Secure connections with TLS
Stream Manager - Session and credential management
For common issues:
No connection: Verify network setup and firewall rules
Poor performance: Check bandwidth requirements (200 Mbps recommended)
Questions: FAQ | Developer Forum