Pollux Logo

Building and Deploying an Omniverse App Using Kit

NVIDIA Omniverse is a powerful real-time simulation platform that supports highly extensible workflows through custom extensions and applications. One of its core components, Omniverse Kit, allows developers to create and package standalone applications that integrate these extensions for specific use cases.

The packaging process organizes and structures project assets for delivery and distribution. The specifics of the packaging step will vary depending on your desired distribution method. A package is a collection of all files that make up a project. While it is possible to manually assemble a package by creating an archive containing the necessary files and folders, Omniverse provides a convenient, more efficient alternative through the Repo Package tool. This tool ensures that all required configuration files are present and that the build folder is structured correctly.

In this post, we walk through the process of building and deploying a custom Omniverse Kit-based App, including:

  • Setting up the Kit environment
  • Adding a custom extension (in this case, POLLUX for OpenModelica data)
  • Packaging the App
  • Deploying it through the Omniverse Launcher

Developer Guide

To get started with Omniverse App development and deployment, NVIDIA provides a comprehensive developer guide:

You can also download a free developer license and Omniverse packages via the same link.

Omniverse Kit offers a command-line tool (repo package) to package your application, checking for all necessary files and directory structure before bundling it into a deployable format.

Prepare Your Custom Extension

In this walkthrough, we use a custom extension built by POLLUX that integrates OpenModelica data into Omniverse. This extension is added to the Kit App and later packaged for deployment.

Install Omniverse Kit

From the Omniverse Launcher, search for and install the Kit application.

Image

This provides the core environment for running and testing custom Kit Apps.

Build a Simple App Using the Kit Template

To build a custom application, start with the official Kit App Template.

Clone the repository and run the build command:

Image

This creates the default app structure, including the app launcher and .kit configuration.

Create a .kit Configuration File

Within source/apps, create a file like my_company.my_app.kit to define the application’s entry point and extension dependencies.

Image

This file is essential for launching and configuring your custom app.

Launch Your Kit App

You can run your new app with the following commands:

  • Windows:
.\_build\windows-x86_64\release\my_name.my_app.bat
  • Linux:
./_build/linux-x86_64/release/my_name.my_app.sh

This launches your Kit App with the configuration and extensions defined in your .kit file.

Register Your Extension in VS Code

Within the source/apps directory, you can register custom extensions by specifying the Git URL or path in the configuration file.

In this example, the POLLUX OpenModelica extension is added directly to the app’s extension list.

Image

Custom Name and Readme

Image

Add Your Extension from the Omniverse UI

Once the app is running, open the Extension window in the UI and search for the registered custom extension. Enable it to load its UI and functionality into the running application.

Image

Extension Integration Complete

After the custom extension is activated, you will see the UI and features provided by the POLLUX Extension directly integrated within your standalone Kit App.

Image

Package the Application

Once your app and extensions are verified to be working, package the application using the repo package command:

repo package --launcherImage

This command will generate a .zip file containing everything needed for installation via the Omniverse Launcher.

Fixing Packaging Errors: UnicodeDecodeError

You might encounter encoding errors (e.g., UnicodeDecodeError) while registering your packaged app.

Image

To fix this, update the file reading logic in package_app/main.py to explicitly define UTF-8 encoding:

ImageImage

This ensures compatibility across different systems and encodings.

Packaging Options Overview

ImageImage

These options let you choose between complete or minimal builds, depending on your deployment scenario.

Install the Packaged App

Once packaging is complete, you can install the .zip App package using this command:

Image

This command installs the app into the Omniverse Launcher.

Verifying the App Installation

After installation, your custom app will appear as a standalone app in the Omniverse Launcher, with its name and icon displayed like any other official Omniverse tool.

Image

Customize the Launcher UI

You can modify the launcher display settings such as app name, description, and system requirements by editing:

source/launcher/description.toml

ImageImage

This file determines how your app will appear in the Launcher and on Omniverse Exchange.

Customize the App Icon

Customize the App Icon

This helps your app stand out and look professional inside the Launcher.

Final Result: POLLUX App Registered in Launcher

After completing all steps, the POLLUX-integrated app is now visible in the Omniverse Launcher and launches as a standalone Omniverse Kit-based application.

Image

Conclusion

Using Omniverse Kit, you can not only develop powerful extensions but also package them into full-fledged, standalone applications.

By integrating custom extensions (like the one used here for OpenModelica data), and deploying them via the Launcher, you unlock possibilities such as:

  • Internal tool distribution
  • Client-facing custom apps
  • Team-wide simulation workflows
  • Deployment-ready simulation environments

This example lays the groundwork for even more advanced setups—such as Dockerized deployment, REST API integrations, and cloud-based services.

Share this post:

Copyright 2025. POLLUX All rights reserved.