Skip to content

Add China storage profile support for kitless assets - #7086

Open
sheikh-nv wants to merge 8 commits into
isaac-sim:developfrom
sheikh-nv:dev/isaaclab-china-storage-profile
Open

Add China storage profile support for kitless assets#7086
sheikh-nv wants to merge 8 commits into
isaac-sim:developfrom
sheikh-nv:dev/isaaclab-china-storage-profile

Conversation

@sheikh-nv

@sheikh-nv sheikh-nv commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
List any dependencies that are required for this change.

Type of change

  • New feature (non-breaking change which adds functionality)
  • Documentation update

Screenshots

Not applicable; this change has no visual UI.

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package (do not edit CHANGELOG.rst or bump extension.toml — CI handles that)
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

Change summary

Kitless Isaac Lab does not load isaacsim.storage.native, so selecting
ISAACSIM_STORAGE_PROFILE=china previously changed neither its asset root nor
OmniClient routing.

This change resolves Isaac Lab assets through the same public bucket paths used
by Isaac Sim and configures OmniClient to route reads through the profile CDN.
Launchers and asset helpers initialize the routing automatically, while
ISAACSIM_ASSET_ROOT remains higher priority. The release folder is centralized
so switching to 6.1 requires one source-line change.

The documentation covers Linux, Windows, standalone OmniClient use, and links
the public Isaac 6.0 asset availability manifest. The implementation remains
pinned to the 6.0 asset folder for this PR; the release constant and manifest
link can be updated together when the 6.1 mirror is available.

The installation skill follows the same documentation without embedding
release-specific storage details, so that later update does not require another
skill change.

Validation

  • Current-head asset tests passed: 54 tests.
  • Current-head launcher tests passed: 7 tests.
  • Kitless and headless Kit launches applied the China profile before user code and completed a direct public UR10 read through OmniClient.
  • Recursive UR10 retrieval succeeded: 18 files totaling 13,395,201 bytes.
  • The public Isaac Sim 6.0 manifest returned 80,436 records: 80,435 available and one documented exclusion.
  • Repository skill validation passed: 21 skills.
  • The full pre-commit suite, Python compilation, and diff checks passed.

@sheikh-nv
sheikh-nv requested a review from kellyguo11 August 13, 2026 23:11
@github-actions github-actions Bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team labels Aug 13, 2026
@sheikh-nv
sheikh-nv marked this pull request as ready for review August 24, 2026 23:58
@sheikh-nv
sheikh-nv requested a review from a team August 24, 2026 23:58
@greptile-apps

greptile-apps Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds China storage-profile support for kitless asset resolution and OmniClient routing while retaining ISAACSIM_ASSET_ROOT precedence.

  • Adds centralized China endpoint, CDN, and Isaac Sim release configuration.
  • Applies profile routing through launchers and remote asset helpers before user asset operations.
  • Adds unit coverage for root precedence, profile initialization, failure handling, and launcher ordering.
  • Documents Linux, Windows, standalone OmniClient, and installation-skill workflows.

Confidence Score: 5/5

The PR appears safe to merge with no concrete blocking or independently actionable non-blocking issue identified.

The selected profile is consistently reflected in asset-root resolution and OmniClient routing, explicit asset roots retain precedence, launcher initialization occurs before user asset operations, and the changed behavior has targeted failure-path coverage.

Important Files Changed

Filename Overview
source/isaaclab/isaaclab/utils/assets.py Adds profile selection, asset-root precedence, lazy OmniClient configuration, and profile-aware remote asset operations with focused unit coverage.
source/isaaclab/isaaclab/app/sim_launcher.py Initializes selected storage routing after the Kit launch decision and before yielding control to user code, preserving application cleanup on failure.
source/isaaclab/test/utils/test_assets.py Covers China root resolution, explicit-root precedence, idempotent routing, rejected configuration, lazy imports, and exported constants.
source/isaaclab/test/app/test_launch_simulation_require_kit.py Verifies routing occurs before kitless user code and that configuration failures close an already-started Kit application.
docs/source/setup/installation/asset_caching_details.inc Documents profile selection, override precedence, standalone initialization, availability constraints, and profile-resolved path construction.
skills/user/install-isaac-lab/reference.md Extends installation preflight and execution guidance for explicitly requested China storage without embedding release-specific endpoints.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[ISAACSIM_ASSET_ROOT set?] -->|Yes| B[Use explicit asset root]
    A -->|No| C[ISAACSIM_STORAGE_PROFILE selected?]
    C -->|china| D[Use China Isaac 6.0 asset root]
    C -->|No or unknown| E[Use Kit experience asset root]
    D --> F[Configure OmniClient S3 and CDN routing]
    B --> G[Asset helper or launched user code]
    E --> G
    F --> G
Loading

Reviews (1): Last reviewed commit: "Teach installation skill to configure Ch..." | Re-trigger Greptile

@isaaclab-review-bot isaaclab-review-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isaac Lab Review Bot

The change adds opt-in China storage support by resolving kitless asset roots to the mirrored Isaac 6.0 paths and configuring OmniClient routing before asset access. The launcher, asset helpers, documentation, tests, changelog, and installation skill were updated consistently.

  • Design and architecture: Profile selection, asset-root resolution, and OmniClient configuration are centralized in isaaclab.utils.assets. The fixed _ISAAC_SIM_ASSET_RELEASE keeps code paths aligned but requires coordinated maintenance with the documented availability manifest when the mirror release changes.
  • API: The additive configure_storage_profile() API is documented for standalone OmniClient users. Existing behavior remains intact when no recognized profile is selected, and ISAACSIM_ASSET_ROOT retains precedence over profile-based root resolution.
  • Implementation: The remote asset helper paths now configure routing before OmniClient operations, while launch_simulation applies it before user code and retains cleanup on configuration failure. Tests cover precedence, unknown profiles, idempotent configuration, client rejection, lazy imports, exported constants, and launcher ordering. A non-blocking residual tradeoff is that selecting the profile still configures OmniClient—and can fail—even when ISAACSIM_ASSET_ROOT supplies the effective asset root.

No blocking issues. No inline issue met the actionable-evidence threshold; the assessment above records the review feedback.

Automated review; human maintainers own approval decisions.


.. note::
The China service mirrors a subset of the global asset set, and that subset can change between releases.
Check the `Isaac 6.0 asset availability manifest

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we update this to 6.1 once it's available?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. We can do the update to 6.1 in another PR.

@kellyguo11
kellyguo11 requested a review from hujc7 August 25, 2026 03:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants