Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 2 additions & 53 deletions docs/source/setup/installation/asset_caching_details.inc
Original file line number Diff line number Diff line change
Expand Up @@ -75,63 +75,12 @@ root resolves to the same value when you use one of the provided Isaac Lab exper
load ``isaacsim.storage.native``. A custom experience that does not build on one of them may leave the
Isaac Sim asset root pointing at the cloud.

The environment variable is the only supported runtime override for the Isaac Lab asset paths. Isaac Lab
resolves them once, when :mod:`isaaclab.utils.assets` is imported, so setting
Isaac Lab supports the ``ISAACSIM_ASSET_ROOT`` and ``ISAACSIM_ASSET_REGION_PROFILE`` environment variables
for runtime asset selection. It resolves asset paths once, when :mod:`isaaclab.utils.assets` is imported, so setting
``persistent.isaac.asset_root.default`` on the command line or changing it at runtime does not move them,
even though Isaac Sim itself honors those forms. Editing ``persistent.isaac.asset_root.default`` in the
experience file does work, because that is the value Isaac Lab reads when the variable is unset.

.. rubric:: Using the China Storage Profile

To use the public China asset mirror, clear any explicit asset-root override, then select the same named storage
profile used by Isaac Sim before launch:

.. tab-set::
:sync-group: os

.. tab-item:: :icon:`fa-brands fa-linux` Linux
:sync: linux

.. code:: bash

unset ISAACSIM_ASSET_ROOT
export ISAACSIM_STORAGE_PROFILE=china

.. tab-item:: :icon:`fa-brands fa-windows` Windows
:sync: windows

.. code:: batch

set ISAACSIM_ASSET_ROOT=
set ISAACSIM_STORAGE_PROFILE=china

Isaac Lab uses the same versioned public bucket paths shown by Isaac Sim and routes reads through the profile's CDN.
This also works in kitless mode without Isaac Sim installed. ``ISAACSIM_ASSET_ROOT`` still takes precedence when
both variables are set.

Isaac Lab launchers and asset helpers apply the profile automatically. A standalone kitless script that calls
``omni.client`` before launching an Isaac Lab runtime must initialize the profile first:

.. code:: python

from isaaclab.utils.assets import configure_storage_profile

configure_storage_profile()

.. note::
The China service mirrors a subset of the global asset set, and that subset can change between releases.
Check the `Isaac 6.1 asset availability manifest
<https://assets.simready.cn/manifests/isaac/6.1/asset-availability.csv>`__ before choosing an asset. The manifest lists
service path records relative to the versioned ``Isaac`` folder. A path with no row is not mirrored, and a listed
path must have an ``available`` status to load from the service. Use an available asset or a local asset pack when
needed.

Build paths from profile-resolved constants such as :attr:`~isaaclab.utils.assets.ISAAC_NUCLEUS_DIR` or
:attr:`~isaaclab.utils.assets.ISAACLAB_NUCLEUS_DIR` instead of hard-coding bucket or CDN URLs. This keeps the
selected storage profile and asset release applicable when routing changes. Access the resolved paths through
Isaac Lab or ``omni.client``; opening the object-storage URL directly in a browser or with ``curl`` can return
HTTP 403 because it bypasses the profile's CDN routing.

.. note::
If you previously redirected Isaac Lab assets by editing ``persistent.isaac.asset_root.cloud`` in an
experience file, that edit no longer has any effect. Isaac Lab now reads
Expand Down
70 changes: 70 additions & 0 deletions docs/source/setup/installation/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1084,6 +1084,76 @@ still downloads each asset; later runs use the local cache.
Omniverse Nucleus and Omniverse Launcher are deprecated starting with Isaac Sim 4.5. Existing local
Nucleus installations continue to work.

.. _installation-asset-region-profiles:

Asset Region Profiles
---------------------

An Asset Region Profile selects a compatible asset root and configures any storage settings required
for that service. Isaac Lab provides these profiles:

.. list-table::
:header-rows: 1
:widths: 20 80

* - Profile
- Use
* - ``us``
- Primary public asset service and explicit switchback profile.
* - ``china``
- Regional asset service for users in mainland China.

Set the profile before launching Isaac Lab. Clear ``ISAACSIM_ASSET_ROOT`` first because an explicit
asset-root override takes precedence over the selected profile.

.. tab-set::
:sync-group: os

.. tab-item:: :icon:`fa-brands fa-linux` Linux
:sync: linux

.. code-block:: bash

unset ISAACSIM_ASSET_ROOT
export ISAACSIM_ASSET_REGION_PROFILE=china

.. tab-item:: :icon:`fa-brands fa-windows` Windows
:sync: windows

.. code-block:: batch

set ISAACSIM_ASSET_ROOT=
set ISAACSIM_ASSET_REGION_PROFILE=china

Isaac Lab launchers and asset helpers apply the profile automatically. The same variable also selects
the profile when Isaac Lab launches Isaac Sim. In kitless mode, Isaac Lab configures the required
``omni.client`` routing without requiring Isaac Sim.

A standalone kitless script that calls ``omni.client`` before launching an Isaac Lab runtime must
initialize the profile first:

.. code-block:: python

from isaaclab.utils.assets import configure_asset_region_profile

configure_asset_region_profile()

To return to the primary service, clear ``ISAACSIM_ASSET_ROOT`` and select the ``us`` profile.

The ``china`` profile publishes an
`asset availability manifest <https://assets.simready.cn/manifests/isaac/6.1/asset-availability.csv>`__.
The ``isaac_version`` field identifies the asset release. Each ``asset_path`` is the full path to a
file relative to the versioned asset root's ``Isaac`` directory. A ``status`` value of ``available``
reports that the file is mirrored, ``reason_code`` explains other statuses when provided, and
``checked_at`` records when the status last changed. A path with no row is not mirrored. The manifest
does not confirm the availability of paths outside the root's ``Isaac`` directory.

Build paths from profile-resolved constants such as
:attr:`~isaaclab.utils.assets.ISAAC_NUCLEUS_DIR` and
:attr:`~isaaclab.utils.assets.ISAACLAB_NUCLEUS_DIR`. Do not hardcode the profile's storage endpoint or
derive direct object URLs from the manifest. Opening an object-storage URL directly in a browser or
with ``curl`` can return HTTP 403 because it bypasses the profile's CDN routing.

Troubleshooting
---------------

Expand Down
10 changes: 5 additions & 5 deletions skills/user/install-isaac-lab/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: isaaclab-installing-isaac-lab
description: Installs Isaac Lab end-to-end with minimal user interaction. Auto-detects the system with read-only checks, picks the right install method (automatic uv, downloaded Isaac Sim, source build, Isaac Lab wheel, legacy isaaclab.sh, managed Python env, or Docker) from the install docs, applies the documented China storage profile when requested, shows one consolidated plan, and after a single confirmation executes the docs-prescribed commands unattended through verification. Use when installing Isaac Lab for the first time, picking between install combinations, configuring China asset access during installation, or asking for install commands for a specific platform.
description: Installs Isaac Lab end-to-end with minimal user interaction. Auto-detects the system with read-only checks, picks the right install method (automatic uv, downloaded Isaac Sim, source build, Isaac Lab wheel, legacy isaaclab.sh, managed Python env, or Docker) from the install docs, applies the documented China Asset Region Profile when requested, shows one consolidated plan, and after a single confirmation executes the docs-prescribed commands unattended through verification. Use when installing Isaac Lab for the first time, picking between install combinations, configuring China asset access during installation, or asking for install commands for a specific platform.
audience: user
status: experimental
owners:
Expand All @@ -27,11 +27,11 @@ The express flow asks the user at most one question: the final go/no-go. Do not
2. Read the "System requirements" section and the install-method comparison from `docs/source/setup/installation/index.rst` in the checkout — never from memory — compare against the detected facts, and route to the correct section anchor in `index.rst` using the mapping in [reference.md](reference.md).
3. If a hard blocker exists (no NVIDIA GPU or driver, driver below the documented minimum, insufficient disk), stop before any state-changing command. Report each blocker with its fix and the documented alternative (the legacy Newton-only installer at `installation-legacy-installer` for no-Isaac-Sim machines). Do not attempt driver installs unattended. If existing install artifacts were found, hand off to `isaaclab-setup-troubleshooting` instead of reinstalling over them.
4. Auto-pick the remaining choices, honoring stated preferences. A preference the user already stated (conda, Docker, source build, Newton-only, a specific env name or directory, or China storage) always wins and must not be re-asked. Otherwise pick without asking: the docs-Recommended method (automatic uv from the checkout); uv if present, else conda if present, else the docs' uv install step; install into the current checkout with the docs-default env name.
5. Read the routed section of `index.rst` (and any `.inc` fragments it includes) from the checkout and extract its commands verbatim for this platform. When the user requests China storage, also read `asset_caching_details.inc` and follow the China Storage Profile rules in [reference.md](reference.md). Do not paraphrase, reorder, or substitute steps.
6. Show one consolidated confirmation: detected system in two or three lines, chosen method and why, selected storage profile when applicable, the exact commands in order, which steps need sudo, and rough download size. Ask one go/no-go question. This is the only question in the flow.
5. Read the routed section of `index.rst` (and any `.inc` fragments it includes) from the checkout and extract its commands verbatim for this platform. When the user requests China storage, also read the `installation-asset-region-profiles` section and follow the Asset Region Profile rules in [reference.md](reference.md). Do not paraphrase, reorder, or substitute steps.
6. Show one consolidated confirmation: detected system in two or three lines, chosen method and why, selected Asset Region Profile when applicable, the exact commands in order, which steps need sudo, and rough download size. Ask one go/no-go question. This is the only question in the flow.
7. On yes, execute every step in order without further prompts, streaming output and appending everything to `~/.isaaclab/logs/install-<timestamp>.log`. Announce sudo steps as they run; the password prompt is expected, not a question. On the "Downloaded Isaac Sim package" route only, pause at the manual Isaac Sim download step with the URL from the docs section and resume when the user confirms — the one unavoidable manual step.
8. On a step failure, check the failure routing table in [reference.md](reference.md), apply at most one documented fix, and retry the step once. If it still fails, stop and hand off to `isaaclab-setup-troubleshooting` with the log path.
9. Run the docs-defined minimal verification command for the chosen method, with the selected storage-profile environment when applicable, then hand over: how to activate the env, how to select the profile for future commands, how to run a first demo from the docs quickstart, and the log file path. Save a short summary of facts, route, storage profile, and commands run to `~/.isaaclab/install_profile.yaml` for reproducibility.
9. Run the docs-defined minimal verification command for the chosen method, with the selected Asset Region Profile environment when applicable, then hand over: how to activate the env, how to select the profile for future commands, how to run a first demo from the docs quickstart, and the log file path. Save a short summary of facts, route, Asset Region Profile, and commands run to `~/.isaaclab/install_profile.yaml` for reproducibility.

## Validation

Expand Down Expand Up @@ -62,7 +62,7 @@ Keep this skill synchronized with the following install docs. If commands or ver
- `docs/source/setup/installation/index.rst` — `installation-method-python-env` steps (managed venv/conda + pip Isaac Sim).
- `docs/source/setup/installation/index.rst` — `installation-method-wheel` steps (Isaac Lab Python package for external projects).
- `docs/source/setup/installation/index.rst` — `installation-method-binary` steps (downloaded Isaac Sim package).
- `docs/source/setup/installation/index.rst` — `installation-method-source` steps (Isaac Sim source build).
- `docs/source/setup/installation/index.rst` — `installation-method-source` steps (Isaac Sim source build) and the `installation-asset-region-profiles` workflow.
- `docs/source/setup/installation/asset_caching_details.inc` — asset caching notes.
- `docs/source/features/docker_cloud.rst` — Docker and cloud-workstation deep dive; complements `installation-method-container` and `installation-method-cloud` in `index.rst`.
- `docs/source/refs/troubleshooting.rst` — hand-off target for post-install diagnostics.
Expand Down
6 changes: 3 additions & 3 deletions skills/user/install-isaac-lab/evaluations.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
- [Scenario 3: Stated Preferences Override Auto-Pick](#scenario-3-stated-preferences-override-auto-pick)
- [Scenario 4: Preflight Blocker Stops The Flow](#scenario-4-preflight-blocker-stops-the-flow)
- [Scenario 5: Windows 11 Guided Fallback](#scenario-5-windows-11-guided-fallback)
- [Scenario 6: China Storage Profile During Installation](#scenario-6-china-storage-profile-during-installation)
- [Scenario 6: China Asset Region Profile During Installation](#scenario-6-china-asset-region-profile-during-installation)

## Scenario 1: Express Install On Ubuntu 22.04

Expand Down Expand Up @@ -93,15 +93,15 @@ Known failure modes:
- Skips the long-path support step documented for Windows.
- Applies the Linux express unattended flow where the docs require Windows-specific handling.

## Scenario 6: China Storage Profile During Installation
## Scenario 6: China Asset Region Profile During Installation

Query: "Install Isaac Lab for a workstation in mainland China."

Expected behavior:

- Runs the normal preflight and chooses the install method from current system requirements rather than changing the
package source solely because of location.
- Reads `asset_caching_details.inc`, includes the documented China profile setting in the single consolidated plan,
- Reads the Asset Region Profiles section in `index.rst`, includes the documented China profile setting in the single consolidated plan,
and handles an existing `ISAACSIM_ASSET_ROOT` according to its documented precedence.
- Runs the normal verification with the profile selected, while stating that this does not prove every mirrored asset
is available.
Expand Down
4 changes: 2 additions & 2 deletions skills/user/install-isaac-lab/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ User: "Install Isaac Lab for a workstation in mainland China."

Suggested agent response:

1. Run the normal preflight, including the existing asset-root and storage-profile environment variables. Route to the
1. Run the normal preflight, including the existing asset-root and Asset Region Profile environment variables. Route to the
install method from the current installation docs; location does not change the package-install method.
2. Read the China Storage Profile section from `asset_caching_details.inc`. Add its profile setting to the consolidated
2. Read the Asset Region Profiles section from `index.rst`. Add its China profile setting to the consolidated
plan and explain that an existing `ISAACSIM_ASSET_ROOT` must be unset in the session for the profile to take effect.
3. After the single confirmation, install normally and run the docs-defined verification with the profile selected.
4. Before recommending an asset-bearing demo, find all of its full relative asset paths in the current availability
Expand Down
12 changes: 6 additions & 6 deletions skills/user/install-isaac-lab/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
- [Preflight Detection](#preflight-detection)
- [Express Route Mapping](#express-route-mapping)
- [Express Flow Rules](#express-flow-rules)
- [China Storage Profile](#china-storage-profile)
- [Asset Region Profiles](#asset-region-profiles)
- [Prerequisite Minimums](#prerequisite-minimums)
- [Minimal Verification](#minimal-verification)
- [Install-Time Failure Routing](#install-time-failure-routing)
Expand All @@ -19,7 +19,7 @@ Read-only commands to gather routing facts on Linux; nothing changes system stat
grep PRETTY_NAME /etc/os-release && uname -m && ldd --version | head -1
nvidia-smi --query-gpu=name,memory.total,driver_version --format=csv,noheader
command -v python3.12 uv conda; free -g | head -2; df -h .
env | grep -E '^(ISAACSIM_STORAGE_PROFILE|ISAACSIM_ASSET_ROOT)=' || true
env | grep -E '^(ISAACSIM_ASSET_REGION_PROFILE|ISAACSIM_ASSET_ROOT)=' || true
```

Also note existing install artifacts: `.venv/` or an env directory in the checkout, and `~/.isaaclab/install_profile.yaml`. On Windows, collect the equivalents (driver via `nvidia-smi`, Python version, free disk).
Expand Down Expand Up @@ -56,14 +56,14 @@ User-stated preferences override the routing and map directly:
- Log every executed command and its output to `~/.isaaclab/logs/install-<timestamp>.log`.
- After success, write facts, route, and commands run to `~/.isaaclab/install_profile.yaml`.

## China Storage Profile
## Asset Region Profiles

Use the China profile only when the user requests it or states that Isaac Lab will run in mainland China. Do not
infer the profile from an IP address or other geolocation lookup.

Read `docs/source/setup/installation/asset_caching_details.inc` from the checkout every time. Use its current profile
setting and asset-availability manifest instead of copying release numbers, service endpoints, bucket names, or CDN
URLs into the skill.
Read the `installation-asset-region-profiles` section in `docs/source/setup/installation/index.rst` from the checkout
every time. Use its current profile setting and asset-availability manifest instead of copying release numbers,
service endpoints, bucket names, or CDN URLs into the skill.

- Add the documented profile environment variable to the install verification and subsequent example commands. Do
not edit shell startup files unless the user explicitly requests persistence.
Expand Down
10 changes: 10 additions & 0 deletions source/isaaclab/changelog.d/asset-region-profiles.minor.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Added
^^^^^

* Added the ``us`` asset region profile and ``configure_asset_region_profile()`` initializer.

Changed
^^^^^^^

* Renamed the China profile selector from ``ISAACSIM_STORAGE_PROFILE`` to
``ISAACSIM_ASSET_REGION_PROFILE``.
Loading
Loading