Skip to content

fix(vllm): continue automated setup after storage warnings#6985

Merged
cv merged 2 commits into
mainfrom
fix/vllm-noninteractive-storage-advisory
Jul 16, 2026
Merged

fix(vllm): continue automated setup after storage warnings#6985
cv merged 2 commits into
mainfrom
fix/vllm-noninteractive-storage-advisory

Conversation

@sandl99

@sandl99 sandl99 commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Previously, verified low Docker or model-cache storage stopped express and non-interactive managed-vLLM setup unless NEMOCLAW_IGNORE_VLLM_DISK_SPACE was set. This extracts the first behavior slice from #6965: verified shortages are advisory for automation while the storage checks mature, and the now-redundant override is removed. Interactive setup still requires explicit confirmation, and non-interactive setup still stops when model-cache capacity cannot be verified.

Changes

  • Continue express and non-interactive managed-vLLM setup after a verified Docker or model-cache storage warning.
  • Preserve interactive confirmation for verified shortages and the fail-closed non-interactive path for an inconclusive model-cache probe.
  • Remove NEMOCLAW_IGNORE_VLLM_DISK_SPACE from the implementation and command reference.
  • Update focused preflight coverage and managed-vLLM documentation. Express already enters onboarding in non-interactive mode, so no installer-specific branch is needed.

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:
  • 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: Independent review found no actionable findings; focused tests cover verified-low image and model capacity, interactive responses, post-pull re-probing, and the inconclusive model-cache fail-closed boundary.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

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 check:diff passed when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — npx vitest run --project cli src/lib/inference/vllm.test.ts src/lib/inference/vllm-storage.test.ts (103 passed); npx vitest run test/inference-options-docs.test.ts test/changelog-docs.test.ts (26 passed)
  • 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 focused preflight behavior change
  • 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 passed with 0 errors; Fern reported two unrelated warnings for unavailable redirect authentication and the existing light-mode accent contrast
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: San Dang sdang@nvidia.com

Summary by CodeRabbit

  • Behavior Changes

    • Managed vLLM setup now treats verified storage shortages as advisory during non-interactive installation, allowing guarded downloads to continue.
    • Interactive setup still requires explicit confirmation for verified insufficient-capacity warnings.
    • Non-interactive setup will stop when model-cache capacity can’t be verified and directs users to retry interactively; Docker image-storage verification remains more permissive.
    • Updated warning messaging for Docker image and Hugging Face model-cache capacity.
  • Documentation

    • Refreshed guidance for --yes / NEMOCLAW_YES=1, removed deprecated disk-space override guidance, and added an OpenClaw-only NEMOCLAW_MINIMAL_BOOTSTRAP note.
  • Tests

    • Updated vLLM installation tests to match the new non-interactive warning/continue/stop behavior.

@sandl99 sandl99 added the area: docs Documentation, examples, guides, or docs build label Jul 16, 2026
@sandl99 sandl99 self-assigned this Jul 16, 2026
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Managed vLLM storage checks now treat verified capacity shortages as advisory during non-interactive setup, while inconclusive model-cache checks still stop non-interactive setup. The disk-space override was removed, with corresponding test and documentation updates.

Changes

Managed vLLM storage handling

Layer / File(s) Summary
Storage warning control flow
src/lib/inference/vllm-storage.ts, src/lib/inference/vllm.ts
Removes the disk-space override and updates image/model storage handling for interactive, non-interactive, advisory, and inconclusive probe results.
Storage behavior validation
src/lib/inference/vllm.test.ts
Updates coverage for advisory continuation, interactive confirmation, inconclusive model-cache checks, cold-image re-probing, Docker-storage warnings, and removed override behavior.
Storage behavior documentation
docs/changelog/2026-07-14.mdx, docs/inference/set-up-vllm.mdx, docs/reference/commands.mdx
Documents revised storage-warning behavior and replaces the removed environment-variable reference with NEMOCLAW_MINIMAL_BOOTSTRAP documentation.

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

Sequence Diagram(s)

sequenceDiagram
  participant installVllm
  participant StorageChecks
  participant Docker
  participant Operator
  installVllm->>StorageChecks: evaluate image and model-cache capacity
  StorageChecks-->>installVllm: return storage status
  alt verified shortage in non-interactive mode
    installVllm->>Docker: continue guarded pull
  else inconclusive model-cache capacity
    installVllm-->>installVllm: stop and request interactive rerun
  else interactive warning
    installVllm->>Operator: request confirmation
    Operator-->>installVllm: confirm continuation
    installVllm->>Docker: continue guarded pull
  end
Loading

Possibly related PRs

  • NVIDIA/NemoClaw#6883: Adds related managed vLLM storage-warning behavior for Station express/profile setup.
  • NVIDIA/NemoClaw#6965: Updates the related managed vLLM storage preflight, override removal, and installation gating flow.

Suggested labels: bug-fix, area: inference, provider: vllm

Suggested reviewers: cv

🚥 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
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: automated setup now continues after storage warnings.
✨ 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 fix/vllm-noninteractive-storage-advisory

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

@github-actions

