FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix(onboard): reuse mirrored Windows Ollama by prekshivyas · Pull Request #9345 · NVIDIA/NemoClaw · GitHub

fix(onboard): reuse mirrored Windows Ollama - #9345

Merged
cv merged 6 commits into
mainfrom
fix/ollama-empty-models-wsl-9300
Aug 17, 2026
Merged

fix(onboard): reuse mirrored Windows Ollama#9345
cv merged 6 commits into
mainfrom
fix/ollama-empty-models-wsl-9300

Conversation

prekshivyas commented Aug 17, 2026
edited
Loading

Copy link
Copy Markdown
Collaborator

Summary

Reuse Windows-host Ollama when WSL mirrored networking exposes that daemon through 127.0.0.1. Before this change, NemoClaw treated the loopback response as a WSL-local daemon and could route Ollama 0.32.5 through the Linux upgrade installer even though the usable daemon was installed on Windows.

Related Issue

Fixes #9300

Changes

  • Classify WSL loopback as Windows-host Ollama only when wslinfo reports mirrored networking, a Windows Ollama installation is present, Docker can reach the Windows daemon, and Linux procfs shows no WSL-owned listener on the Ollama port.
  • Exclude that positively identified Windows daemon from the WSL-local binary and daemon version-upgrade path.
  • Keep fail-closed behavior for ordinary WSL loopback daemons, dual-daemon topologies, unavailable socket identity, and unrecognized WSL networking modes.
  • Add regression coverage for mirrored-network classification, Ollama 0.32.5, local-listener identity, and ambiguous modes; document the topology rule.

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: Exact-head re-review requested from @cv after the socket-identity hardening; initial approval: fix(onboard): reuse mirrored Windows Ollama #9345 (review)
  • 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
  • Station profile/scenario: Not applicable
  • 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 — npm run test -- --run src/lib/onboard/provider-host-state.test.ts src/lib/onboard/ollama-install-menu.test.ts src/lib/onboard/provider-menu.test.ts test/install-express-wsl-ollama.test.ts test/onboard-selection-windows-provider-rejection.test.ts test/onboard-selection.test.ts (133 passed)
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: Not applicable; the change is isolated to Ollama topology classification and its install menu.
  • 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) — build succeeded with 0 errors and 2 pre-existing warnings
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

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

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

copy-pr-bot Bot commented Aug 17, 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 Bot commented Aug 17, 2026
edited
Loading

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: 5020729f-ed83-4c7b-acfd-98a324e99d30

📥 Commits

Reviewing files that changed from the base of the PR and between 27f3a4e and 6edb6db.

📒 Files selected for processing (1)
  • src/lib/onboard/provider-host-state.test.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/onboard/provider-host-state.test.ts

Included review availability: Your plan includes up to 12 reviews per rolling hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The onboarding flow detects Windows-host Ollama exposed through WSL mirrored networking. It checks for a WSL-local listener and passes the classification to install-menu resolution. Local installation and upgrade handling is suppressed for confirmed Windows-host Ollama.

Changes

Ollama WSL detection and onboarding

Layer / File(s) Summary
Local listener detection
src/lib/onboard/provider-host-state.ts, src/lib/onboard/provider-host-state.test.ts, src/lib/inference/local.ts
The provider state module detects Ollama listeners from Linux procfs data. The detection supports injected file reads and returns null for unavailable or malformed data.
Host classification and state wiring
src/lib/onboard/provider-host-state.ts, src/lib/onboard/provider-host-state.test.ts
Mirrored networking is classified as Windows-host Ollama only when Windows installation, Docker reachability, and no WSL-local listener are confirmed. Ambiguous and dual-daemon cases remain non-Windows-host classifications. The result is passed to onboarding.
Local upgrade suppression
src/lib/onboard/ollama-install-menu.ts, src/lib/onboard/ollama-install-menu.test.ts, docs/inference/set-up-ollama.mdx
Windows-host Ollama is excluded from local version probing, installer entries, binary-upgrade requirements, and upgrade flags. Tests and documentation cover the mirrored-networking behavior.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 6edb6

