Failed to load extensions from nucleus

Hi, I’m working as a pipeline engineer on a team using Omniverse, where I develop custom extensions.

I’m looking for best practices for sharing these extensions across our team.

From my research, I understand that Omniverse supports loading extensions from a Nucleus server, and that the GitHub protocol has been deprecated.

However, when I set a Nucleus address (e.g., “omniverse://…”) as an Extension Search Path, I encounter an error.

Is it currently supported to load extensions directly from a Nucleus server? If so, are there any specific configuration steps or requirements I might be missing?

Additionally, what are the recommended best practices for distributing and maintaining custom extensions within a team (e.g., using Nucleus, package registries, or other workflows)?

Here’s the error:

2026-03-22T11:00:06Z [154,453ms] [Error] [omni.ext.plugin] Failed to resolve extension dependencies. Failure hints:

  • No versions of omni.kit.extpath.git that satisfies: [enable list] depends on omni.kit.extpath.git version *
    • Available packages for omni.kit.extpath.git version *:
      (none found)
      Synced registries:
    • kit/default : found 0 packages (couldn’t connect or empty)
    • kit/sdk : found 0 packages (couldn’t connect or empty)
    • kit/prod/default : found 1662 packages
    • kit/prod/sdk : found 728 packages

2026-03-22T11:00:06Z [154,453ms] [Error] [omni.ext.plugin] Failed to add extension path: ‘omniverse://’. Local path is empty or scheme is not supported.

**
Operating System:**
Windows
Linux
Kit Version:
110 (Kit App Template)
109 (Kit App Template)
108 (Kit App Template)
107 (Kit App Template)
106 (Kit App Template)
105 (Launcher)
Kit Template:
USD Composer
USD Explorer
USD Viewer
Custom
GPU Hardware:
A series (Blackwell)
A series (ADA)
A series
50 series
40 series
30 series
GPU Driver:
Latest
Recommended (573.xx)
Other
Work Flow:
Main Issue:
Reproduction Steps:
Error Code:

Hi and thanks for the post. Do you currently already have a Nucleus Server set up? Your own custom server? For omniverse extensions, they are really very simple zip files. You can store them anyway you would like. Just a normal company server, you can load them in locally, put them on a GDrive etc. You do not have to use a Nucleus server. Once you download the zip file, you can use the Extension Manager to load and un-compress the zip file into your extension registry. Or you can do it manually.

I personally would just put them in a shared folder, that anyone at the company can pull down manually. You can try to set up a custom registry but it is much more complex.

Hi Richard,

I’ve set up our Nucleus server and uploaded our extensions there. Since we don’t use shared network folders, I wanted to confirm: Does the Extension Search Path support the omniverse:// protocol?

I’ve verified that the Extension Registry works for publishing and sharing, but I want to ensure we can also load them directly from Nucleus via the search path.

Thank you,

So you have your own Nucleus Server AND your own Extension Registry setup? Let me ask an expert to see what they say.

Here is the information I have recieved:

Setting up a private extension registry on your existing Nucleus server is straightforward - no initial setup is required, as the registry will be created automatically when you publish your first extension.

Configuration Steps

1. Configure Nucleus Accounts
Add your Nucleus credentials to your Kit configuration or repo.toml:

1[settings.exts."omni.kit.registry.nucleus"]
2accounts = [
3  { url = "omniverse://your-nucleus-server/exts", read = "user:password", write = "user:password" }
4]
  • Separate read/write accounts can be specified
  • Format: user:password separated by colon
  • Different accounts can be set per host

2. Configure Registry Settings
In your repo.toml file for publishing:

1[repo_publish_exts]
2signing.enabled = false  # Disable signing for private registry
3use_packman_to_upload_archive = false  # Disable packman upload
4write_auth = "admin:admin"  # Or use ${env:VAR} syntax
5
6registries = [
7  { name = "my_private_registry", url = "omniverse://your-nucleus-server/exts" }
8]

  1. Publish Your First Extension

Use the repo tool to publish:

1./repo.sh publish_exts

The registry structure will be created automatically on first publish, including:

  • registry.gz - Main registry index
  • summaries.gz - Extension summaries
  • packages/[ext].gz - Per-extension metadata
  • archives/ - Extension zip files

  1. Configure Clients to Use Your Registry

On client machines, add your registry to their Kit configuration:

1[settings.exts."omni.kit.registry.nucleus"]
2registries = [
3  { name = "my_private_registry", url = "omniverse://your-nucleus-server/exts", optional = false }
4]

Key Points

  • No manual setup needed - registry is auto-created on first publish
  • Multiple registries supported - can have public and private registries simultaneously
  • Supports various backends - Nucleus, local filesystem, HTTP (read-only), S3
  • Uses Omniverse Client library - benefits from all supported protocols
  • Set default publish target with app/extensions/registryPublishDefault setting

Your Nucleus server just needs to have a path where Kit can write the registry files. The extension system handles all the indexing and metadata automatically.

Thank you very much for your help, Richard. Using the Extension Registries to share extension is working well, and it’s clearly a very powerful feature.

I was wondering, however, if it is possible to use a Nucleus server to share extensions via “Extension Search Paths“ instead of the Extension Registry?

While I expect we will eventually transition to using the Extension Registry, we find the Extension Search Paths approach a bit simpler for our current needs. Specifically, I’d like to confirm if the “omniverse://“ protocol is supported within the “Extension Search Paths“