Skip to content

refactor(inference): make the catalog own vLLM profiles - #9648

Merged
prekshivyas merged 4 commits into
agent/refresh-llama-curl-pinsfrom
agent/managed-inference-catalog-authority
Aug 19, 2026
Merged

refactor(inference): make the catalog own vLLM profiles#9648
prekshivyas merged 4 commits into
agent/refresh-llama-curl-pinsfrom
agent/managed-inference-catalog-authority

Conversation

@prekshivyas

@prekshivyas prekshivyas commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

Move the existing managed vLLM model and hardware profile matrix into the compiled managed-inference catalog. Runtime selection, profile listing, model preparation, and probe policy now derive from the same declarative source instead of duplicating model-specific TypeScript branches.

This foundation preserves the current supported matrix. It does not add Linux Muse Glimmer or Nemotron 3.5 Lightning profiles and does not change vLLM or llama.cpp port behavior.

Depends on #9660, which refreshes the llama.cpp image's Ubuntu curl package tuple. This PR does not otherwise change the llama.cpp image.

Design context: managed inference catalog and declarative profile migration.

Changes

  • Add versioned model YAML resources and a model schema to the managed-inference catalog compiler.
  • Migrate the currently supported Spark, Station, N1x, and generic Linux vLLM profiles and recipes into YAML.
  • Derive the vLLM registry, runtime variants, defaults, preparation steps, orchestration references, and endpoint probe policies from compiled catalog data.
  • Route explicit provider/model intent through declarative requirements and materialize selected host-local recipes into the existing runtime boundary.
  • Add host architecture, compute capability, GPU memory, and unified-memory facts used by catalog qualification.
  • Add compiler, resolver, registry, materialization, profile-list, runtime-selection, and package-contract coverage. The catalog-only model test protects the requirement that a new model/profile can be discovered without editing the TypeScript registry.

The compiler boundary is required because catalog resources are consumed by the CLI, packaged artifact, profile list, resolver, and runtime launcher. Keeping independent TypeScript model tables would allow those consumers to drift and would continue requiring code changes for each profile.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification:
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit: Not applicable; scripts/prepare-dgx-station-host.sh is unchanged.
  • Station profile/scenario: Existing profile migration only.
  • Result: Not applicable.
  • Supporting evidence: Not applicable.

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run validate:pr passed after refreshing origin/main when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — 460/460 focused CLI tests, 52/52 integration tests, and 2/2 package-contract tests passed. CI-regression coverage also passed for 112/112 llama.cpp image tests, 80/80 Station preparation tests, 14/14 Station controller tests, 3/3 onboarder tests, and 1/1 Docker-authority test.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Additional verification:

  • npm run catalog:compile
  • npm run catalog:check
  • npm run build:cli
  • npm run typecheck:cli
  • npm run validate:pr

Signed-off-by: Prekshi Vyas prekshiv@nvidia.com

@copy-pr-bot

copy-pr-bot Bot commented Aug 19, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: adb7beb4-8ccc-460a-8e80-1715b94fdc38

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Informational

Advisor assessment: Informational / low confidence
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions
Status: PR review advisor failed: PR review advisor SDK execution failed: session: investigate omitted required analysis; turn: investigate: investigate omitted required analysis

Model lanes

  • GPT-5.6 Terra (primary): Failed
  • Nemotron 3 Ultra (second opinion): Failed

Second-opinion terminology and E2E selections are advisory. Live E2E does not run automatically for pull requests.

E2E guidance

Advisory only. A maintainer can dispatch the default E2E suite for the commit under review.

Recommended E2E: inference-routing

Manual-only E2E: cloud-onboard, managed-image-multiarch-startup, security-posture, onboard-repair, onboard-resume, cloud-inference, network-policy
The manual PR workflow does not run these selectors for the commit under review. Run them from reviewed code on main.

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

@github-actions

Copy link
Copy Markdown
Contributor

@github-code-quality

github-code-quality Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall line coverage in commit b55196f in the agent/managed-infere... branch remains at 96%, unchanged from commit dbf48ba in the main branch.


Updated August 19, 2026 18:40 UTC

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
@prekshivyas
prekshivyas changed the base branch from main to agent/refresh-llama-curl-pins August 19, 2026 19:01
@prekshivyas
prekshivyas marked this pull request as ready for review August 19, 2026 19:01
@prekshivyas
prekshivyas merged commit da9cef9 into agent/refresh-llama-curl-pins Aug 19, 2026
88 of 109 checks passed
@prekshivyas
prekshivyas deleted the agent/managed-inference-catalog-authority branch August 19, 2026 20:12
prekshivyas added a commit that referenced this pull request Aug 20, 2026
## Summary
Managed vLLM now honors `NEMOCLAW_VLLM_PORT` across fixed DGX Spark,
managed-cluster, dual-DGX Station, recovery, and sandbox policy paths.
The default remains `8000`; managed llama.cpp remains on its existing
fixed port pending the separate product decision in #9644.

## Related Issue
Related: #684

## Changes
- Treat the vLLM listener as deployment-owned configuration while
preserving each declarative serving recipe's portable default and
container port. A direct recipe edit is insufficient because one catalog
recipe can be deployed on different hosts and ports; managed-cluster
materialization/executor tests protect the overlay and plan identity.
- Recover the exact bounded host-local Docker port, validate it as
canonical loopback state, and materialize the matching OpenShell
`local-inference` policy endpoint. Recovery and policy tests cover
configured port `19000` and unsafe receipt values.
- Permit the fixed DGX Spark profile and dual-DGX Station lifecycle to
use the configured port, including Station host-preparation conflict
checks, Express disclosure, immutable starter-prompt assets, and
operator docs.
- Add a narrow vLLM port facade so new consumers do not increase the
shared `core/ports.ts` dependency fan-in.

This PR is independent of the declarative catalog foundation in #9648
and can merge in either order.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [x] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Maintainer review is
required before this draft is promoted.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## DGX Station Hardware Evidence

- [ ] Tested on physical DGX Station
- Current head: `8d206e9ddabba73e72541d1eee1eff3fca1b3223`
- Automated Station scenario: Dual-Station lifecycle and
host-preparation fixtures with `NEMOCLAW_VLLM_PORT=19000`.
- Automated result: The Station source and fixture validation passed on
`52c2ce127b439df607b9204d8dea9877474f8c7c`; the Station source has not
changed since that commit. Current-head `npm run docs:validate` passes
with 0 errors and 2 existing Fern warnings.
- Physical result: Pending. A physical Station run or an accepted
governance bypass remains required before approval or merge.
- Supporting evidence: [current-head
checks](https://github.com/NVIDIA/NemoClaw/pull/9655/checks)

## Verification

- [x] PR description includes a `Signed-off-by:` line and every commit
appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — build/typecheck passed; 442 CLI tests,
157 installer tests (1 skipped), and 32 local-profile/docs tests passed.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Diff-scoped `npm run
validate:pr` passed; a full `npm test` was not run locally.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added configurable vLLM host-port support through
`NEMOCLAW_VLLM_PORT`, defaulting to port 8000.
* Custom ports now work across local, managed, and distributed serving
setups.
  * Added safe validation for ports 1024–65535.
* Added compatibility handling for previously launched managed serving
containers.

* **Bug Fixes**
  * Improved endpoint recovery and port-conflict detection.
* Ensured loopback and private network bindings use the selected host
port.

* **Documentation**
* Clarified port configuration, firewall requirements, override rules,
and updated platform instruction links.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Co-authored-by: Senthil Ravichandran <senthilr@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant