Merge pull request #6977 from nesquena/release/stage-6968-1786605449
Release: multi-container Docker agent API reachability (#6968)
This commit is contained in:
3 files changed
+10
No files matched your search
@@ -5,6 +5,8 @@
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Multi-container Docker deployments can reach the agent API again.** In the two- and three-container Compose topologies, the agent's gateway API bound to loopback only, so the WebUI (and dashboard) containers — separate hosts on the Docker network — couldn't reach `http://hermes-agent:8642` even with `HERMES_API_URL` and `API_SERVER_KEY` set correctly, breaking cron/Tasks and gateway-backed features. The agent service now sets `API_SERVER_HOST=0.0.0.0` so it's reachable across the Compose network; the host port publish stays `127.0.0.1`-only, so this does not expose the API beyond the Docker network and host loopback. Thanks @bragov4ik. (#6968)
|
||||
|
||||
- **Two WebUI sessions with the same auto-generated title no longer leave the second one blank.** Follow-up to the `state.db` title sync: hermes-agent enforces a uniqueness rule on session titles, so when two sessions independently generated a byte-identical auto-title, the second sync raised (and silently swallowed) a collision error and left that session untitled in `hermes sessions list`. The sync now catches the collision, derives a de-duplicated variant via the existing lineage helper (`"My Session"` → `"My Session #2"`), and retries — and because the retry goes through the same provenance guard, a title you set manually is still never overwritten. Thanks @webtecnica. (#6964)
|
||||
- **Custom-provider models keep their exact identity across catalog refreshes.** When a session used a model served through a custom provider whose upstream id contains a namespace (e.g. `z-ai/glm-5.2` under a `tokenrouter` custom endpoint), a catalog refresh could mis-resolve the picker selection — matching a *different* model whose bare suffix collided, or (in an interim fix) fabricating a new bare-id option instead of re-selecting the real one. Model resolution now matches the exact routed id first, and only falls back to a provider-hinted bare-id repair (preserving the older #6195 behavior for legacy sessions that stored just the suffix) when there is exactly one unambiguous candidate — otherwise it declines to guess. The resolved value is always an existing dropdown option, so re-renders no longer inject duplicates or lose the selection. Thanks @josephcy95. (#6944)
|
||||
- **WebUI no longer crashes a send when running against an older hermes-agent.** The streaming path passed `persist_user_timestamp=` to `agent.run_conversation()` unconditionally, so a WebUI paired with an older agent whose `run_conversation()` predates that keyword raised `TypeError: unexpected keyword argument` and the message failed. The three call sites now check the callable's signature first (via a small `_supports_kwarg` introspection helper) and only pass the timestamp when the agent accepts it — the same defensive pattern already used for `moa_config`. Modern agents are unaffected (the timestamp is still passed with the identical value); older agents degrade gracefully instead of erroring. Thanks @harsh2hell. (#6935)
|
||||
|
||||
@@ -60,6 +60,10 @@ services:
|
||||
# The agent's container detection (/.dockerenv) already auto-skips
|
||||
# credential chmod inside Docker, so HERMES_SKIP_CHMOD is redundant here.
|
||||
# - HERMES_HOME_MODE=0750
|
||||
# Bind to 0.0.0.0 so that other services can reach the agent's api.
|
||||
# We map the service to 127.0.0.1 with docker, so it won't be reachable
|
||||
# outside the host
|
||||
- API_SERVER_HOST=0.0.0.0
|
||||
restart: unless-stopped
|
||||
deploy:
|
||||
resources:
|
||||
|
||||
@@ -76,6 +76,10 @@ services:
|
||||
# The agent's container detection (/.dockerenv) already auto-skips
|
||||
# credential chmod inside Docker, so HERMES_SKIP_CHMOD is redundant here.
|
||||
# - HERMES_HOME_MODE=0750
|
||||
# Bind to 0.0.0.0 so that other services can reach the agent's api.
|
||||
# We map the service to 127.0.0.1 with docker, so it won't be reachable
|
||||
# outside the host
|
||||
- API_SERVER_HOST=0.0.0.0
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- hermes-net
|
||||
|
||||
Reference in new issue
Block a user