Skip to content

fix(inference): honor declared llama.cpp host port - #8564

Merged
ericksoa merged 6 commits into
mainfrom
fix/llama-cpp-loopback-port-8544
Aug 7, 2026
Merged

fix(inference): honor declared llama.cpp host port#8564
ericksoa merged 6 commits into
mainfrom
fix/llama-cpp-loopback-port-8544

Conversation

@ericksoa

@ericksoa ericksoa commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Managed llama.cpp onboarding now accepts the exact loopback host port declared by the selected YAML recipe. Docker lifecycle inspection still rejects non-loopback or mismatched bindings, and isolated qualification retains dynamic loopback allocation.

Related Issue

Fixes #8544.
Advances #8144.

Changes

  • Source managed llama.cpp port preflight and lifecycle bindings from recipe.spec.serve.port.
  • Validate Docker's configured port against the operation-scoped lifecycle binding instead of requiring dynamic allocation.
  • Cover fixed product onboarding, mismatched Docker state, and continued dynamic qualification behavior.

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: Existing docs already identify fixed loopback port 8081; no public command, configuration, default, support-status, or workflow change.
  • 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 exact-head nine-category review passed all categories. Exact lifecycle paths preserve YAML port authority; rollback relaxes only port equality after retaining loopback, structural, ownership, journal, network, and hardening checks.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: no-docs-needed
  • Evidence: The patch makes managed llama.cpp port checks and Docker lifecycle bindings use the existing YAML recipe serve.port, validates Docker's published port against that declared binding, and preserves exact-owned rollback for valid loopback port drift. The shipped recipe remains on loopback port 8081, which current documentation already describes. No command, public configuration, default, support status, or user workflow changes.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

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 — npx vitest run --project cli src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts src/lib/inference/llama-cpp/managed-installer.test.ts (2 files, 60 tests); npm run typecheck:cli; npm run test-size:check; npm run checks:repository; and npm run lint passed.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result:
  • 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)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Aaron Erickson aerickson@nvidia.com

Summary by CodeRabbit

  • Bug Fixes
    • Managed llama.cpp installations now use the serving port configured for the selected recipe.
    • Resumed installations and runtime recovery consistently preserve the configured port.
    • Docker lifecycle validation now detects mismatches between configured and published ports.
    • Invalid or malformed Docker port bindings are rejected, preventing incorrect startup configurations.
    • Port availability errors now identify the relevant configured port.
    • Cleanup and rollback flows safely handle invalid Docker bindings.

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@ericksoa ericksoa added area: inference Inference routing, serving, model selection, or outputs area: local-models Local model providers, downloads, launch, or connectivity platform: dgx-spark Affects DGX Spark hardware or workflows labels Aug 7, 2026
@ericksoa ericksoa self-assigned this Aug 7, 2026
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The managed llama.cpp installer now derives its host port from the selected recipe. Docker lifecycle inspection validates configured and published bindings against that port during installation, recovery, rollback, authorization, destruction, and startup. Tests cover custom ports, receipt round trips, and port drift.

Changes

Llama.cpp port validation

Layer / File(s) Summary
Recipe-derived serving port
src/lib/inference/llama-cpp/managed-installer.ts, src/lib/inference/llama-cpp/managed-installer.test.ts
The installer uses spec.serve.port for lifecycle bindings and port checks during installation and runtime resumption. Tests verify that the selected port reaches lifecycle bindings.
Docker binding inspection
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts
Container inspection accepts the declared host port, validates configured and published loopback bindings, and records the validated published port.
Lifecycle propagation and coverage
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts, src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts
Rollback, authorization, destruction, and startup flows pass the declared port to inspection. Tests cover port 8081, receipt serialization, and configured or published port drift.

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

Sequence Diagram(s)

sequenceDiagram
  participant ManagedInstaller
  participant DockerLlamaCppManagedLifecycle
  participant Docker
  ManagedInstaller->>DockerLlamaCppManagedLifecycle: provide recipe serving port
  DockerLlamaCppManagedLifecycle->>Docker: inspect container bindings
  Docker-->>DockerLlamaCppManagedLifecycle: return configured and published ports
  DockerLlamaCppManagedLifecycle-->>ManagedInstaller: return validated lifecycle state
Loading

Possibly related PRs

Suggested labels: bug-fix, area: onboarding

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The installer and Docker lifecycle changes align with issue #8544 by using and validating the recipe-declared host port.
Out of Scope Changes check ✅ Passed All production and test changes support the linked issue by implementing and validating recipe-specific host-port handling.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: honoring the declared llama.cpp host port.
✨ 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/llama-cpp-loopback-port-8544

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

@github-code-quality

github-code-quality Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit d07506f in the fix/llama-cpp-loopba... branch remains at 96%, unchanged from commit aae23eb in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit d07506f in the fix/llama-cpp-loopba... branch remains at 81%, unchanged from commit aae23eb in the main branch.

Show a code coverage summary of the most impacted files.
File main aae23eb fix/llama-cpp-loopba... d07506f +/-
src/lib/onboard...flight-ports.ts 67% 33% -34%
src/lib/core/pr...mpt-activity.ts 92% 67% -25%
src/lib/inferen...ed-installer.ts 68% 67% -1%
src/lib/onboard...ed-lifecycle.ts 75% 75% 0%
src/lib/messagi...flow-planner.ts 91% 91% 0%
src/lib/credentials/store.ts 55% 56% +1%
src/lib/trace.ts 90% 94% +4%
src/lib/messagi...onfig-parser.ts 93% 100% +7%
src/lib/messagi...ink-base-url.ts 90% 100% +10%
src/lib/agent/d...e-base-image.ts 86% 100% +14%

Updated August 07, 2026 16:06 UTC

@github-actions

github-actions Bot commented Aug 7, 2026

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 · 0 warnings · 0 suggestions
  • Model comparison: normalized findings match; normalized terminology decisions differ; normalized E2E selections match; severity counts match.
2 terminology differences from the second opinion

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

  • loopback host port at src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts:791: selected only by the second-opinion lane as established.
  • declared binding at src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts:340: selected only by the second-opinion lane as justified.

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

2 semantic terminology decisions

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

  • justified — port drift at src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts:829: Keep `port drift` for the declared-versus-configured or published loopback port difference.
  • established — exact ownership at src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts:829: Keep the established term for journal-authorized cleanup.

E2E guidance

Advisory only. A maintainer can dispatch the default E2E suite against this exact revision.

Recommended E2E: managed-image-multiarch-startup, managed-image-protected-runtime, inference-routing, network-policy, onboard-repair, onboard-resume, cloud-onboard

2 optional E2E recommendations
  • llama-cpp-dgx-spark-qualification
  • spark-install

Workflow run details

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts (1)

312-327: 🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

Make port-drift rejection recoverable.

rollbackExact calls strict inspectContainer before ownership validation. Configured or published port drift therefore prevents container removal, network removal, and journal retirement. Add a cleanup inspection path that skips only port-binding validation, while retaining ownership and security checks. Use it in rollback and add tests that assert both drift cases remove resources and retire the journal.

🤖 Prompt for 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.

In `@src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts`
around lines 312 - 327, Make the strict port checks in inspectContainer
optionally skippable for cleanup while preserving ownership and security
validation; use this cleanup inspection mode in rollbackExact so configured or
published port drift still removes the container/network and retires the
journal. Update the lifecycle tests covering both drift cases to assert resource
removal and journal retirement. Apply the implementation in
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts at lines
312-327 and 935-966, and the corresponding assertions in
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts at
lines 814-820.

Source: Path instructions

🤖 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.

Outside diff comments:
In `@src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts`:
- Around line 312-327: Make the strict port checks in inspectContainer
optionally skippable for cleanup while preserving ownership and security
validation; use this cleanup inspection mode in rollbackExact so configured or
published port drift still removes the container/network and retires the
journal. Update the lifecycle tests covering both drift cases to assert resource
removal and journal retirement. Apply the implementation in
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts at lines
312-327 and 935-966, and the corresponding assertions in
src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts at
lines 814-820.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 4b0b15ee-09c0-4575-83f4-35daf61ffaf0

📥 Commits

Reviewing files that changed from the base of the PR and between aae23eb and 20bfcb1.

📒 Files selected for processing (4)
  • src/lib/inference/llama-cpp/managed-installer.test.ts
  • src/lib/inference/llama-cpp/managed-installer.ts
  • src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts
  • src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts

Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
@ericksoa
ericksoa merged commit 41e7f23 into main Aug 7, 2026
89 of 91 checks passed
@ericksoa
ericksoa deleted the fix/llama-cpp-loopback-port-8544 branch August 7, 2026 16:21
@github-actions github-actions Bot added the v0.0.105 Release target label Aug 7, 2026
ericksoa added a commit that referenced this pull request Aug 7, 2026
<!-- markdownlint-disable MD041 -->
## Summary
<!-- 1-3 plain sentences: what changes and why. Describe
before-and-after behavior when it applies. Follow the NemoClaw Writing
Guide: https://github.com/NVIDIA/NemoClaw/blob/main/WRITING.md. Do not
add unrelated prose cleanup. -->

