fix(onboard): auto-select managed vLLM non-interactively on DGX Spark (#7293)#7296
Conversation
…/Station (#7293) On a DGX Spark, `nemoclaw onboard --non-interactive` with no NEMOCLAW_PROVIDER (and no cloud key) fell back to cloud NVIDIA Endpoints (`build` → nvidia-prod) instead of the managed local vLLM (`install-vllm`) that the interactive menu already offers for the platform. The GB10 GPU is detected and the `Install vLLM (DGX Spark)` entry is present in the non-interactive options, but the default-selection logic in resolveRequestedProviderSelection unconditionally chose `build` and never looked at it. Fix: when a non-interactive onboard has no requested/recorded provider and the host is a DGX managed-vLLM-default platform (Spark/Station) whose `install-vllm` entry is present, default to `install-vllm` instead of `build`. The Spark/Station predicate is exported from vllm-menu as `isManagedVllmDefaultPlatform` and reused by both the interactive menu and this non-interactive default so they stay in lock-step. Generic-Linux/experimental hosts and non-DGX platforms keep the cloud `build` default (the entry is either absent or the platform is not a default platform), so no non-Spark regression. Verified live on a DGX Spark (GB10, aarch64): `[3/8]` now prints `[non-interactive] Provider: install-vllm` and selects the Qwen3.6-35B-A3B NVFP4 checkpoint instead of falling back to NVIDIA Endpoints. Signed-off-by: Yanyun Liao <yanyunl@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:
📝 WalkthroughWalkthroughThe onboarding flow detects managed-vLLM default platforms, passes that preference to provider resolution, and selects an available local vLLM option before falling back to ChangesManaged vLLM provider selection
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant SetupNimFlow
participant isManagedVllmDefaultPlatform
participant ProviderResolver
SetupNimFlow->>isManagedVllmDefaultPlatform: Check gpu?.platform
isManagedVllmDefaultPlatform-->>SetupNimFlow: Return managed-vLLM preference
SetupNimFlow->>ProviderResolver: Resolve provider with preference
ProviderResolver-->>SetupNimFlow: Select vllm, install-vllm, or build
Possibly related issues
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in commit a43dcd7 in the TypeScript / code-coverage/cliThe overall coverage in commit a43dcd7 in the Show a code coverage summary of the most impacted files.
Updated |
PR Review Advisor — InformationalAdvisor assessment: Informational / medium 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. |
…hrough the flow (#7293) Address PR Review Advisor PRA-1: the resolver/predicate unit tests exercise the default in isolation, and the existing managed-vLLM flow cases return an explicit getNonInteractiveProvider()=install-vllm, so nothing verified the call-site wiring (preferManagedVllmDefault from gpu?.platform) that makes a DGX Spark non-interactive run with NO requested provider enter the managed-install branch. Add a createSetupNim regression: isNonInteractive true, getNonInteractiveProvider returns null, gpu.platform=spark, install-vllm menu entry present -> asserts installVllm + handleVllmSelection run and the cloud handler is never reached (handleRemoteProviderSelection stays 'unexpected', so a build fallback throws). Signed-off-by: Yanyun Liao <yanyunl@nvidia.com>
… Spark default (#7293) Address PR Review Advisor PRA-1 (blocker): the managed-vLLM default only looked for the `install-vllm` entry. When vLLM is already running the menu can instead expose only `vllm`, so the branch would fall through to cloud `build`. Select the available local vLLM option in priority order — running `vllm` first, otherwise `install-vllm` — before the cloud fallback, via resolveManagedVllmDefaultKey(). Adds a resolver case for the sole-`vllm` running entry on a managed-vLLM platform. Signed-off-by: Yanyun Liao <yanyunl@nvidia.com>
|
Re: PRA-1 (running-vLLM) — addressed in A note on the observed flow: in the non-interactive, no- Verified live on a DGX Spark (GB10, aarch64), both states:
In both cases the non-interactive DGX Spark onboard selects managed local vLLM and never falls back to cloud NVIDIA Endpoints. |
…7293) Address PR Review Advisor PRA-1 (warning): the running-vLLM priority had a resolver unit test, but the only running-vLLM flow case used an explicit getNonInteractiveProvider()=vllm. Add a createSetupNim regression: non-interactive Spark, no requested provider, vllmRunning true with only a `vllm` menu entry — asserts handleVllmSelection runs with managedInstall:false, installVllm is never called (no reinstall), and the cloud handler is never reached. Signed-off-by: Yanyun Liao <yanyunl@nvidia.com>
…eractive-vllm-default
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-7296.docs.buildwithfern.com/nemoclaw |
<!-- markdownlint-disable MD041 --> ## Summary Adds the canonical dated `## v0.0.93` release entry to `docs/changelog/2026-07-23.mdx`. The entry records user-visible behavior, release validation, and documentation controls merged after `v0.0.92`, while preserving the pending DGX OS `7.6.x` Station Express qualification caveat. ## Changes - Adds the parser-safe dated release entry with a summary, grouped details, and published-route links. - Reconciles the `v0.0.92..origin/main` commit range with merged `v0.0.93` PRs. - Records that no-OTA DGX OS `7.6.x` passed bounded host preflight, while full Station Express end-to-end qualification remains pending. - Leaves existing product pages unchanged because the source PRs already document their supported behavior. ### Source summary - #7285 -> `docs/changelog/2026-07-23.mdx`: Records the existing-vLLM ownership choice and resumable Station handoff. - #7419 -> `docs/changelog/2026-07-23.mdx`: Records bounded no-OTA DGX OS `7.6.x` recognition and its pending end-to-end qualification. - #7268 -> `docs/changelog/2026-07-23.mdx`: Records optional Hugging Face authentication, output sanitization, and resumable HTTP `429` recovery. - #7442 -> `docs/changelog/2026-07-23.mdx`: Records clean SIGINT handling at hidden credential prompts. - #7299 -> `docs/changelog/2026-07-23.mdx`: Records Intel macOS rejection before ref resolution or network work. - #7296 -> `docs/changelog/2026-07-23.mdx`: Records the DGX Spark non-interactive local-vLLM selection order. - #7342 -> `docs/changelog/2026-07-23.mdx`: Records delegated protected E2E approvals in the grouped release-validation bullet. - #7373 -> `docs/changelog/2026-07-23.mdx`: Records base-image publication gating before final-main fanout. - #7388 -> `docs/changelog/2026-07-23.mdx`: Records semantic phase runtime summaries. - #7397 -> `docs/changelog/2026-07-23.mdx`: Records progress coverage hardening. - #7391 -> `docs/changelog/2026-07-23.mdx`: Records centralized larger-runner routing. - #7423 -> `docs/changelog/2026-07-23.mdx`: Records one retry for confirmed hosted-runner loss. - #7399 -> `docs/changelog/2026-07-23.mdx`: Records runner-comparison telemetry. - #7270 -> `docs/changelog/2026-07-23.mdx`: Records staging Brev Launchable validation. - #7426 -> `docs/changelog/2026-07-23.mdx`: Records filtering of irrelevant base-image run history. - #7333 -> `docs/changelog/2026-07-23.mdx`: Records aligned Quickstart platform guidance. - #7343 -> `docs/changelog/2026-07-23.mdx`: Records documentation-writer receipt collection. - #7400 -> `docs/changelog/2026-07-23.mdx`: Records the documentation-writer receipt requirement for docs-only PRs. - #7413 -> `docs/changelog/2026-07-23.mdx`: Records removal of redundant receipt PR metadata. - #7405 -> `docs/changelog/2026-07-23.mdx`: Records corrected inference CLI references. - #7389 -> `docs/changelog/2026-07-23.mdx`: Records completion of the v0.0.91 documentation audit. `#7384` is an internal refactor with no intended runtime behavior change. `#7401` updates internal CodeQL Actions dependencies. `#7376` is already contained in `v0.0.92`, so it is outside the release-entry scan range despite its retained planning label. ## 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 dated changelog structure, SPDX syntax, and version headings. - [ ] 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: ## Documentation Writer Review - [x] Documentation writer subagent reviewed the completed changes - Result: `docs-updated` - Evidence: Reviewed `docs/changelog/2026-07-23.mdx` against `WRITING.md`, `docs/CONTRIBUTING.md`, `docs/.docs-skip`, `docs/index.yml`, the six user-visible source PRs, and the remaining grouped release commits. The review corrected an ambiguous qualification claim, confirmed all published routes, preserved the DGX OS `7.6.x` caveat, and found no remaining action. - Agent: Codex Desktop <!-- docs-review-head-sha: ec0a866 --> <!-- docs-review-agents-blob-sha: 9c9b36d --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable. This PR does not change `scripts/prepare-dgx-station-host.sh`. - Station profile/scenario: Not applicable. - Result: Not applicable. - Supporting evidence: Not applicable. ## 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`: 1 file and 6 tests passed. - [ ] Applicable broad gate passed — Not applicable to one native changelog file. - [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) — completed with 0 errors and 2 existing Fern warnings. - [x] 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) — not applicable because native changelog entries use a parser-safe MDX SPDX comment without frontmatter. --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Added the v0.0.93 changelog covering onboarding and validation improvements. * Documented support for additional DGX Station Express workstation releases and clearer handling of existing vLLM workloads. * Added guidance for optional Hugging Face authentication, resumable rate-limit recovery, and DGX Spark provider selection. * Clarified installer behavior on Intel macOS, release validation requirements, hosted-runner retries, documentation checks, and supported CLI quickstart paths. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Summary
Non-interactive onboarding on DGX Spark now chooses a running local vLLM instance, then the managed vLLM install path, before falling back to NVIDIA Endpoints when no provider was requested or previously recorded. DGX Station and other hosts retain their existing unset-provider behavior.
Related Issue
Closes #7293
Product Scope Verdict
In scope as a correction to the existing supported DGX Spark managed-vLLM onboarding behavior documented by the issue and current product documentation. This does not add a new integration, solution recipe, custom image, or third-party stack. This evidence-based scope verdict is separate from GitHub merge state and is not a claim of human approval.
Changes
Type of Change
Quality Gates
Documentation Writer Review
docs-updateddocs/get-started/quickstart.mdx;docs/inference/set-up-vllm.mdx. The writer found the Spark-only behavior, fallback order, and unchanged Station/other-host behavior accurate and found no writing or documentation issue.DGX Station Hardware Evidence
scripts/prepare-dgx-station-host.shis not in the PR diff.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 prek run --from-ref upstream/main --to-ref HEAD --stage pre-commit,npx commitlint --from upstream/main --to HEAD, andnpx prek run --from-ref upstream/main --to-ref HEAD --stage pre-push. The fallback usedupstream/mainexplicitly because the localorigin/mainwas not the canonical base.npx vitest run --project cli src/lib/onboard/provider-selection.test.ts src/lib/onboard/setup-nim-flow.test.ts src/lib/onboard/vllm-menu.test.tspassed 47 tests;npx vitest run test/changelog-docs.test.tspassed 6 tests.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — not applicable to this narrow onboarding and documentation change.npm run docsbuilds without warnings (doc changes only) — passed with 0 errors and 2 non-fatal Fern warnings; no warning waiver is claimed.Contributor-provided DGX Spark evidence: #7296 (comment)
Signed-off-by: Yanyun Liao yanyunl@nvidia.com