Repository navigation
fix(onboard): adopt compatible vllm served aliases - #7044
Conversation
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughNemoClaw now reuses compatible running vLLM servers by validating served-model aliases against reported roots. It adopts valid aliases, rejects mismatched or missing metadata before route validation, and updates Station express, resume-path tests, and documentation. ChangesvLLM alias selection
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant ExpressOnboarding
participant RunningVLLM
participant ModelRegistry
ExpressOnboarding->>RunningVLLM: probe /v1/models
RunningVLLM-->>ExpressOnboarding: served id and root
ExpressOnboarding->>ModelRegistry: resolve requested model and root
ModelRegistry-->>ExpressOnboarding: compatible alias result
ExpressOnboarding->>ExpressOnboarding: select running vLLM and validate route
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
🌿 Preview your docs: https://nvidia-preview-pr-7044.docs.buildwithfern.com/nemoclaw |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage remains at 96%, unchanged from the TypeScript / code-coverage/cliThe overall coverage in the Show a code coverage summary of the most impacted files.
Updated |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
PR Review Advisor — InformationalAdvisor assessment: Informational / high confidence Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: 1 optional E2E recommendation
This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/lib/onboard/setup-nim-vllm.ts`:
- Around line 213-218: Remove the options.managedInstall bypass from the model
compatibility condition in setup-nim-vllm.ts; require detectedModel to match
requiredModel exactly or pass reportedModelMatchesRequest(...). In
src/lib/onboard/setup-nim-vllm.test.ts lines 113-145, run the mismatched-root
fixture with managedInstall: true and preserve the rejection and no-validation
assertions.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: aad9853e-7cad-4abb-ae4f-83bf11038bbd
📒 Files selected for processing (4)
docs/inference/set-up-vllm.mdxsrc/lib/onboard/setup-nim-vllm.test.tssrc/lib/onboard/setup-nim-vllm.tstest/onboard-selection-vllm.test.ts
Prove that interrupted onboarding reuses the persisted callable served alias. The repaired inference step must not restore the requested registry identity. Co-authored-by: Carlos Villela <cvillela@nvidia.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/lib/onboard/machine/handlers/provider-inference.test.ts`:
- Around line 504-506: Update the test around createSession and its
setupInference, completion-state, and result assertions to use a distinct
non-canonical served alias instead of “nemotron-ultra” consistently. Keep the
alias compatible with the provider, and ensure the test persists and verifies
that exact alias through resume without substituting the canonical route ID.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 9a3dac95-1a4a-4faa-9853-7d544ac584a2
📒 Files selected for processing (1)
src/lib/onboard/machine/handlers/provider-inference.test.ts
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Prove resume preserves a non-canonical served alias end to end. Co-authored-by: Carlos Villela <cvillela@nvidia.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
|
Addressed the refreshed Advisor test-depth warning at exact head |
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical dated changelog entry required before the v0.0.85 release plan can be generated. The entry summarizes the user-visible OpenShell, DGX Station, inference, MCP, onboarding, and recovery changes merged since v0.0.84 and links to their owning guides. ## Changes - Add `docs/changelog/2026-07-16.mdx` with the exact `## v0.0.85` heading, parser-safe SPDX comment, release summary, and detailed bullets. - Link every documented theme to its most specific published OpenClaw guide routes. - Reconcile the release entry with these merged source PRs: - #6726 -> `docs/changelog/2026-07-16.mdx`: Document the supported OpenShell v0.0.85 upgrade, immutable consumed artifacts, multiline exec, credential rewrite diagnostics, and child-process TLS boundary. - #6986 -> `docs/changelog/2026-07-16.mdx`: Document managed MCP behavior shared across supported agents. - #6991 and #7045 -> `docs/changelog/2026-07-16.mdx`: Document qualified DGX Station host preparation and the interactive-terminal boundary for `--station-deepseek`. - #6992, #7001, #7006, and #7044 -> `docs/changelog/2026-07-16.mdx`: Document managed-model reasoning behavior, safe inference route mutation, and verified vLLM served aliases. - #6865, #7010, and #7028 -> `docs/changelog/2026-07-16.mdx`: Document onboarding DNS recovery, explicit notice acceptance, and upgrades with user-local OpenShell. - #7005, #7021, #7029, and #7049 -> `docs/changelog/2026-07-16.mdx`: Document rebuild backup safety, no-dashboard state, managed gateway discovery, and Hermes shields topology checks. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [ ] Tests added or updated for changed behavior - [x] Existing tests cover changed behavior — justification: `test/changelog-docs.test.ts` validates the canonical heading, parser-safe SPDX comment, and detailed entry structure; the docs build validates published routes. - [ ] Tests not applicable — justification: - [x] Docs updated for user-facing behavior changes - [ ] Docs 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: ## 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 check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/changelog-docs.test.ts` passed 6/6. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not applicable to this doc-only entry. - [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) — passed with 0 errors and 2 pre-existing Fern warnings. - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [x] New doc pages include SPDX header and frontmatter (new pages only) — native changelog entries use the required parser-safe MDX SPDX comment instead of frontmatter. --- Signed-off-by: Charan Jagwani <cjagwani@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added release notes for NemoClaw v0.0.85. * Documented improvements to compatibility, credential handling, setup validation, recovery workflows, endpoint configuration, gateway discovery, and runtime validation. * Added links to relevant user-guide sections. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Summary
DGX Station express onboarding currently rejects an already-running compatible Ultra model when its custom vLLM served name differs from NemoClaw's canonical route ID.
This change verifies the server-reported model root against the managed-model registry, adopts the compatible served alias, and keeps mismatched models and shared-gateway conflicts fail-closed.
Related Issue
Fixes #7023
Changes
/v1/modelsreports a safe root that exactly identifies the registered checkpoint.The focused matcher is required because vLLM's
--served-model-nameis intentionally independent from the underlying checkpoint ID, so direct string equality cannot distinguish a compatible alias from a different model.The unit and Station provider-selection tests protect that boundary.
Type of Change
Quality Gates
d1bbd909645efd15088949a8b7a6f77f3bd3b19fwith no findings. The reported root remains allowlisted and must exactly match the registered checkpoint; exact managed identity and post-discovery shared-route containment remain enforced.Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpx vitest run --project cli --project integration src/lib/onboard/setup-nim-vllm.test.ts test/onboard-selection-vllm.test.tspassed 28 tests;npm run test:changedpassed 857 tests.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — not run because this is a focused onboarding selection change with direct unit and integration coverage.npm run docsbuilds without warnings (doc changes only) — passed with 0 errors; Fern reported two pre-existing unprinted warnings.Signed-off-by: Carlos Villela cvillela@nvidia.com
Summary by CodeRabbit
8000is already in use.