The managed llama.cpp installer publishes the fixed loopback host port
that every downstream endpoint assumes, while the lifecycle validator
required a dynamic host-port assignment, so the inspection that follows
container creation always rejected the container the installer had just
created and managed onboarding could never finish. The validator now
compares the configured host port against the port the bindings pin, and
the lifecycle input requires that port rather than accepting a dynamic
binding.

Since #8564 landed the primary fixed-port behavior, this PR now carries
the distinct rollback protection: malformed, non-loopback, or drifting
endpoint metadata can be rejected while strongly authenticated managed
containers, networks, and journals are still cleaned up for a safe
retry.

## Related Issue
<!-- Fixes #NNN or Closes #NNN. Remove this section if none. -->

Fixes #8544

## Changes
<!-- List concrete changes. If this adds an abstraction, configuration,
fallback, migration, or compatibility path, name its current requirement
and consumer, explain why a direct change is insufficient, and identify
the test that protects it. -->

- `parseInspection` in
`src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.ts`
compared the configured `HostPort` against `""`, which requires Docker
to choose the port. The only caller, `lifecycleFor` in
`src/lib/inference/llama-cpp/managed-installer.ts`, always pins
`LLAMA_CPP_PORT`, so `buildLlamaCppHostLocalDockerArgv` emits `--publish
127.0.0.1:8081:8081` and Docker reports `HostPort: "8081"`. The two
requirements could not both hold.
- The loopback check and the port check are now separate. A `HostIp`
that is not `127.0.0.1` still reports `Docker llama.cpp configured host
port is not loopback-only.`; a port that disagrees with the bindings
reports that instead. The previous single condition raised the loopback
message for a correct `127.0.0.1` binding, which is what the issue
reported.
- `parseInspection` and `inspectContainer` take the runtime bindings
rather than a bare network name, so the expected host port travels with
the network identity it is checked alongside. The ten call sites already
passed `options.bindings.network.name`.
- Rollback now uses a cleanup inspection mode after an endpoint
mismatch. It skips only endpoint validation, still requires the recorded
container ownership and hardening to match before deletion, verifies
container and network absence, and retires the journal so a retry can
proceed.
- `HostLocalLlamaCppLifecycleInput.bindings` in
`src/lib/onboard/runtime-provider/host-local-inference.ts` now requires
`hostPort`. The shared bindings type leaves it optional because
`buildLlamaCppHostLocalDockerArgv` is also called directly by
`scripts/checks/run-llama-cpp-dgx-spark-qualification.mts`, which
legitimately omits it and never enters this lifecycle. Requiring it at
the lifecycle boundary states that the managed path publishes a fixed
port and makes a dynamic binding a compile error rather than a runtime
check. `npm run typecheck:cli` passes unchanged, which confirms no
current caller omits it.
- The fix is on the lifecycle, not the installer. Publishing a dynamic
port would satisfy the old condition and then break onboarding silently:
`providers.ts` and `setup-nim-flow.ts` set `endpointUrl` from the
hardcoded `LLAMA_CPP_HOST_OPENAI_BASE_URL`, `llama-cpp/index.ts` refuses
attachment on any other port, and `core/ports.ts` reserves 8081 against
env-var conflicts. The configured endpoint would point at 8081 while the
container listened elsewhere.

### Tests

-
`src/lib/onboard/runtime-provider/docker-llama-cpp-managed-lifecycle.test.ts`
ran a configuration the product never produces: its bindings omitted
`hostPort` and its Docker inspection fixture hard-coded `HostPort: ""`
with an ephemeral published port. Pinning `LLAMA_CPP_PORT` in the
bindings and moving the fixture to the shape Docker returns for that
binding makes the existing suite cover the shipped path. Reverting only
the source change and rerunning the suite fails 22 of 34 tests with the
exact error from the issue.
- The host-port mismatch regression now proves rejection, journal
retirement, an idempotent recovery pass, and a successful fresh start.
The retry would fail at the existing container-name or network-name
checks if either resource remained. It distinguishes configured-port and
published-port diagnostics and includes an isolated non-loopback case
with no simultaneous port drift.
- `src/lib/inference/llama-cpp/host-local-runtime.test.ts` asserted only
the dynamic `127.0.0.1::8081` publish argument. A case now covers the
pinned `127.0.0.1:8081:8081` form the product uses.
- `src/lib/inference/llama-cpp/managed-installer.test.ts` now asserts
that the bindings handed to the lifecycle pin `LLAMA_CPP_PORT`, so the
installer and the validator cannot drift apart again without a test
failing.

## Type of Change

- [x] 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
<!-- Check one tests line and one docs line. Check other lines when
applicable. Add every requested justification or approval reference. -->
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: no flag, prompt,
configuration key, default, or success-path output changes. The
published documentation already describes the pinned behavior this
change restores: `docs/inference/choose-local-inference-server.mdx`
states that onboarding "Publishes port `8081` on `127.0.0.1`" and that
"The Docker port output must contain `127.0.0.1:8081`", and
`docs/reference/commands.mdx` records that port `8081` is reserved for
the managed llama.cpp runtime. Those statements were correct and
unreachable; they are now reachable. No documented error string changes,
and `docs/reference/troubleshooting.mdx` has no llama.cpp entry to keep
consistent.
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Codex Desktop
independently completed all nine security categories on the current
branch revision; no findings.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review
<!-- Required for code and documentation changes after the changes and
applicable validation are complete. Keep one review checkbox and one
instance of each visible or hidden field. For Evidence, list changed
documentation paths. For documentation-only changes, also state that the
writing rules and documentation style were reviewed. For other results,
explain why no documentation change is needed or why the review is
blocked. For Agent, use a consistent product and surface name, such as
Codex Desktop, Codex CLI, Claude Code, or Cursor. After committing all
review changes, put `git rev-parse --short HEAD` and `git rev-parse
--short HEAD:AGENTS.md` in the hidden metadata below. Rerun the review
and refresh that metadata after any new commit. This receipt is advisory
during the data-collection pilot. -->
- [x] Documentation writer subagent reviewed the completed changes
- Result: `no-docs-needed`
- Evidence: No documentation paths changed. The independent review
confirmed that existing managed llama.cpp documentation already
specifies the fixed `127.0.0.1:8081` endpoint, authenticated
unfinished-journal rollback, and retry behavior; the completed change
restores those documented contracts without adding a user-facing
surface.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 4428002 -->
<!-- docs-review-agents-blob-sha: 12ad395 -->

## DGX Station Hardware Evidence
<!-- Required only when scripts/prepare-dgx-station-host.sh changes.
Maintainers must review the linked evidence before approving or merging.
This is human-reviewed evidence, not authenticated hardware provenance.
Exceptional bypasses use existing repository governance and must be
documented on the PR. -->
- [ ] Tested on DGX Station
- Tested commit:
- Station profile/scenario:
- Result:
- Supporting evidence:

## Verification
<!-- Check each applicable item only when supported by the requested
evidence. Run targeted tests once per relevant change set and rerun
after later edits or hook autofixes that can affect the tested behavior.
Do not rerun hook-covered checks. -->
- [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 — command/result or justification: `npx
vitest run --project cli src/lib/onboard/runtime-provider
src/lib/inference/llama-cpp` — 295 passed across 18 files. `npx vitest
run --project integration test/cli/list-share-live-inference.test.ts
test/sandbox-connect-inference` — 23 passed. `npx vitest run --project
e2e-support` — 2142 passed, 10 skipped. `npm run typecheck:cli` — clean.
`test/e2e/live/llama-cpp-dgx-spark-qualification.test.ts` needs DGX
Spark hardware and was not run. Maintainer follow-up on the current
branch revision: the three directly affected files pass 76/76 tests, CLI
type-checking passes, and `npm run validate:pr` passes.
- [ ] 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. This
changes one validator and one lifecycle input type; it adds no harness
mechanics, Vitest config, project glob, or registration topology. `npm
run checks:repository` passed, including the layer import boundary and
the source architecture budget with zero cycles.
- [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)
- [ ] 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)

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>


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

* **Bug Fixes**
* Improved llama.cpp container lifecycle handling for malformed,
non-loopback, duplicate, or unexpectedly changed published ports.
* Ensured cleanup and recovery flows reliably remove affected containers
and networks.
* Enforced consistent use of the configured local host port during
runtime validation and Docker publishing.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
Co-authored-by: Apurv Kumaria <akumaria@nvidia.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Aaron Erickson <aerickson@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: inference Inference routing, serving, model selection, or outputs area: local-models Local model providers, downloads, launch, or connectivity platform: dgx-spark Affects DGX Spark hardware or workflows v0.0.105 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DGX Spark][Onboard] nemoclaw onboard install-llama-cpp always fails: "Docker llama.cpp configured host port is not loopback-only"

1 participant