You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(onboard): announce and recover declared agent forward_ports (#5389)
## Summary
Hermes onboard declares `forward_ports: [18789, 8642]` but the dashboard
summary only printed the primary port and process recovery only
re-established the primary forward. After the OpenShell gateway
restarted during policy-preset apply, the secondary OpenAI-compatible
API forward on port 8642 was silently dropped and never restored.
## Related Issue
Fixes#5206
## Changes
- `printDashboardUi` now walks `agent.forward_ports` and emits a
labelled block per non-primary entry.
- `checkAndRecoverSandboxProcesses` now invokes a new
`ensureDeclaredAgentForwardPortsHealthy` helper in all three branches.
- Regression tests cover the print output and the recovery loop.
## 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)
## Verification
- [x] `npx prek run --all-files` passes
- [x] `npm test` passes
- [x] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [ ] Docs updated for user-facing behavior changes
- [ ] `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)
---
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Sandbox recovery now re-establishes secondary agent-declared port
forwards in addition to the primary dashboard forward.
* Dashboard/onboarding output now shows forwarded OpenAI-compatible API
and other secondary endpoint URLs with forwarding notes.
* **Tests**
* Added tests verifying secondary forwards are detected and
re-established when missing and that onboarding prints secondary forward
URLs correctly.
* **Documentation**
* Quickstart and troubleshooting guides updated to show the forwarded
OpenAI-compatible API and how to verify/recover missing forwards.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
Copy file name to clipboardExpand all lines: docs/get-started/quickstart-hermes.mdx
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -101,9 +101,9 @@ Use the provider variables from [Inference Options](../inference/inference-optio
101
101
102
102
## Connect to Hermes
103
103
104
-
When onboarding completes, NemoClaw prints the sandbox name, model, lifecycle commands, and Hermes dashboard URL.
104
+
When onboarding completes, NemoClaw prints the sandbox name, model, lifecycle commands, the Hermes dashboard URL, and the OpenAI-compatible API URL.
105
105
Hermes exposes its built-in browser dashboard on port `18789`.
106
-
NemoClaw also forwards the OpenAI-compatible API on port `8642` for local clients.
106
+
NemoClaw also forwards the OpenAI-compatible API on port `8642` for local clients, and the summary now announces both URLs.
107
107
NemoClaw builds the Hermes dashboard assets into the sandbox image, so the dashboard starts without running `npm` as the sandbox user under `/opt/hermes`.
108
108
Dashboard chat uses the prebuilt `/opt/hermes/ui-tui` bundle.
109
109
If you need to recover the Hermes dashboard manually, use `hermes dashboard --tui --skip-build` so recovery does not try to rebuild assets under root-owned install paths.
@@ -122,6 +122,10 @@ Access
122
122
Port 18789 must be forwarded before opening this URL.
Copy file name to clipboardExpand all lines: docs/reference/troubleshooting.mdx
+14Lines changed: 14 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1624,6 +1624,20 @@ Expected output:
1624
1624
Point an OpenAI-compatible client at `http://127.0.0.1:8642/v1` for chat completions.
1625
1625
For terminal use, run `nemohermes <name> connect` and then `hermes` inside the sandbox.
1626
1626
1627
+
### `docker port` shows no mapping for 8642 even though forwarding works
1628
+
1629
+
OpenShell port forwards are host-side relays managed by the OpenShell gateway process, not Docker `-p` publish mappings on the sandbox container.
1630
+
`docker port openshell-hermes-<id>` reflects only Docker-published ports, so it returns nothing for OpenShell-managed forwards even when the host bind is live.
1631
+
1632
+
Use OpenShell's own view as the supported acceptance signal:
1633
+
1634
+
```bash
1635
+
openshell forward list # shows the host bind for each forwarded port
1636
+
curl -sf http://127.0.0.1:8642/health # confirms the relayed endpoint answers
1637
+
```
1638
+
1639
+
If `openshell forward list` does not show port `8642`, run `nemohermes <name> connect --probe-only` (or `nemohermes <name> recover`) to ask the recovery path to re-establish every manifest-declared agent forward port that has gone missing.
1640
+
1627
1641
### `nemohermes` reports `Sandbox 'X' already exists as OpenClaw`
0 commit comments