Skip to content

feat(onboard): wizard honours NEMOCLAW_PROVIDER outside non-interactive mode#3643

Merged
cv merged 3 commits into
mainfrom
feat/wizard-honor-nemoclaw-provider
May 17, 2026
Merged

feat(onboard): wizard honours NEMOCLAW_PROVIDER outside non-interactive mode#3643
cv merged 3 commits into
mainfrom
feat/wizard-honor-nemoclaw-provider

Conversation

@laitingsheng

@laitingsheng laitingsheng commented May 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Drops the isNonInteractive() gate on requestedProvider in the inference-menu step. When NEMOCLAW_PROVIDER is set, the wizard now auto-picks that provider in both interactive and non-interactive runs instead of redrawing the eight-option menu and asking the user to choose again. Invalid values keep failing fast through the existing getNonInteractiveProvider() exit path.

Related Issue

Fixes #3565
Fixes #3571

Changes

  • src/lib/onboard.ts: requestedProvider = getNonInteractiveProvider() unconditionally; the wizard's auto-pick branch fires whenever the env var is set.
  • docs/reference/commands.md: NEMOCLAW_PROVIDER row reflects the new "skips the provider menu in interactive runs too" semantics.

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)

Verification

  • `npx prek run --all-files` passes
  • `npm test` passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • `make 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)

Signed-off-by: Tinson Lai tinsonl@nvidia.com

Summary by CodeRabbit

  • New Features

    • Provider environment variable now skips provider selection during onboarding in both interactive and non-interactive modes
  • Improvements

    • Invalid provider values now fail fast and show the list of accepted keys
    • Added and adjusted provider alias mappings for broader compatibility
  • Documentation

    • Expanded provider setup docs and clarified onboarding behavior when the provider is set via environment variables

Review Change Stack

…ve (#3565)

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@laitingsheng laitingsheng added the enhancement New capability or improvement request label May 16, 2026
@copy-pr-bot

copy-pr-bot Bot commented May 16, 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 May 16, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: c0aef628-860c-4ae7-935c-f7214b366e80

📥 Commits

Reviewing files that changed from the base of the PR and between d17cfed and 645aff7.

📒 Files selected for processing (2)
  • docs/reference/commands.md
  • src/lib/onboard.ts
✅ Files skipped from review due to trivial changes (1)
  • docs/reference/commands.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/onboard.ts

📝 Walkthrough

Walkthrough

NEMOCLAW_PROVIDER environment variable now authoritatively pre-selects inference provider in both interactive and non-interactive onboarding flows. setupNim() reads the env-supplied provider unconditionally and skips the interactive menu when present. Documentation is expanded with additional provider aliases and clarifies the menu-skipping behavior.

Changes

Provider selection and documentation

Layer / File(s) Summary
Provider-selection logic changes
src/lib/onboard.ts
requestedProvider is resolved unconditionally from getNonInteractiveProvider(), and the provider-selection branch now respects requestedProvider in addition to isNonInteractive(), allowing interactive runs with an env-supplied provider to skip the menu prompt.
Documentation of provider environment variable
docs/reference/commands.md
NEMOCLAW_PROVIDER environment variable documentation is expanded to list extended provider keys and alias mappings, and to clarify that the provider menu is skipped in both interactive and non-interactive runs, with invalid values failing fast against the accepted key list.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#3417: Both PRs modify src/lib/onboard.ts's onboarding provider-selection logic around provider hints and non-interactive selection paths.

Suggested labels

Getting Started, NemoClaw CLI, enhancement: inference

Suggested reviewers

  • cv

Poem

🐰 A provider-choice we needed to make fast,
No menus to slow down the cast,
With env-vars now heard in both flows,
The onboarding wizard smoothly goes—
Skip the prompt, pick straight, and blast!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: enabling the wizard to honour NEMOCLAW_PROVIDER outside non-interactive mode, which is the core objective of the PR.
Linked Issues check ✅ Passed The changes directly address the objectives from issues #3565 and #3571: making NEMOCLAW_PROVIDER suppress the provider menu in both interactive and non-interactive runs, and updating documentation accordingly.
Out of Scope Changes check ✅ Passed All changes are directly scoped to the linked issues: src/lib/onboard.ts modification to honour NEMOCLAW_PROVIDER unconditionally, and docs/reference/commands.md update to reflect this behavior change.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/wizard-honor-nemoclaw-provider

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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

@github-actions

github-actions Bot commented May 16, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: cloud-onboard-e2e, inference-routing-e2e
Optional E2E: double-onboard-e2e, model-router-provider-routed-inference-e2e

Dispatch hint: cloud-onboard-e2e,inference-routing-e2e

Auto-dispatched E2E: cloud-onboard-e2e, inference-routing-e2e via nightly-e2e.yaml at 645aff7cdaf377e78dbe5e1d3837f8b2154445b0nightly run

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • cloud-onboard-e2e (~45 min): Runs a full install/onboard flow with NEMOCLAW_PROVIDER=cloud, exercising the provider alias path, non-interactive onboarding, sandbox creation, credential handling, policy setup, and inference.local health after the provider-selection change.
  • inference-routing-e2e (~30 min): Exercises onboarding with multiple explicit providers including custom/OpenAI-compatible, OpenAI, and Anthropic paths plus route/error classification, giving coverage for provider key resolution and inference route setup touched by the onboard change.

Optional E2E

  • double-onboard-e2e (~90 min): Useful adjacent confidence for repeated onboarding and recorded-provider recovery, because the changed branch also interacts with fallback to recorded provider when no explicit provider is supplied.
  • model-router-provider-routed-inference-e2e (~45 min): Optional targeted check for the documented routed provider key; it validates that NEMOCLAW_PROVIDER=routed produces a functioning provider-routed inference.local route.

New E2E recommendations

  • interactive onboarding/provider env override (high): The runtime change specifically makes NEMOCLAW_PROVIDER apply outside non-interactive mode, causing the interactive wizard to skip the provider menu. Existing E2Es mostly exercise non-interactive onboarding, so they do not directly prove the new interactive-env behavior or invalid-provider fast-fail UX.
    • Suggested test: Add an E2E or expect-based regression that runs interactive nemoclaw onboard with NEMOCLAW_PROVIDER set to a valid alias/key and verifies the provider menu is skipped, then repeats with an invalid value and verifies fast failure with accepted keys.

Dispatch hint

  • Workflow: nightly-e2e.yaml
  • jobs input: cloud-onboard-e2e,inference-routing-e2e

…OVIDER is set

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@laitingsheng laitingsheng marked this pull request as ready for review May 16, 2026 08:15
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 25957110434
Target ref: d17cfed96a96435aeb114f8c357c3b21f0306614
Workflow ref: main
Requested jobs: cloud-onboard-e2e,messaging-compatible-endpoint-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
messaging-compatible-endpoint-e2e ✅ success

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 25973703572
Target ref: 645aff7cdaf377e78dbe5e1d3837f8b2154445b0
Workflow ref: main
Requested jobs: cloud-onboard-e2e,inference-routing-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
inference-routing-e2e ✅ success

@cv cv merged commit aa6dca9 into main May 17, 2026
29 checks passed
ericksoa pushed a commit that referenced this pull request May 18, 2026
## Summary
Updates the NemoClaw documentation for the v0.0.45 release by
summarizing the user-facing changes merged since v0.0.44 and bumping the
docs version metadata.
Refreshes generated user skills so agent-facing references match the
source docs.

## Changes
- Added v0.0.45 release notes covering onboarding recovery, local
inference, channel cleanup, share mount diagnostics, uninstall cleanup,
and security redaction updates.
- Updated command and troubleshooting docs for sandbox name limits, GPU
gateway reuse, DNS preflight behavior, channel removal cleanup, and
share mount path validation.
- Bumped docs version metadata to 0.0.45 and regenerated NemoClaw user
skills from the docs.
- Source summary: #3672 -> `docs/reference/commands.md`: documented
channel removal detaching bridge providers and un-applying channel
policy presets.
- Source summary: #3678 -> `docs/about/release-notes.md`: documented
Ollama streamed usage accounting in the release notes.
- Source summary: #3670 -> `docs/reference/commands.md`,
`docs/reference/troubleshooting.md`: documented safe GPU gateway
replacement behavior.
- Source summary: #3664 -> `docs/about/release-notes.md`: documented
blueprint permission normalization in the release notes.
- Source summary: #3181 -> `docs/reference/troubleshooting.md`:
documented GPU toolkit guidance when host drivers work but passthrough
is disabled.
- Source summary: #3554 -> `docs/about/release-notes.md`: documented
host `openshell-gateway` cleanup during uninstall.
- Source summary: #3651 -> `docs/reference/troubleshooting.md`:
documented the uncached `.invalid` DNS preflight probe.
- Source summary: #3643 -> `docs/reference/commands.md`: included
existing `NEMOCLAW_PROVIDER` interactive-mode behavior in generated
docs.
- Source summary: #3647 -> `docs/reference/commands.md`: documented
remote sandbox path verification for `share mount`.
- Source summary: #3646 -> `docs/reference/commands.md`: included
existing local writable mount target guidance in generated docs.
- Source summary: #3642 -> `docs/inference/use-local-inference.md`,
`docs/reference/commands.md`: documented managed-vLLM model override and
gated-model token checks.
- Source summary: #3639 -> `docs/reference/commands.md`: documented the
63-character sandbox name limit.

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

## Verification
- [ ] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [x] `make docs` builds without warnings (doc changes only)
- [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)

Commit hooks passed for the staged files. A standalone `npx prek run
--all-files` attempt was blocked by sandbox access to
`/Users/miyoungc/.cache/prek/prek.log`, so that checkbox is left
unchecked.

---
<!-- DCO sign-off required by CI. Run: git config user.name && git
config user.email -->
Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>

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

## Summary by CodeRabbit

* **Documentation**
* Enhanced CLI command reference documentation with clearer guidance on
onboarding, GPU passthrough, inference configuration, channel removal,
and shared mounts.
* Improved troubleshooting sections with better DNS resolution and GPU
passthrough remediation steps.
  * Added documentation for overriding managed vLLM model selection.
* Updated release notes for v0.0.45 reflecting infrastructure and
workflow improvements.

* **Version Bump**
  * Released v0.0.45.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/3755?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
@wscurran wscurran added feature PR adds or expands user-visible functionality and removed enhancement New capability or improvement request labels Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature PR adds or expands user-visible functionality

Projects

None yet

3 participants