This change reuses a reachable Windows-host Ollama daemon in mirrored WSL networking instead of incorrectly routing it through the Linux installer; no actionable merge-blocking risk remains beyond normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant ProviderHostState
  participant WSLNetworking
  participant LocalListenerDetection
  participant OllamaInstallMenu
  ProviderHostState->>WSLNetworking: Probe WSL networking mode
  ProviderHostState->>LocalListenerDetection: Check Ollama port for a WSL-local listener
  ProviderHostState->>OllamaInstallMenu: Pass isWindowsHostOllama
  OllamaInstallMenu-->>ProviderHostState: Suppress local installer and upgrade handling
Loading 🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% 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 summarizes the primary change: reusing mirrored Windows-host Ollama during onboarding.
Linked Issues check ✅ Passed The changes classify mirrored Windows-host Ollama, skip local installation and upgrades, and add regression coverage for issue #9300.
Out of Scope Changes check ✅ Passed The implementation, tests, and documentation directly support mirrored Windows-host Ollama detection and safe onboarding behavior.
✨ Finishing Touches 💡 1 📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/ollama-empty-models-wsl-9300

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

Copy link
Copy Markdown
Contributor

github-code-quality Bot commented Aug 17, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 6edb6db in the fix/ollama-empty-mod... branch remains at 96%, unchanged from commit b4b6680 in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 6edb6db in the fix/ollama-empty-mod... branch is 83%. The coverage in commit e746431 in the main branch is 82%.

Show a code coverage summary of the most impacted files.
File main e746431 fix/ollama-empty-mod... 6edb6db +/-
src/lib/actions...er-lifecycle.ts 94% 85% -9%
src/lib/onboard...carryforward.ts 96% 88% -8%
src/lib/actions...aged-profile.ts 88% 84% -4%
src/lib/inference/local.ts 82% 81% -1%
src/lib/policy/index.ts 64% 64% 0%
src/lib/agent/defs.ts 97% 97% 0%
src/lib/onboard...ce-lifecycle.ts 89% 93% +4%
src/lib/cua/run...ime-manifest.ts 84% 90% +6%
src/lib/cua/bounded-file.ts 84% 94% +10%
src/lib/actions...ld-mcp-phase.ts 87% 98% +11%

Updated August 17, 2026 20:02 UTC

prekshivyas marked this pull request as ready for review August 17, 2026 19:18
prekshivyas requested a review from cv August 17, 2026 19:18
prekshivyas self-assigned this Aug 17, 2026
prekshivyas added NV QA Bugs found by the NVIDIA QA Team VDR Linked to VDR finding labels Aug 17, 2026

github-actions Bot commented Aug 17, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: No advisor follow-up needed.
Findings: 0 blockers · 0 warnings · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · medium confidence · 0 blockers · 0 warnings · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 1 warning · 0 suggestions
  • Model comparison: normalized findings differ; normalized terminology decisions differ; normalized E2E selections differ; Nemotron reported the same number of blockers, 1 more warning, the same number of suggestions.
3 terminology differences from the second opinion

Advisory only. These are normalized differences from the primary terminology receipt.

  • mirrored networking at docs/inference/set-up-ollama.mdx:52: selected only by the second-opinion lane as established.
  • procfs at src/lib/onboard/provider-host-state.ts:108: selected only by the second-opinion lane as established.
  • mirrored Windows-host Ollama at src/lib/onboard/ollama-install-menu.test.ts:203: selected only by the second-opinion lane as justified.
1 additional E2E selection from the second opinion

Advisory only. The primary lane did not select these E2E jobs or targets.

  • hermes-e2e: The completed second-opinion lane identified E2E coverage that the primary lane omitted.

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

3 semantic terminology decisions

Terminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.

  • established — Windows-host Ollama at docs/inference/set-up-ollama.mdx:52: Use the established term for the Windows-owned daemon classification.
  • established — mirrored networking at src/lib/onboard/provider-host-state.ts:272: Use the established term for this WSL networking mode.
  • justified — WSL-local listener at docs/inference/set-up-ollama.mdx:52: Retain the modifier because listener ownership determines whether the Linux install and upgrade path applies.

E2E guidance

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

Recommended E2E: inference-routing

Manual-only E2E: onboard-repair, onboard-resume, cloud-onboard, 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.

Copy link
Copy Markdown
Collaborator Author

