Skip to content

[Workflow] Update project template generator, allow isaaclab CLI to work from pip install - #7307

Open
StafaH wants to merge 4 commits into
isaac-sim:developfrom
StafaH:feat/downstream-isaaclab-commands-template-uv
Open

[Workflow] Update project template generator, allow isaaclab CLI to work from pip install#7307
StafaH wants to merge 4 commits into
isaac-sim:developfrom
StafaH:feat/downstream-isaaclab-commands-template-uv

Conversation

@StafaH

@StafaH StafaH commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Description

Enable downstream projects installed from the Isaac Lab package to use the unified uv run isaaclab workflow commands without an Isaac Lab source checkout. Installed downstream task packages are discovered through the isaaclab.tasks entry-point group before workflow dispatch.

Modernize the project generator for Isaac Lab 3.0 by generating a self-contained uv workspace, package metadata and task-discovery entry points, uv-first documentation and VS Code launches, current preset-based physics configs, and ProxyArray/indexed write APIs. The wheel now bundles the generator resources required by isaaclab --new.

Type of change

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

Screenshots

Not applicable.

Validation

  • uv run --frozen python -m pytest source/isaaclab/test/cli/test_installed_workflow_entrypoints.py source/isaaclab/test/cli/test_benchmark_entrypoint.py source/isaaclab/test/cli/test_wheel_builder_metadata.py source/isaaclab_rl/test/test_template_generator.py -q (41 passed)
  • uv run isaaclab -f
  • uv run --isolated --extra test -- make -C docs current-docs
  • Generated-project Ruff lint and format checks for manager-based, direct single-agent, and direct multi-agent workflows
  • Built the distribution wheel and smoke-tested train, play, random_agent, zero_agent, benchmark, and train_multigpu from the wheel

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with uv run isaaclab -f
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my feature works
  • I have added a changelog fragment under source/<pkg>/changelog.d/ for every touched package
  • My name already exists in CONTRIBUTORS.md

@StafaH
StafaH requested a review from a team August 23, 2026 03:43
@github-actions github-actions Bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team infrastructure labels Aug 23, 2026
@greptile-apps

greptile-apps Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR enables installed Isaac Lab workflow dispatch, discovers downstream task packages through Python entry points, and modernizes generated projects as self-contained uv workspaces.

  • Delegates installed CLI workflows to isaaclab_rl entry points and bundles generator resources in the wheel.
  • Adds downstream task discovery through the isaaclab.tasks entry-point group.
  • Reworks project packaging, documentation, VS Code launches, and generated task configurations for current physics and indexed-state APIs.

Confidence Score: 4/5

The PR should not merge until downstream entry-point failures are isolated so an unrelated broken installed project cannot disable valid Isaac Lab workflows.

Every affected workflow now loads all installed downstream task plugins before dispatch, and an exception from any one plugin prevents even independently registered built-in tasks from running.

Files Needing Attention: source/isaaclab/isaaclab/cli/init.py

Important Files Changed

Filename Overview
source/isaaclab/isaaclab/cli/init.py Adds installed workflow delegation and downstream task discovery, but one broken downstream entry point now aborts unrelated workflows before dispatch.
tools/template/generator.py Replaces source-checkout file copying and project-specific runners with rendered, self-contained uv workspace resources.
tools/template/templates/external/pyproject.toml Defines the generated uv workspace, development tooling, package source, and NVIDIA package index configuration.
tools/template/templates/extension/pyproject.toml Adds PEP 621 package metadata, selected Isaac Lab extras, package discovery, and downstream task entry-point registration.
tools/template/templates/tasks/direct_single-agent/env Migrates the generated direct environment to ProxyArray tensors and indexed write APIs while updating reset and reward behavior.
tools/template/templates/tasks/direct_multi-agent/env Migrates the generated multi-agent environment to current tensor access, backend-aware collision filtering, and indexed simulation writes.
tools/wheel_builder/build.sh Bundles project-generator templates into the installed wheel.
tools/wheel_builder/res/main.py Delegates the wheel console entry point to the full Isaac Lab CLI while retaining legacy VS Code settings generation.

Sequence Diagram

sequenceDiagram
  participant User
  participant CLI as Installed isaaclab CLI
  participant Plugins as isaaclab.tasks entry points
  participant Runner as isaaclab_rl workflow
  participant Registry as Gym task registry
  User->>CLI: isaaclab train/play/benchmark
  CLI->>Plugins: Load every downstream task package
  Plugins->>Registry: Register downstream task IDs
  CLI->>Runner: Forward workflow arguments
  Runner->>Registry: Resolve requested task
Loading

Reviews (1): Last reviewed commit: "Enable downstream workflows and moderniz..." | Re-trigger Greptile

Comment on lines +46 to +47
for entry_point in importlib.metadata.entry_points(group=_TASK_ENTRY_POINT_GROUP):
entry_point.load()

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.

P1 Broken plugin blocks all workflows

If any installed downstream package has a stale or broken isaaclab.tasks entry point, entry_point.load() propagates its import exception before workflow dispatch, causing even valid built-in benchmark, training, playback, and dummy-agent commands to abort.

Knowledge Base Used: Task library

@StafaH StafaH changed the title Enable installed workflows and modernize project templates [Workflow] Update project template generator, allow isaaclab CLI to work from pip install Aug 23, 2026

@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 installed-workflow CLI and uv project-generation changes are internally consistent, but the generated direct multi-agent configuration introduces an inverted balancing reward and exposes several tuning fields that are never consumed.

  • Design and architecture: The entry-point-based task discovery and in-process workflow dispatch coherently decouple downstream projects from an Isaac Lab source checkout. However, the generated multi-agent config adds reward and success parameters with no corresponding reward or termination logic, leaving misleading no-op configuration fields.
  • API: The isaaclab.tasks entry-point contract, generated package metadata, wheel CLI delegation, removed project-specific runners, and updated documentation align. No separate API compatibility issue was identified among the candidate findings.
  • Implementation: The direct multi-agent reward implementation still adds squared angular errors multiplied by configured scales, while the patch changes both position scales from negative to positive, rewarding deviation rather than balancing. The newly added upright, action, angle, and duration fields are not read by the companion environment template and should either be implemented or removed.

Minor fixes needed. Posted 2 actionable findings inline.

Automated review; human maintainers own approval decisions.

rew_scale_cart_pos = 0.0
rew_scale_cart_vel = -0.01
rew_scale_pole_pos = -1.0
rew_scale_pole_pos = 1.0

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.

🟡 Warning · Implementation — Multi-agent position reward scales inverted

compute_rewards in the companion env template is unchanged and adds rew_scale_pole_pos * sum(square(pole_pos)) and rew_scale_pendulum_pos * sum(square(pole_pos + pendulum_pos)) to the agent rewards. Flipping these scales from -1.0 to 1.0 (lines 87 and 89) rewards angular deviation instead of penalizing it, so every generated multi-agent project trains toward falling over. The single-agent template still uses -1.0 with the same formula. Restore the negative scales.

rew_scale_pendulum_pos = -1.0
rew_scale_pendulum_pos = 1.0
rew_scale_pendulum_vel = -0.01
rew_scale_upright = 1.0

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.

🔵 Suggestion · Design Architecture — Generated config exposes inert tuning fields

rew_scale_upright, rew_scale_action, success_upright_angle, and success_duration_s are added here, but the generated env template never reads them: _get_rewards passes a fixed argument list to compute_rewards, and _get_dones uses only max_cart_pos and the episode length. Every generated project ships tunable knobs that silently do nothing. Wire them into the reward/termination logic or drop them.

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 infrastructure isaac-lab Related to Isaac Lab team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant