Generated banner for Omniverse Realtime Viewer
Generated logo for Omniverse Realtime Viewer

Omniverse Realtime Viewer

NVIDIAOfficialCreated by NVIDIA Omniverse

  • Skill
  • Tool integration
  • Software development
  • Apache-2.0
  • Medium risk

From the author

Use as the top-level router for Omniverse Realtime Viewer USD apps, XR delivery, SPG GPU processing, stylized rendering, and focused viewer reference documents.
— the description by NVIDIA Omniverse

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The Omniverse Realtime Viewer skill acts as a central routing and architectural framework for developing USD-based 3D viewer applications. It provides a structured approach to composing rendering, scene state, and delivery mechanisms, ensuring that developers can integrate OVRTX rendering, OVStage scene management, and various UI or streaming adapters effectively. The skill emphasizes a modular architecture where the viewer runtime, UI/input adapters, and delivery systems are decoupled, allowing for consistent behavior across local and streamed environments.

What it does

  • Provides a routing architecture for USD viewer apps, XR delivery, and GPU-accelerated rendering.
  • Defines the separation of concerns between viewer runtime, UI adapters, and delivery systems.
  • Offers guidance on integrating OVRTX for high-fidelity 3D rendering.
  • Establishes conventions for camera interaction, scene state management, and input handling.
  • Supports the implementation of specialized features like stylized rendering and CAE/CFD visualization.
  • Provides protocols for agent-to-UI communication and scene control.

When to use it

  • When starting the development of a new USD-based realtime viewer application.
  • When integrating advanced rendering features like stylized visualization or AOV switching.
  • When building XR or spatial editing capabilities into an existing Omniverse application.
  • When you need to standardize the architecture for local and streamed viewer deployments.
  • When implementing chat-driven scene control or agent-based inspection of a 3D scene.

Advantages

  • Promotes a clean, modular architecture that separates rendering logic from UI and transport.
  • Ensures consistent behavior across different delivery methods, such as local windows or WebRTC streaming.
  • Provides clear paths for extending functionality without disrupting the core viewer runtime.
  • Facilitates the integration of complex simulation and visualization data into the viewer.
  • Standardizes conventions for scene state, selection, and camera control.

Usage examples

“How do I set up a basic USD viewer application using the Omniverse Realtime Viewer architecture?”
The agent will guide you to start with the viewer app reference, resolve dependencies, and implement the core runtime owner to manage the OVStage and OVRTX renderer.
“I need to add stylized rendering to my existing viewer. Where should I start?”
The agent will direct you to the stylized visualization references to implement the required USD/Lua/CUDA nodes within your existing runtime owner.
“How can I enable an AI agent to control the viewer scene?”
The agent will point to the A2UI Scene Copilot reference to implement an operation interface that allows the agent to send commands through the existing runtime owner.
“How do I switch between different render outputs like beauty and depth in my viewer?”
The agent will explain how to use the AOV switching reference to map RenderVars and update the RenderProduct's orderedVars through the runtime owner.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/nvidia/omniverse-realtime-viewer/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip omniverse-realtime-viewer.zip -d .agents/skills

Documentation by NVIDIA Omniverse

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->

<!-- SPDX-License-Identifier: Apache-2.0 -->

Omniverse Realtime Viewer

Build responsive USD viewers by composing OVRTX rendering, OVStage scene state, and the delivery/UI libraries appropriate to the app. Use this package for viewer architecture and interaction; use each selected SDK's upstream guidance for installation and exact release-specific APIs.

Start With The App

  1. When delivery is explicit, select its recipe through references/routing.md and follow its current phase. Otherwise start with references/usd-viewer-app/README.md. For an existing app, keep its architecture and read only the references for the requested change. Broad app, conventions and UI catalogs are lookups as needed.

  2. Resolve the selected libraries through references/dependencies/README.md. Preserve the project's manifest unless an upgrade is requested.

  3. Build a working frame and camera interaction in the chosen shell, then add the requested capabilities. Read references/conventions.md for shared input, camera, selection, and protocol conventions.

  4. Use references/viewer-ux-workflow/README.md for broader interface design. Loading, selection feedback, errors, and input responsiveness belong in the first working app, alongside rendering.

  5. Validate the actual delivery path with references/validation.md. A browser screenshot does not validate a native window or a different transport.

Architecture

OwnerResponsibility
Viewer runtimeOwn the live OVStage, publication clock, OVRTX renderer, scene changes, and render stepping.
UI and input adapterDisplay frames and copied app state; send user intent to the runtime owner.
Storage/query/simulation workersPerform their assigned work and return results through the selected integration boundary.
Delivery adapterPresent locally or stream through ovstream; respect frame ownership and backpressure.

Use OVRTX for USD/3D rendering. Browser apps display its WebRTC video; local apps present its output through their native shell. A missing GPU means rendering is unverified, not a reason to substitute a browser 3D renderer.

Keep viewer cameras, settings, effects, and transient edits in app-owned session or runtime state so the source USD stays intact. Serialize scene mutation and render stepping through the runtime owner. Read references/ovstage-ovrtx-integration/README.md for that loop, then the population or data-plane references when implementing scene loading or attribute writes.

Keep expensive loading and metadata work off the UI and render threads. Keep transport details behind a delivery adapter so camera, selection, properties, and loading state can be reused across local and streamed shells.

Add Capabilities As Needed

Use references/routing.md to select camera/picking, scene management, render settings, cloud assets, simulation, editor tools, deployment, or CAE/CFD visualization. Read the selected capability's implementation flow and its linked contract; the full reference catalog is not a prerequisite for a first frame.

For simulation, use the routing reference's Simulation Ecosystem section plus references/realtime-sim-integration/README.md. For UI-driven forces or control, add references/interaction-round-trip/README.md.

For example scenes, use references/usd-sample-data/README.md. When a runtime failure needs diagnosis, use references/troubleshooting/README.md and the selected SDK's matching release guidance before changing the architecture.

Solid Modeling: Upstream First

For usd-brep, exact BRep, solid modeling, kernel failures, CAD topology, or BrepArray questions, first read references/dependencies/README.md → USD BRep. Follow the owning repository's current agent guidance, skills, operation docs, and package API before selecting local integration references. Discover the upstream router rather than assuming skill names or directory layouts remain fixed. Upstream owns modeling semantics, schema rules, tuning, and diagnostics; this package owns OVRTX display, worker handoff, selection mapping, and publication timing.

GPU Processing And Stylized Viewers

For custom GPU processing, chained outputs and lens sampling, read references/spg-processing/README.md. For toon, ink, technical/X-Ray styles, geometry strokes or full wireframe, continue to references/stylized-visualization/implementation.md. Its USD/Lua/CUDA starting node and geometry/depth/composite build sequence work with the selected viewer recipe; use references/stylized-visualization/style-recipes.md for the preset math and references/stylized-visualization/README.md for supporting contracts. Implement the result inside the existing OVRTX/runtime owner and deliver the published processed output. These instructions do not require a sample checkout or a prior stylized-rendering implementation.

For an optional usd-brep geometry source, first read references/dependencies/README.md → USD BRep and the owning repository's current agent guidance, skills, and operation docs; then read references/stylized-visualization/usd-brep-source.md for the display boundary.

XR Viewers

For headsets, immersive viewers, or spatial editors, start with references/xr-viewer-recipe/README.md. Resolve SDK setup and contracts through references/dependencies/ovxr.md; the library owns OpenXR lifecycle and frame submission. For controllers, hands, navigation, or scene tools, add references/xr-spatial-input/README.md and references/ovxr-python-interactions/README.md. For projection-integrated UI, read references/ovxr-composition-ui/README.md and references/ovxr-composition-ui-validation/README.md.

Files

references/a2ui-scene-copilot/README.md

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->

<!-- SPDX-License-Identifier: Apache-2.0 -->

A2UI Scene Copilot

