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):

  1. Server setup (~15 minutes plus build tools install time)

    1. Download and install git.

    2. Download and install an edition of Visual Studio, 2022 or later, that includes CMake and C++ development tools (or other CMake-compatible IDE).

    3. Clone the CloudXR LÖVR Sample app repository.

    4. Download the CloudXR Runtime.

    5. Copy the CloudXR Runtime zip file to the directory cloudxr-lovr-sample.

    6. Open a Visual Studio Developer Command Prompt or PowerShell terminal.

    7. Navigate to the directory cloudxr-lovr-sample.

    8. Run build.bat to build the sample app.

    9. Run run.bat to run the sample app.

    10. Configure firewall rules if needed.

      Note

      For a quick start on Windows, temporarily disable Microsoft Defender Firewall.

    11. Note your server’s IP address.

    12. Consult the CloudXR LÖVR Plugin README for more details and troubleshooting.

  2. Client setup (~10 minutes plus Xcode install time)

    1. Clone the CloudXR Generic Viewer sample app repository.

    2. Open the CloudXRViewer.xcodeproj project in Xcode.

    3. Add CloudXR Framework as a package dependency.

      1. Right click the project in the Project Navigator and select Add Package Dependencies.

      2. Enter the URL https://github.com/NVIDIA/cloudxr-framework and select Add Package.

      3. Select the CloudXRKit package and click Add Package.

      4. Select the CloudXRViewer-visionOS (or CloudXRViewer-iOS) target in Choose Package Products….

    4. At the top of the Xcode window, select the CloudXRViewer-visionOS (or CloudXRViewer-iOS) target.

    5. Build and run the sample to launch it in the simulator.

    6. Consult the CloudXR Generic Viewer README for more details and troubleshooting.

  3. Connect and test

    In the client app:

    1. Set Zone to Manual IP Address.

    2. Enter your server’s IP address.

    3. Enable hand tracking.

    4. Click Connect.

    On the client, you should see:

    1. Text saying “Received: no data” from the LÖVR sample

    2. 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):

  1. 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 --webrtc to enable streaming to browsers.

  2. Web client setup (~20 minutes plus build tools install time)

    1. Download the CloudXR.js package (from NGC after Early Access approval).

    2. Follow the directions in the Simple WebGL example.

    3. For desktop testing: Run with npm run dev-server.

  3. Connect and test

    1. 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.

    2. 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:

    1. Run your web client with npm run dev-server:https to enable HTTPS.

    2. Follow the WebSocket Proxy Setup to enable SSL streaming.

    3. Open the web app on your VR device’s browser.

Build Custom Clients#

Replace the LÖVR Sample with Your Application#

Move to Production Deployment#

To deploy beyond your local network:

  1. Set up secure connections with TLS certificates.

  2. Configure firewall and NAT rules for internet access.

  3. Use Stream Manager for session and credential management.

Add Advanced Features#

Extend your streaming application:

Essential Resources#

For getting started:

For core documentation:

For server integration:

For advanced features:

For common issues: