fix(onboard): align Hermes WebUI port - #6283
Conversation
Signed-off-by: ogarciarevett <ogarciarevett@gmail.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 Hermes dashboard onboarding flow now propagates the effective dashboard port through preflight, forwarding, and UI printing. Hermes validation and tests were updated to use the effective dashboard port for WebUI checks and error handling. ChangesHermes dashboard port propagation
Estimated code review effort: 4 (Complex) | ~60 minutes Possibly related PRs: Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
cv
left a comment
There was a problem hiding this comment.
Correctness blocker: runtime uses effectivePort, but final dashboard access output still derives its URL from the legacy alias or default 9119. NEMOCLAW_DASHBOARD_PORT=9120 or --control-ui-port 9120 forwards 9120 while advertising 9119. Failure guidance also points users to a legacy alias now required to match. Carry effectivePort through all output and guidance, and cover nondefault canonical-port cases.
|
✨ Thanks for the PR. This fixes the Hermes WebUI onboarding port collision by aligning the resolved NemoClaw dashboard port as the single public WebUI port. Ready for maintainer review. Related open issues: Related open issues: |
Carry the canonical dashboard port through forward refresh, recovery, and final output. Keep fixed API ports and remote dashboard URLs intact. Point failure guidance to the canonical dashboard configuration. Co-authored-by: Omar Garcia <ogarciarevett@gmail.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Move each dashboard-port environment setup into its table entry. Keep the test body linear for the growth guardrail. Co-authored-by: Omar Garcia <ogarciarevett@gmail.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/lib/agent/onboard.ts (1)
404-423: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicate port-validation logic; consider a shared helper.
This inline
Number.isInteger(...) && ... >= 1 && ... <= 65535check re-implements the same rule already expressed asisValidPortinsrc/lib/agent/dashboard-ui.tsandsrc/lib/onboard/agent-dashboard-forward.ts. Extracting a single sharedisValidPortutility and reusing it here would reduce the risk of the three copies drifting apart.♻️ Proposed refactor sketch
- const effectiveDashboardPort = - Number.isInteger(deps.effectiveDashboardPort) && - Number(deps.effectiveDashboardPort) >= 1 && - Number(deps.effectiveDashboardPort) <= 65535 - ? Number(deps.effectiveDashboardPort) - : info.port; + const effectiveDashboardPort = isValidPort(deps.effectiveDashboardPort) + ? deps.effectiveDashboardPort + : info.port;(where
isValidPortis imported from a shared module used bydashboard-ui.tsandagent-dashboard-forward.ts.)🤖 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/agent/onboard.ts` around lines 404 - 423, The port validation in printDashboardUi is duplicated and should reuse the shared isValidPort rule instead of re-implementing the numeric range check inline. Move or import the common helper used by dashboard-ui.ts and agent-dashboard-forward.ts, then replace the Number.isInteger/1..65535 logic with that helper for effectiveDashboardPort. Keep the fallback to info.port unchanged so all dashboard port validation stays consistent across the agent onboarding flow.
🤖 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.
Nitpick comments:
In `@src/lib/agent/onboard.ts`:
- Around line 404-423: The port validation in printDashboardUi is duplicated and
should reuse the shared isValidPort rule instead of re-implementing the numeric
range check inline. Move or import the common helper used by dashboard-ui.ts and
agent-dashboard-forward.ts, then replace the Number.isInteger/1..65535 logic
with that helper for effectiveDashboardPort. Keep the fallback to info.port
unchanged so all dashboard port validation stays consistent across the agent
onboarding flow.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: bce257d0-59c2-4538-a6f9-9f0bd0ed4d5a
📒 Files selected for processing (12)
src/lib/actions/sandbox/forward-recovery.tssrc/lib/agent/dashboard-ui.tssrc/lib/agent/onboard.test.tssrc/lib/agent/onboard.tssrc/lib/onboard.tssrc/lib/onboard/agent-dashboard-forward.test.tssrc/lib/onboard/agent-dashboard-forward.tssrc/lib/onboard/dashboard.tssrc/lib/onboard/hermes-dashboard.test.tssrc/lib/onboard/hermes-dashboard.tstest/onboard-dashboard.test.tstest/process-recovery-primitives.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
- src/lib/onboard/hermes-dashboard.ts
- src/lib/onboard/hermes-dashboard.test.ts
Reuse the existing forward-port predicate for effective dashboard ports. Keep the stricter non-privileged manifest rule explicitly named. Co-authored-by: Omar Garcia <ogarciarevett@gmail.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Keep the latest main sandbox-flow fields. Continue passing the effective dashboard port through onboarding. Co-authored-by: Omar Garcia <ogarciarevett@gmail.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
Signed-off-by: Apurv Kumaria <akumaria@nvidia.com>
cjagwani
left a comment
There was a problem hiding this comment.
Approved exact verified head eff896b5d717cab69c847c0b55933a32f9b9b415. The original correctness blocker is resolved: the effective dashboard port is carried through preflight, forward creation, printed access URLs, registry-backed recovery, and optional Hermes WebUI forwarding, while the fixed Hermes API port remains distinct. Matching/mismatched legacy aliases, nondefault canonical ports, forward preservation/reallocation, recovery, and output are covered. All 30 exact-head checks are green; no major advisor findings remain.
|
@cv The exact head remains |
<!-- markdownlint-disable MD041 --> ## Summary Prepares the user documentation for NemoClaw v0.0.78 by replacing the unreleased section with release highlights and synchronizing the affected inference, lifecycle, messaging, and CLI reference pages with merged behavior. ## Changes - Publish the v0.0.78 release-notes section with links to the most specific user guides for each shipped behavior. - Document authoritative Deep Agents route health, Nemotron Ultra profile behavior, and Hermes compatible-endpoint context metadata. - Document forced rebuild recovery after total backup failure and the ownership-safe tunnel/full-stop behavior. - Keep command examples and shared agent variants aligned with the current OpenClaw, Hermes, and Deep Agents interfaces. Source mapping: - [#3787](#3787) -> `docs/about/release-notes.mdx`: Record reliable workspace template seeding during sandbox startup. - [#4960](#4960) -> `docs/about/release-notes.mdx`: Record safer detection of rewritten OpenClaw gateway processes. - [#5676](#5676) -> `docs/about/release-notes.mdx`: Record warning-tolerant agent-list JSON handling. - [#5857](#5857) -> `docs/about/release-notes.mdx`: Record synchronization of explicit OpenClaw main-agent model state. - [#5929](#5929) -> `docs/about/release-notes.mdx`: Record copyable SSH port-forward guidance for remote dashboards. - [#6068](#6068) -> `docs/about/release-notes.mdx`: Record custom-image plugin provenance reconciliation. - [#6116](#6116) -> `docs/about/release-notes.mdx`: Record live-loopback dashboard-forward recovery. - [#6122](#6122) -> `docs/about/release-notes.mdx`: Announce validated, round-trippable policy YAML output. - [#6211](#6211) -> `docs/manage-sandboxes/lifecycle.mdx`, `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Explain the explicit no-backup `rebuild --force` recovery boundary. - [#6283](#6283) -> `docs/about/release-notes.mdx`: Record Hermes WebUI port alignment. - [#6293](#6293) -> `docs/inference/switch-inference-providers.mdx`, `docs/about/release-notes.mdx`: Document compatible-endpoint context-length probing for Hermes. - [#6320](#6320) -> `docs/about/release-notes.mdx`: Record bounded gateway-recovery waits. - [#6377](#6377) -> `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Explain rebuild diagnostics and prepared MCP-destroy recovery. - [#6412](#6412) -> `docs/get-started/quickstart-langchain-deepagents-code.mdx`, `docs/about/release-notes.mdx`: Document authoritative agent-visible inference route health. - [#6421](#6421) -> `docs/about/release-notes.mdx`: Record the longer quiet-pull window for managed vLLM images. - [#6431](#6431) -> `docs/inference/model-capability-audit.mdx`, `docs/about/release-notes.mdx`: Document the version-pinned Nemotron Ultra profile plugin. - [#6439](#6439) -> `docs/about/release-notes.mdx`: Summarize the authenticated, pinned credential-capture helper boundary. - [#6450](#6450) -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Document host-forward cleanup and ownership-safe gateway-port release. - [#6474](#6474) -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/about/release-notes.mdx`: Record composable OpenClaw messaging runtime loaders. - [#6475](#6475) -> `docs/about/release-notes.mdx`: Record removal of the unavailable Kimi K2.6 production endpoint option. - [#6480](#6480) -> `docs/about/release-notes.mdx`: Record stderr routing for the plugin registration banner. - [#6481](#6481) -> `docs/about/release-notes.mdx`: Record post-pull Ollama model discovery checks. - [#6482](#6482) -> `docs/about/release-notes.mdx`: Record Ollama model warm-up after daemon restart. - [#6486](#6486) -> `docs/about/release-notes.mdx`: Publish the opt-in, thread-scoped Deep Agents auto-approval boundary. - [#6490](#6490) -> `docs/about/release-notes.mdx`: Record diagnostics for custom images missing the managed runtime. - [#6494](#6494) -> `docs/inference/model-capability-audit.mdx`, `docs/about/release-notes.mdx`: Document nonempty tool-call content preservation and placeholder rejection. - [#6497](#6497) -> `docs/get-started/quickstart-langchain-deepagents-code.mdx`, `docs/about/release-notes.mdx`: Document isolated Deep Agents route-probe output. - [#6506](#6506) -> `docs/get-started/quickstart-langchain-deepagents-code.mdx`, `docs/about/release-notes.mdx`: Document observability-preserving managed route probes. - [#6508](#6508) -> `docs/about/release-notes.mdx`: Link the new extension taxonomy and SDK-readiness reference from the release summary. Release-source verification: GitHub reports all 29 cited source PRs as merged with base `main`, and every merge commit is an ancestor of `origin/main` at `17bf9a6a9688b3b1d69cf4b37d3f23110acb055e`. No source-mapping mismatches were found. ## 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) ## Quality Gates <!-- Check exactly one tests line and one docs line. Check other lines when applicable. Add every requested justification or approval reference. --> - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: Documentation-only release-prep changes; `npm run docs` validates variants, routes, and Fern content. - [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 <!-- 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 the DCO sign-off declaration 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 — command/result or justification: Tests are not applicable to this documentation-only change set. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [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) — exited 0 with zero errors; Fern reported the existing unauthenticated redirect-check and light-mode 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) --- <!-- 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: Charan Jagwani <cjagwani@nvidia.com> --------- Signed-off-by: cjagwani <cjagwani@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary Hermes WebUI onboarding now treats the resolved NemoClaw dashboard port as the single public WebUI port, so `NEMOCLAW_DASHBOARD_PORT=9119` or `--control-ui-port 9119` no longer trips a false Hermes API-port collision. The legacy `NEMOCLAW_HERMES_DASHBOARD_PORT` value is accepted only when it matches that public OpenShell forward, preventing a host/sandbox port mismatch that cannot serve the WebUI. ## Related Issue Fixes NVIDIA#6277 ## Changes - Normalize enabled Hermes dashboard state to the effective NemoClaw dashboard/OpenShell forward port. - Replace misleading “Hermes API port” collision errors with Hermes WebUI/OpenShell-forward specific validation. - Add regression coverage for `NVIDIA#6277` covering `9119`, matching legacy alias, and mismatched alias rejection. ## 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 exactly 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: existing docs already describe `NEMOCLAW_DASHBOARD_PORT` as the Hermes built-in dashboard/WebUI forward; this fixes implementation drift. - [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: focused onboarding port-state self-review; the change keeps the existing reserved `8642` API guard, does not touch credentials/policies, and constrains Hermes WebUI public port state to the already validated OpenShell dashboard forward. - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## 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 the DCO sign-off declaration 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 — command/result or justification: RED `npx vitest run --project cli src/lib/onboard/hermes-dashboard.test.ts` failed on the false API-port collision and mismatch cases; GREEN `npx vitest run --project cli src/lib/onboard/hermes-dashboard.test.ts`; neighbor coverage `npx vitest run --project cli src/lib/onboard/hermes-dashboard.test.ts src/lib/onboard/sandbox-create-launch.test.ts src/lib/onboard/sandbox-reuse.test.ts src/lib/hermes-dashboard.test.ts src/lib/agent/onboard.test.ts src/lib/onboard/dashboard-preflight-ports.test.ts` passed 48 tests. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [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: ogarciarevett <ogarciarevett@gmail.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Improved Hermes dashboard onboarding port handling: the effective WebUI public port is always used, legacy port aliases are validated for exact matches, and clearer guidance is shown when configurations don’t align. * Refined port collision/overlap validation and reserved-port checks. * Updated dashboard forwarding behavior to prefer recorded sandbox dashboard ports, preserve the correct forwarded URL/port set on refresh, and avoid duplicate “additional port” instructions. * **Tests** * Expanded onboarding, Hermes UI URL selection, and dashboard-forwarding test coverage to match the new effective-port precedence and output expectations. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: ogarciarevett <ogarciarevett@gmail.com> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> Co-authored-by: Apurv Kumaria <akumaria@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary Prepares the user documentation for NemoClaw v0.0.78 by replacing the unreleased section with release highlights and synchronizing the affected inference, lifecycle, messaging, and CLI reference pages with merged behavior. ## Changes - Publish the v0.0.78 release-notes section with links to the most specific user guides for each shipped behavior. - Document authoritative Deep Agents route health, Nemotron Ultra profile behavior, and Hermes compatible-endpoint context metadata. - Document forced rebuild recovery after total backup failure and the ownership-safe tunnel/full-stop behavior. - Keep command examples and shared agent variants aligned with the current OpenClaw, Hermes, and Deep Agents interfaces. Source mapping: - [NVIDIA#3787](NVIDIA#3787) -> `docs/about/release-notes.mdx`: Record reliable workspace template seeding during sandbox startup. - [NVIDIA#4960](NVIDIA#4960) -> `docs/about/release-notes.mdx`: Record safer detection of rewritten OpenClaw gateway processes. - [NVIDIA#5676](NVIDIA#5676) -> `docs/about/release-notes.mdx`: Record warning-tolerant agent-list JSON handling. - [NVIDIA#5857](NVIDIA#5857) -> `docs/about/release-notes.mdx`: Record synchronization of explicit OpenClaw main-agent model state. - [NVIDIA#5929](NVIDIA#5929) -> `docs/about/release-notes.mdx`: Record copyable SSH port-forward guidance for remote dashboards. - [NVIDIA#6068](NVIDIA#6068) -> `docs/about/release-notes.mdx`: Record custom-image plugin provenance reconciliation. - [NVIDIA#6116](NVIDIA#6116) -> `docs/about/release-notes.mdx`: Record live-loopback dashboard-forward recovery. - [NVIDIA#6122](NVIDIA#6122) -> `docs/about/release-notes.mdx`: Announce validated, round-trippable policy YAML output. - [NVIDIA#6211](NVIDIA#6211) -> `docs/manage-sandboxes/lifecycle.mdx`, `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Explain the explicit no-backup `rebuild --force` recovery boundary. - [NVIDIA#6283](NVIDIA#6283) -> `docs/about/release-notes.mdx`: Record Hermes WebUI port alignment. - [NVIDIA#6293](NVIDIA#6293) -> `docs/inference/switch-inference-providers.mdx`, `docs/about/release-notes.mdx`: Document compatible-endpoint context-length probing for Hermes. - [NVIDIA#6320](NVIDIA#6320) -> `docs/about/release-notes.mdx`: Record bounded gateway-recovery waits. - [NVIDIA#6377](NVIDIA#6377) -> `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Explain rebuild diagnostics and prepared MCP-destroy recovery. - [NVIDIA#6412](NVIDIA#6412) -> `docs/get-started/quickstart-langchain-deepagents-code.mdx`, `docs/about/release-notes.mdx`: Document authoritative agent-visible inference route health. - [NVIDIA#6421](NVIDIA#6421) -> `docs/about/release-notes.mdx`: Record the longer quiet-pull window for managed vLLM images. - [NVIDIA#6431](NVIDIA#6431) -> `docs/inference/model-capability-audit.mdx`, `docs/about/release-notes.mdx`: Document the version-pinned Nemotron Ultra profile plugin. - [NVIDIA#6439](NVIDIA#6439) -> `docs/about/release-notes.mdx`: Summarize the authenticated, pinned credential-capture helper boundary. - [NVIDIA#6450](NVIDIA#6450) -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Document host-forward cleanup and ownership-safe gateway-port release. - [NVIDIA#6474](NVIDIA#6474) -> `docs/manage-sandboxes/messaging-channels.mdx`, `docs/about/release-notes.mdx`: Record composable OpenClaw messaging runtime loaders. - [NVIDIA#6475](NVIDIA#6475) -> `docs/about/release-notes.mdx`: Record removal of the unavailable Kimi K2.6 production endpoint option. - [NVIDIA#6480](NVIDIA#6480) -> `docs/about/release-notes.mdx`: Record stderr routing for the plugin registration banner. - [NVIDIA#6481](NVIDIA#6481) -> `docs/about/release-notes.mdx`: Record post-pull Ollama model discovery checks. - [NVIDIA#6482](NVIDIA#6482) -> `docs/about/release-notes.mdx`: Record Ollama model warm-up after daemon restart. - [NVIDIA#6486](NVIDIA#6486) -> `docs/about/release-notes.mdx`: Publish the opt-in, thread-scoped Deep Agents auto-approval boundary. - [NVIDIA#6490](NVIDIA#6490) -> `docs/about/release-notes.mdx`: Record diagnostics for custom images missing the managed runtime. - [NVIDIA#6494](NVIDIA#6494) -> `docs/inference/model-capability-audit.mdx`, `docs/about/release-notes.mdx`: Document nonempty tool-call content preservation and placeholder rejection. - [NVIDIA#6497](NVIDIA#6497) -> `docs/get-started/quickstart-langchain-deepagents-code.mdx`, `docs/about/release-notes.mdx`: Document isolated Deep Agents route-probe output. - [NVIDIA#6506](NVIDIA#6506) -> `docs/get-started/quickstart-langchain-deepagents-code.mdx`, `docs/about/release-notes.mdx`: Document observability-preserving managed route probes. - [NVIDIA#6508](NVIDIA#6508) -> `docs/about/release-notes.mdx`: Link the new extension taxonomy and SDK-readiness reference from the release summary. Release-source verification: GitHub reports all 29 cited source PRs as merged with base `main`, and every merge commit is an ancestor of `origin/main` at `17bf9a6a9688b3b1d69cf4b37d3f23110acb055e`. No source-mapping mismatches were found. ## 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) ## Quality Gates <!-- Check exactly one tests line and one docs line. Check other lines when applicable. Add every requested justification or approval reference. --> - [ ] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [x] Tests not applicable — justification: Documentation-only release-prep changes; `npm run docs` validates variants, routes, and Fern content. - [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 <!-- 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 the DCO sign-off declaration 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 — command/result or justification: Tests are not applicable to this documentation-only change set. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [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) — exited 0 with zero errors; Fern reported the existing unauthenticated redirect-check and light-mode 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) --- <!-- 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: Charan Jagwani <cjagwani@nvidia.com> --------- Signed-off-by: cjagwani <cjagwani@nvidia.com>
Summary
Hermes WebUI onboarding now treats the resolved NemoClaw dashboard port as the single public WebUI port, so
NEMOCLAW_DASHBOARD_PORT=9119or--control-ui-port 9119no longer trips a false Hermes API-port collision. The legacyNEMOCLAW_HERMES_DASHBOARD_PORTvalue is accepted only when it matches that public OpenShell forward, preventing a host/sandbox port mismatch that cannot serve the WebUI.Related Issue
Fixes #6277
Changes
#6277covering9119, matching legacy alias, and mismatched alias rejection.Type of Change
Quality Gates
NEMOCLAW_DASHBOARD_PORTas the Hermes built-in dashboard/WebUI forward; this fixes implementation drift.8642API guard, does not touch credentials/policies, and constrains Hermes WebUI public port state to the already validated OpenShell dashboard forward.Verification
Verifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpx vitest run --project cli src/lib/onboard/hermes-dashboard.test.tsfailed on the false API-port collision and mismatch cases; GREENnpx vitest run --project cli src/lib/onboard/hermes-dashboard.test.ts; neighbor coveragenpx vitest run --project cli src/lib/onboard/hermes-dashboard.test.ts src/lib/onboard/sandbox-create-launch.test.ts src/lib/onboard/sandbox-reuse.test.ts src/lib/hermes-dashboard.test.ts src/lib/agent/onboard.test.ts src/lib/onboard/dashboard-preflight-ports.test.tspassed 48 tests.npm testfor broad runtime/test-harness changes;npm run checkfor repo-wide validation/coverage changes — command/result:npm run docsbuilds without warnings (doc changes only)Signed-off-by: ogarciarevett ogarciarevett@gmail.com
Summary by CodeRabbit
Bug Fixes
Tests