Copy link
Copy Markdown
Contributor

@github-code-quality

github-code-quality Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage remains at 96%, unchanged from the main branch.

TypeScript / code-coverage/cli

The overall coverage in the fix/vllm-noninteract... branch remains at 80%, unchanged from the main branch.

Show a code coverage summary of the most impacted files.
File main d03e9d7 fix/vllm-noninteract... 6dd9953 +/-
src/lib/inference/vllm.ts 84% 84% 0%
src/lib/inferen...vllm-storage.ts 87% 88% +1%

Updated July 16, 2026 01:59 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@sandl99 sandl99 added area: install Install, setup, prerequisites, or uninstall flow platform: dgx-spark Affects DGX Spark hardware or workflows platform: dgx-station Affects DGX Station hardware or workflows v0.0.84 Release target labels Jul 16, 2026
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — Blocking findings reported

Advisor assessment: Blockers require maintainer review
Next action: Review the blockers below.
Findings: 1 blocker · 0 warnings · 0 suggestions

Model lanes

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

Nemotron output stays in workflow artifacts and does not change the assessment above.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: inference-routing, network-policy

Blockers

PRA-1 Blocker — Keep verified storage shortages fail-closed in unattended installs

  • Location: src/lib/inference/vllm.ts:860
  • Category: security
  • Problem: `imageStorageAccepted` now returns true for a verified insufficient Docker-storage result whenever `nonInteractive` is set; `modelStorageAccepted` does the same for a verified insufficient model-cache result. The subsequent pull/download can therefore begin after the guard has established that its target filesystem lacks the required capacity, with no explicit operator override.
  • Impact: Automated onboarding can start a multi-gigabyte image pull or a registered model download (including the roughly 352-GB Ultra snapshot) on a known-insufficient host filesystem. Exhausting Docker or host-cache storage can impair host and sandbox availability.
  • Fix: Restore refusal for verified insufficient capacity in non-interactive mode, or require a narrowly named explicit operator override before continuing. Retain the interactive explicit-confirmation path and the post-pull model-cache re-probe.
  • Verification: Read `imageStorageAccepted` and `modelStorageAccepted` in `src/lib/inference/vllm.ts` and run the existing unit cases that mock `availableBytes: 1n` with `nonInteractive: true`; they currently reach Docker pull/model download.
  • Test coverage: Cover non-interactive verified-low Docker and model-cache capacity without an explicit override returning `{ ok: false }` and asserting no pull or model-download spawn; separately cover the explicit override continuing.
  • Evidence: `src/lib/inference/vllm.ts:856-864` logs a verified Docker-storage warning then returns true in non-interactive mode. `src/lib/inference/vllm.ts:880-897` logs a verified model-cache warning then returns true in non-interactive mode. `src/lib/inference/vllm.test.ts` changed low-storage non-interactive expectations to `{ ok: true }` and asserts pull/download calls.

Workflow run details

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

@sandl99

sandl99 commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator Author

PRA-1 is intentional for this scoped PR and does not require a code change.

The maintainer decision is to treat a verified Docker image-storage or model-cache shortage as advisory for express and other non-interactive setup while these estimates mature. The warning, measured capacity, remediation, and diagnostics are still printed before the guarded pull or download. Interactive setup still requires an explicit y or yes, and an inconclusive model-cache probe remains fail-closed in non-interactive setup.

NEMOCLAW_IGNORE_VLLM_DISK_SPACE is deliberately removed because automated setup should not require a hidden escape hatch for this advisory case. The focused tests cover both advisory paths and retain the interactive and inconclusive-probe boundaries. A future hard gate should be considered only after the preflight is stable enough to be enforced without blocking supported automated installs.

@cv
cv merged commit 9712cd8 into main Jul 16, 2026
93 of 106 checks passed
@cv
cv deleted the fix/vllm-noninteractive-storage-advisory branch July 16, 2026 02:17
cv pushed a commit that referenced this pull request Jul 16, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds the canonical `docs/changelog/2026-07-15.mdx` entry with the exact
`## v0.0.84` heading for the release candidate range from `v0.0.83`
through `710d2b36b9eebcb6bca3c2b2f796a1bdb69c3a31`.
Fills two owner-page gaps for model-aware local inference health and
pre-write OpenClaw candidate validation.

## Changes

- Add the complete shared Fern changelog entry for `v0.0.84`, with
literal CLI names and root-absolute OpenClaw and Hermes routes.
- Document that sandbox status and doctor compare the configured Ollama
or vLLM model with provider inventory without issuing a completion.
- Document that host-side OpenClaw `config set` validates the complete
candidate before replacing live config or reaching gateway restart.
- Reconcile the `v0.0.84` release label with the commit range. PR #6773
is already contained in `v0.0.83` and remains documented there; CI,
test-harness, docs-infrastructure, and `.js` to `.mts` migration-only
changes require no additional user guidance.

### Source summary