Addressed advisor warning PRA-1 and tightened the underlying identity check on current head 6edb6db93:

  • An unrecognized wslinfo --networking-mode value now has an explicit fail-closed regression test that preserves the Linux upgrade path.
  • Mirrored loopback is classified as Windows-host Ollama only when both procfs TCP tables are readable and show no WSL-owned listener on the configured Ollama port.
  • Added dual-daemon and unavailable/malformed procfs coverage.
  • Exact-head targeted validation: 6 files, 133 tests passed; repository checks, CLI type-checking, hooks, and strict docs validation passed.

This prevents a WSL-local daemon from being mistaken for the independently Docker-reachable Windows daemon.

prekshivyas requested a review from cv August 17, 2026 20:05
cv merged commit e515de6 into main Aug 17, 2026
100 of 101 checks passed
cv deleted the fix/ollama-empty-models-wsl-9300 branch August 17, 2026 20:05
ericksoa pushed a commit that referenced this pull request Aug 18, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Add the canonical dated changelog entry required before planning the
v0.0.110 release. The entry summarizes user-facing changes merged since
v0.0.109 and links each change to its published documentation route and
source PR.

## Changes

- Add `docs/changelog/2026-08-17.mdx` with the exact `## v0.0.110`
release heading.
- Cover managed local inference, endpoint validation, onboarding and
recovery, explicit experimental Portable OpenClaw, messaging and policy
cleanup, backup and security hardening, and release qualification.
- Preserve the documentation skip list and the current supported-agent
matrix; test-only refactors, dormant activation work, and Pi-only
changes are intentionally excluded.

### Source-to-doc mapping

- #8711 -> `docs/changelog/2026-08-17.mdx`: Add the Muse Glimmer
llama.cpp profile.
- #9099 -> `docs/changelog/2026-08-17.mdx`: Update the Muse Glimmer vLLM
runtime.
- #9319 -> `docs/changelog/2026-08-17.mdx`: Select the provider required
by an explicit serving profile.
- #9311 -> `docs/changelog/2026-08-17.mdx`: Report probe-image pull
failures separately.
- #9345 -> `docs/changelog/2026-08-17.mdx`: Reuse mirrored Windows
Ollama.
- #9284 -> `docs/changelog/2026-08-17.mdx`: Complete the required Ollama
upgrade.
- #9320 -> `docs/changelog/2026-08-17.mdx`: Reject unsafe custom
endpoint URLs before mutation.
- #9119 -> `docs/changelog/2026-08-17.mdx`: Reject unsupported custom
endpoint URL components.
- #9236 -> `docs/changelog/2026-08-17.mdx`: Require native Anthropic
tool-use evidence.
- #9347 -> `docs/changelog/2026-08-17.mdx`: Distinguish Gemini runtime
404 diagnostics.
- #9307 -> `docs/changelog/2026-08-17.mdx`: Preserve the recorded API
family when only the model drifts.
- #9233 -> `docs/changelog/2026-08-17.mdx`: Fail incomplete Hermes route
synchronization.
- #9185 -> `docs/changelog/2026-08-17.mdx`: Serialize Model Router
lifecycle work across gateways.
- #9112 -> `docs/changelog/2026-08-17.mdx`: Stop Model Router after the
last routed sandbox is destroyed.
- #9229 -> `docs/changelog/2026-08-17.mdx`: Verify fresh sandbox
execution readiness.
- #9299 -> `docs/changelog/2026-08-17.mdx`: Verify a separate agent API
host forward before reporting ready.
- #9318 -> `docs/changelog/2026-08-17.mdx`: Honor explicit sandbox
recreation.
- #9325 -> `docs/changelog/2026-08-17.mdx`: Measure readiness reuse
windows from collection completion.
- #9352 -> `docs/changelog/2026-08-17.mdx`: Guide users away from the
deprecated global start command.
- #9370 -> `docs/changelog/2026-08-17.mdx`: Persist managed OpenClaw
agent identity.
- #9366 -> `docs/changelog/2026-08-17.mdx`: Pass messaging dependencies
during reused onboarding.
- #9321 -> `docs/changelog/2026-08-17.mdx`: Detect proxied connect
sessions.
- #9285 -> `docs/changelog/2026-08-17.mdx`: Run probe-only recovery when
absent authority cannot be created.
- #9282 -> `docs/changelog/2026-08-17.mdx`: Complete probe-only recovery
without platform evidence.
- #8920 -> `docs/changelog/2026-08-17.mdx`: Preserve legacy gateway
identity.
- #9198 -> `docs/changelog/2026-08-17.mdx`: Report sandbox config-read
failures.
- #9201 -> `docs/changelog/2026-08-17.mdx`: Remove only the exact Docker
orphan on destroy.
- #9176 -> `docs/changelog/2026-08-17.mdx`: Use rootless Podman for
Portable lifecycle operations.
- #9197 -> `docs/changelog/2026-08-17.mdx`: Preflight Portable CPU
delegation.
- #9289 -> `docs/changelog/2026-08-17.mdx`: Narrow Portable policy
defaults.
- #9270 -> `docs/changelog/2026-08-17.mdx`: Preserve Portable model
intent.
- #9339 -> `docs/changelog/2026-08-17.mdx`: Reconcile timed-out Portable
stop state.
- #9209 -> `docs/changelog/2026-08-17.mdx`: Clean receipt-owned Portable
Podman resources.
- #9186 -> `docs/changelog/2026-08-17.mdx`: Separate Podman activation
readiness.
- #9376 -> `docs/changelog/2026-08-17.mdx`: Settle Portable OpenClaw
pairing before readiness.
- #9296 -> `docs/changelog/2026-08-17.mdx`: Retire messaging channel
presets the host no longer configures.
- #9327 -> `docs/changelog/2026-08-17.mdx`: Drop retired channels from
reused messaging selections.
- #9306 -> `docs/changelog/2026-08-17.mdx`: Remove gateway-enforced
presets without a local record.
- #9248 -> `docs/changelog/2026-08-17.mdx`: Activate Google Chat pairing
approval.
- #9374 -> `docs/changelog/2026-08-17.mdx`: Accept schema-owned
messaging plan fields.
- #9317 -> `docs/changelog/2026-08-17.mdx`: Accept safe hard-linked
package files during backup.
- #9288 -> `docs/changelog/2026-08-17.mdx`: Remove managed CLI shims
with destroyed user data.
- #9239 -> `docs/changelog/2026-08-17.mdx`: Read voice credentials from
fixed descriptors.
- #9269 -> `docs/changelog/2026-08-17.mdx`: Accept bounded native
OpenClaw device modes.
- #9371 -> `docs/changelog/2026-08-17.mdx`: Isolate OpenClaw
startup-guard output.
- #9351 -> `docs/changelog/2026-08-17.mdx`: Restore staging Launchable
validation.
- #9350 -> `docs/changelog/2026-08-17.mdx`: Retry transient
collaborator-permission reads.
- #9353 -> `docs/changelog/2026-08-17.mdx`: Retry transient
exact-artifact downloads.
- #9226 -> `docs/changelog/2026-08-17.mdx`: Add bounded Brev readiness
diagnostics.
- #9237 -> `docs/changelog/2026-08-17.mdx`: Report same-commit E2E
reliability.
- #9232 -> `docs/changelog/2026-08-17.mdx`: Execute native-runtime
qualification.
- #9275 -> `docs/changelog/2026-08-17.mdx`: Define E2E selection and
retry guidance.
- #9234 -> `docs/changelog/2026-08-17.mdx`: Move documentation review
after merge.
- #9365 -> `docs/changelog/2026-08-17.mdx`: Mount documentation reviewer
inputs before startup.

## 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 dated release-entry
contract.
- [ ] 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; documentation-only change.
- 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 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 — `npx vitest run
test/changelog-docs.test.ts` (7 passed)
- [x] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — command/result: Not applicable to one
prose-only changelog page; `npm run docs` passed the repository's strict
documentation gate.
- [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 the 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)
— the SPDX header is present; dated changelog pages intentionally do not
use 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 v0.0.110.
* Documented experimental managed llama.cpp and Portable OpenClaw
profiles.
* Covered inference validation, onboarding and recovery improvements,
rootless lifecycle handling, messaging and policy updates, backups,
credential handling, filesystem protections, and release qualification
updates.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

NV QA Bugs found by the NVIDIA QA Team VDR Linked to VDR finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[WSL2][Onboard] local Ollama onboard aborts after requesting a privileged reinstall when no models are present

2 participants


Back | FazBrowse Home | New Git URL