fix(docker): loopback dashboard bind + shared netns for hermes-agent auth gate - #694
Open
rameshio wants to merge 1 commit into
Open
fix(docker): loopback dashboard bind + shared netns for hermes-agent auth gate#694rameshio wants to merge 1 commit into
rameshio wants to merge 1 commit into
Conversation
nousresearch/hermes-agent:latest (June 2026 hardening) refuses to bind the dashboard to a non-loopback host unless an auth provider is registered, so the stock compose setup (HERMES_DASHBOARD_HOST=0.0.0.0) now fail-closes and the agent container never becomes healthy. And with a password provider configured instead, the workspace cannot scrape the ephemeral session token from the gated dashboard root, so every dashboard-backed API 401s and chat shows 'Hermes Agent rejected the connection token'. Bind the dashboard to 127.0.0.1 (no auth gate on loopback) and run the workspace container in the agent service network namespace (network_mode: service:hermes-agent) so it can still reach the dashboard and gateway over loopback. Port 3000 moves to the agent service since a container joining another netns cannot publish ports. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
127.0.0.1instead of0.0.0.0indocker-compose.yml.hermes-workspacecontainer withnetwork_mode: 'service:hermes-agent'(shared network namespace) so it can still reach the dashboard and gateway over loopback.hermes-agentservice, since a container joining another service's network namespace cannot publish its own ports.Why
nousresearch/hermes-agent:latest(June 2026 hardening, posthermes-0daycampaign) refuses to bind the dashboard to any non-loopback host unless an auth provider is registered — there is no longer an unauthenticated public-bind option. This breaks the stock compose setup in two ways:Refusing to bind dashboard to 0.0.0.0) and never becomes healthy, sodocker compose upfails on theservice_healthydependency.fetchDashboardTokeninsrc/server/gateway-capabilities.ts). Every dashboard-backed API then 401s and the chat UI shows "Authentication required — Hermes Agent rejected the connection token", even whenAPI_SERVER_KEY/HERMES_API_TOKENmatch correctly.A loopback bind keeps the auth gate disengaged (trusted-operator model upstream intends for loopback), and the shared network namespace keeps the dashboard reachable from the workspace while making it less exposed than before — it is no longer on the compose bridge network at all.
Notes for reviewers
missing=[](sessions, skills, memory, config, jobs all available), and the auth banner is gone.127.0.0.1:3000(workspace UI) and127.0.0.1:8642(gateway);9119remains unpublished.API_SERVER_HOST: 0.0.0.0+API_SERVER_KEYauth as before; only the dashboard moves to loopback.🤖 Generated with Claude Code