- [#6882](#6882) ->
`docs/manage-sandboxes/backup-restore.mdx`,
`docs/changelog/2026-07-15.mdx`: Explain that OpenClaw runtime identity
and pairing state are excluded from snapshots and ignored during
restore.
- [#6873](#6873) ->
`docs/inference/set-up-ollama.mdx`, `docs/changelog/2026-07-15.mdx`:
Record the Ollama requested-model environment fallback and interactive
default.
- [#6835](#6835) ->
`docs/changelog/2026-07-15.mdx`: Include the sandbox name in the
documented rebuild resume-recovery behavior.
- [#6886](#6886) ->
`docs/inference/custom-endpoint-security.mdx`,
`docs/inference/set-up-openai-compatible-endpoint.mdx`,
`docs/changelog/2026-07-15.mdx`: Explain the exact-host trusted-private
endpoint opt-in and retained SSRF boundaries.
- [#6887](#6887) ->
`docs/reference/commands.mdx`, `docs/changelog/2026-07-15.mdx`: Document
Telegram channel health verdicts, summary behavior, and exit status.
- [#6863](#6863) ->
`docs/manage-sandboxes/lifecycle.mdx`, `docs/changelog/2026-07-15.mdx`:
Add the missing model-inventory behavior for local status and doctor
checks.
- [#6902](#6902) ->
`docs/manage-sandboxes/runtime-controls.mdx`,
`docs/changelog/2026-07-15.mdx`: Add the missing pre-write OpenClaw
candidate-validation contract.
- [#6916](#6916) ->
`docs/changelog/2026-07-15.mdx`: Preserve the failed-session
fresh-install recovery correction in the release entry.
- [#6934](#6934) ->
`docs/reference/commands.mdx`, `docs/reference/troubleshooting.mdx`,
`docs/security/credential-storage.mdx`, `docs/changelog/2026-07-15.mdx`:
Summarize completed-prompt checkpointing and validated credential reuse
during OpenClaw resume.
- [#6898](#6898) ->
`docs/inference/switch-models.mdx`,
`docs/inference/switch-providers.mdx`,
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-15.mdx`:
Explain Hermes dashboard convergence after in-place inference changes.
- [#6711](#6711) ->
`docs/manage-sandboxes/run-sandboxes.mdx`,
`docs/manage-sandboxes/uninstall-nemoclaw.mdx`,
`docs/reference/architecture.mdx`, `docs/reference/commands.mdx`,
`docs/changelog/2026-07-15.mdx`: Summarize port-scoped host state and
uninstall preservation.
- [#6767](#6767) ->
`docs/inference/configure-model-limits.mdx`,
`docs/inference/set-up-ollama.mdx`,
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-15.mdx`:
Record the Hermes `64000`-token Ollama floor and unchanged OpenClaw
floor.
- [#6862](#6862) ->
`docs/get-started/quickstart.mdx`,
`docs/inference/verify-inference-route.mdx`,
`docs/changelog/2026-07-15.mdx`: Explain retryable not-ready
finalization for unhealthy inference routes.
- [#6766](#6766) ->
`docs/security/tcb-boundary.mdx`, `docs/changelog/2026-07-15.mdx`:
Document definitive stale transition-lock recovery and fail-closed
ambiguous cases.
- [#6948](#6948) ->
`docs/manage-sandboxes/manage-mcp-servers.mdx`,
`docs/changelog/2026-07-15.mdx`: Include Hermes MCP apply-state race
recovery in the release entry without changing the established user
workflow.
- [#6964](#6964) ->
`docs/reference/troubleshooting.mdx`, `docs/changelog/2026-07-15.mdx`:
Record complete agent-specific fresh-install and resume recovery
commands.
- [#6883](#6883) ->
`docs/get-started/quickstart.mdx`, `docs/inference/set-up-vllm.mdx`,
`docs/reference/platform-support.mdx`, `docs/changelog/2026-07-15.mdx`:
Summarize the DGX Station Nemotron Ultra express path and pinned
managed-vLLM recipe.
- [#6985](#6985) ->
`docs/inference/set-up-vllm.mdx`, `docs/reference/commands.mdx`,
`docs/changelog/2026-07-15.mdx`: Capture the final automated and
interactive storage-warning behavior.

## 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 —
`test/changelog-docs.test.ts` validates the dated-entry structure, exact
version heading, and preserved history.
- [ ] 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` (6 passed)
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — not run for this doc-only change.
- [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; Fern reported the unchanged unauthenticated
redirect-check and light-theme contrast 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 native changelog entry uses the required parser-safe MDX SPDX
comment and intentionally has no frontmatter.

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


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

## Summary by CodeRabbit

* **Documentation**
* Added the v0.0.84 changelog entry covering setup, endpoint onboarding,
model handling, sandbox readiness, recovery, channel status, and
configuration safeguards.
* Clarified that sandbox health checks validate configured models
against local Ollama and vLLM provider inventories without generating
completions or consuming tokens.
* Documented that invalid runtime configuration changes are rejected
while preserving the existing working configuration.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: docs Documentation, examples, guides, or docs build area: install Install, setup, prerequisites, or uninstall flow platform: dgx-spark Affects DGX Spark hardware or workflows platform: dgx-station Affects DGX Station hardware or workflows v0.0.84 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants