Developer Documentation

May 26, 2026 · View on GitHub

Internal reference for contributors to the NVIDIA RTX Remix Toolkit.


Quick Start

Prerequisites

  • Windows 10 or 11
  • Git
  • GPU with RTX support
  • ~50 GB free disk space

For full hardware and software requirements, see Technical Requirements.

Get the Source Code

git clone https://github.com/NVIDIAGameWorks/toolkit-remix.git
cd toolkit-remix

Build the Project

.\build.bat

The first build downloads all dependencies (Kit SDK, Python 3.10, tools) automatically via packman. Subsequent builds are incremental. See Tech Stack Overview for how the build pipeline works.

Run the App

.\_build\windows-x86_64\release\lightspeed.app.trex_dev.bat

Developer mode — includes verbose logging and extension hot-reload. See Repo Tools → Run for all launch options and flags.

Format Your Code

.\format_code.bat

Auto-formats all Python files with ruff (style + import sorting) and C++ files with clang-format. Run before every commit to avoid formatting-only diffs in review. See Repo Tools → Root Scripts for all available scripts.

Lint Your Code

.\lint_code.bat all

Runs ruff checks with auto-fix. Catches common errors, unused imports, and style violations that formatting alone doesn't cover. Both format and lint can be automated with pre-commit hooks — see Repo Tools → Root Scripts.

Run Tests

.\_build\windows-x86_64\release\tests-<extension.name>.bat -n default -- --no-window

Runs user-written tests for a single extension. See Running Tests for filtering, coverage, and troubleshooting.

Build the Documentation

.\build_docs.bat

Builds the Sphinx documentation locally. Output lands in _build/docs/. Useful for previewing doc changes before submitting. See Repo Tools → Root Scripts for all available scripts.

Submit a Pull Request

Before opening a PR, check every item in the Review Checklist: branch naming ( dev/<user>/<feature>), version bumps for modified extensions, changelog entries, and ≥75% test coverage on new code.

External Contributors

Fork this repository, create a development branch, and submit a Pull Request against main. An automated bot will prompt you to sign the Contributor License Agreement via your PR's comment page.


Table of Contents

Getting Started

PageDescription
Tech Stack OverviewHow repoman, packman, Kit SDK, premake, and Python fit together. The build pipeline from build.bat to a running app.
Git WorkflowBranch naming, commit format, and merge request process.
Running TestsTest commands, filtering with -f, troubleshooting (registry sync, timeouts), and coverage reports.
Review ChecklistPre-submission checklist: action undoability, USD context compatibility, dependency management, docstrings, version bumping, and changelog updates.
Learning ResourcesKit SDK, USD, and Omniverse documentation and video tutorials.

Architecture & Design

PageDescription
Code ArchitectureUSD contexts, extension lifecycle, design principles, event subscriptions, and system-level patterns (Commands, Factory/Plugin, Settings, Job Queue, Pip Archive).
Extension GuideExtension naming, dependency direction, namespaces, directory layout, extension.toml reference, premake5.lua boilerplate, Python stubs, and docs/README.md structure.

Code Quality Standards

PageDescription
Code StylePython 3.10, max 120 chars, black + isort + ruff, naming conventions, no lazy imports, __all__, license headers, and Google-style docstrings.
Engineering StandardsFix root causes, never paper over. Anti-patterns table and smell tests for broken async, swallowed exceptions, and design problems.
Testing Standards75% coverage requirement, plan-before-code, unit vs E2E, Arrange/Act/Assert, test naming, and anti-patterns.

Implementation Patterns

PageDescription
Building UI Componentsomni.ui layout guidelines: alignment, spacing, dimensions, and Remix stylesheet conventions.
Implementing CommandsUndoable user actions with omni.kit.commands.Command: do()/undo(), grouping, dispatch, and testing.
Implementing Service EndpointsREST endpoints with ServiceBase and omni.flux.service.factory: routing, registration, and testing.
Implementing Stage Manager PluginsThe Stage Manager plugin system: 8 plugin types, schema config, and Flux/Lightspeed layering.
Implementing Ingestion Pipeline PluginsValidation framework: 4 plugin types, execution flow, DataFlow, and mass validation.
Adding Pip Package DependenciesThird-party packages via omni.flux.pip_archive: OSRB requirement, pip_flux.toml, and post-merge steps.

Development Tools

PageDescription
Repo ToolsAll root-level scripts: build, run, format, lint, build docs, pre-commit hooks, repo subcommands, and CLI launchers.
VSCode / Cursor SetupWorkspace setup, recommended extensions, tasks, and debug config.
PyCharm SetupPython path, run profiles, scope config, and external tools for format/lint.
DebuggingAttaching debuggers to Kit: debugpy (VSCode) and PyCharm Professional. The break flag trick for tests.
ProfilingPerformance profiling with Tracy: app-start and on-demand (F5).