Use this reference for agent-to-UI viewer operations, a scene copilot, chat-driven scene control, or tools that let an agent inspect and operate a viewer. Build the explicit operation interface first; add language-model orchestration and a chat or tool UI when requested.

The viewer remains the scene authority. An agent uses the same application commands as ordinary controls; it does not acquire a stage handle or a second renderer. The request envelope below is an application protocol, not an OVRTX API or a substitute for an agent framework's wire protocol.

Compose the operation path

operation form or agent tool
  -> correlated client request
  -> endpoint validation and bounded command queue
  -> existing runtime owner
       -> copied query state / worker preparation
       -> stage publication or renderer/app interaction
  -> completion result and copied state
  -> tool result, controls and displayed viewer frame

Keep WebSocket I/O on its event loop and SDK work on the viewer's existing runtime owner. Calling an adapter method from a socket callback is safe only when that method enqueues work. Loading and authored metadata can use isolated workers; their results return to the owner before affecting the live scene. Use stage-management for preparation, generation invalidation, source lifetime and replacement, and ovstage-ovrtx-integration for publication.

For WebRTC, compose this endpoint beside the existing streaming server and use streaming-client for video connection. The same operation adapter can serve a native viewer through its chosen transport. Resolve runtime packages through dependencies; choose the WebSocket and optional agent packages for the app's language and manifest. Keep the operation service opt-in when extending an existing viewer.

Advertise capabilities before accepting commands

On connection, send a capability snapshot: supported operations, parameter schemas, effects, relevant bounds, current scene generation and copied app state. A client waits for this handshake before enabling tools or controls. Advertise only operations the current implementation can complete.

CapabilityContract to define
Scene and property queriesCanonical paths, pagination or bounded previews, authored versus live values, observed generation and ordinal
SelectionSupported selection cardinality/modes and the common tree/pick selection path
Output choiceAvailable display outputs and when a requested output becomes active
Property editsExplicit writable attributes or semantic commands, value types/shapes, units, coordinate space and edit ownership
Variants, open and resetSource types, composition policy, retained edits, camera policy and replacement completion

A generic set_property name does not make arbitrary USD values writable. Keep inspection schemas separate from write schemas. An authored attribute or bounded array preview describes the source; it need not describe the current simulation pose or be a lossless value that can be written back. Return live transforms through the runtime adapter and label authored metadata separately. Use prim-info-display for this split and prim-transform-safety for coordinate-space conversion. Define JSON encodings for supported values; reject unencodable results with a correlated error instead of leaving requests pending.

Apply the same edit ownership as ordinary controls. For example, a simulator or scientific producer can own a geometry subtree and its composition. The agent should use an advertised workload command or switch scenes, rather than bypass that owner's controls. Variant edits follow the application's non-destructive composition policy, refresh metadata, and retain edits only for surviving paths.

Correlate requests through completion

One possible envelope is:

{"op":"select","request_id":"pick-7","generation":3,"params":{"paths":["/World/Cube"]}}

Replies carry the same operation and request ID, with either a result or a structured error. Notices are separate messages and never complete a request. Use request IDs unique within a connection session and keep pending IDs protected until they finish, independently of any bounded completed-ID cache.

Use one receive loop per connection. It dispatches notices to state consumers and responses to a pending-request map; each caller awaits its own completion. The following is application pseudocode, not an SDK class:

call(operation, parameters):
    wait for capability handshake
    validate against advertised schema
    register pending[id] with deadline before sending
    send operation, id, observed generation and parameters
    await pending[id]

receive(message):
    notice -> apply copied state if still current
    matching response -> resolve or reject pending[message.request_id], clear timer
    unknown or expired response -> discard

connection closes:
    reject pending requests and clear timers
    reconnect -> acquire fresh capabilities and state

This permits concurrent calls without one caller consuming another's reply. Browser controls and widgets can share this client instead of opening a new connection for every slider edit. Coalesce compatible drafts before dispatch; keep Reset and scene replacement as explicit commands. Cap connections, message/result sizes and pending work, and return an overload error when full. State notices may be coalesced; correlated replies must retain their identity. The selected WebSocket library owns its receive and buffering contracts; for Python, consult the public client reference.

Execute on the owner and report the actual effect

After admission, the owner rechecks the request's generation, deadline, cancellation and edit permissions. Recheck after asynchronous preparation and immediately before committing a scene change. Discard stale results even when the same prim path exists in the replacement scene. Property panels also need a request/selection identity so an older response cannot replace newer details.

Choose publication according to the work performed:

  • Stage writes: reserve an ordinal, write and wait, advance the floor, then let the existing render loop consume it. Use ovstage-data-plane.

  • Selection: update the common selection state and native renderer groups through native-picking-selection. Renderer-only group changes do not require an invented stage write.

  • Output changes: follow aov-switching. This may publish RenderProduct attributes. Distinguish the desired output from the active output confirmed by its copied frame.

  • Scene composition: follow the normal scene handoff and wait for its first valid frame before reporting replacement success.

Return the scene generation and observed state; include a committed ordinal when a stage publication occurred. An application revision can order selection or other app-only changes without advancing the stage floor. State whether a result acknowledges a committed command or an observed frame. A tool response alone does not establish that the browser has decoded and displayed that frame.

On disconnect or timeout, cancel uncommitted work and retire its workers and sources through the normal lifetime rules. A lost response does not prove that a command failed to commit. Requery state after reconnect before retrying a mutation; cancellation is not rollback of an already performed edit. During shutdown, stop accepting requests before retiring the runtime and its consumers.

Add an agent and tool UI when requested

An operation form can use this interface without a language model. For a real agent, choose the provider/orchestrator appropriate to the product, then bind the advertised schemas as tools. Each tool calls the correlated client and returns the structured result or error; it should not guess unadvertised attributes, paths, aliases or writable types.

LangChain tools provide schema-based tool definitions for an agent backend. A LangGraph workflow can compose those tools when orchestration is needed. For a React chat or inline tool interface, use CopilotKit's current reference and its selected version's execution/rendering hooks. Execution and rendering are separate roles: a widget renders status and sends edits through the same operation client. AG-UI can carry agent interaction events between the agent and frontend; adapt that boundary to the viewer operation protocol rather than treating the two as interchangeable.

Give the agent current capabilities and scene context, and refresh them after scene changes. Keep scene strings and tool results as data; the application's instructions and permissions govern execution. Enforce any product approval policy at the command boundary shared by UI and agent tools.

Compose the chat or operation panel with viewer-layout-patterns and preserve the viewport's stable size and input routing. Show pending, completed and failed operations honestly. A rejected edit should leave camera navigation available; controls should refresh from authoritative state after successful mutations.

Bind a local control endpoint to the intended local interface and validate browser origins. Remote access needs an explicit authentication, authorization and secure transport design; follow the selected deployment and transport references. Provider credentials belong on the agent backend, not in browser capability messages. Ports and process placement are application configuration.

Validate the selected product

Protocol tests can check correlation, concurrent notices, schema errors, bounded queues, cancellation and stale-generation rejection without rendering. Use the actual viewer for visible selection, property edits, output switching, variant changes, source preservation and recovery while ordinary controls remain usable. Compare reported live values and displayed effects; a nonblack frame or a successful tool message alone does not validate an edit.

When a real agent is part of the product, also exercise natural-language input, actual tool selection, parameter generation, errors and the resulting visible state through that agent. Explicit operation tests validate the viewer protocol; they do not validate a model provider, orchestration framework or chat interface. Use validation for the chosen delivery path.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs Python, Needs Node.js

The author says: Orchestrator skill. Downstream focused references may require NVIDIA GPUs, ovrtx, ovstream, ovui, OpenUSD, Python, Node/React, Tauri, Electron, C++, or cloud GPU deployment access depending on the selected viewer path.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs
  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
NVIDIA Omniverse
Publisher
NVIDIA (Official)
Source
NVIDIA/skills · skills/omniverse-realtime-viewer · commit fce3cca
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE-APACHE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by NVIDIA Omniverse or NVIDIA.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download omniverse-realtime-viewer.zip