v0.50.260 — Docker reliability overhaul (PR #1428 + UX/docs + Opus follow-up)#1429
Merged
nesquena-hermes merged 3 commits intomasterfrom May 1, 2026
Merged
v0.50.260 — Docker reliability overhaul (PR #1428 + UX/docs + Opus follow-up)#1429nesquena-hermes merged 3 commits intomasterfrom
nesquena-hermes merged 3 commits intomasterfrom
Conversation
Both docker-compose files had a UID mismatch between the agent (defaults to 10000) and webui (defaults to 1000). When containers share a volume, the webui gets Permission denied reading files written by the agent. - docker-compose.two-container.yml: add HERMES_UID/HERMES_GID (was missing entirely) - docker-compose.three-container.yml: change default from 10000 to 1000 to match webui's WANTED_UID/WANTED_GID Fixes #1399
…ompose files (#1399)
…ovements + Opus advisor fixes Combines PR #1428 (UID/GID alignment) with a broader Docker reliability pass that addresses recurring user reports about compose files not working. Constituent PR: - #1428 sunnysktsang - Align agent UID/GID with webui (fixes #1399). Two- and three-container compose files had agent at UID 10000 (image default) and webui at UID 1000 (WANTED_UID default), causing permission denied on shared hermes-home volume. All services now use ${UID:-1000}. Plus broader Docker UX overhaul: - All 3 compose files document HERMES_SKIP_CHMOD/HERMES_HOME_MODE escape hatches inline (the v0.50.254 fix wasn't surfaced for Docker users). - New .env.docker.example template covering UID/GID, paths, password, permission handling. UID/GID are uncommented with placeholder values per Opus advisor (so macOS users don't skim past). - New docs/docker.md - comprehensive guide: 5-min quickstart, failure mode table with one-line fixes, bind-mount migration, multi-container architecture diagram, macOS Docker Desktop VirtioFS note, link to community sunnysktsang/hermes-suite all-in-one image. - README Docker section rewritten - clearer quickstart, failure-mode table, link to docs/docker.md. Stale /root/.hermes references removed. Plus Opus pre-release advisor MUST-FIX: - HERMES_HOME_MODE has DIFFERENT semantics in the WebUI vs the agent image. WebUI: credential-file mode threshold (0640 allows group bits). Agent: HERMES_HOME directory mode (default 0700). 0640 on a directory has no owner-execute bit, so the agent can't traverse its own home and bricks. My initial draft recommended HERMES_HOME_MODE=0640 in agent service blocks - corrected to 0750 across all 4 surfaces (compose files, .env.docker.example, docs/docker.md). 3 regression tests pin the asymmetry. 12 regression tests total in test_v050260_docker_invariants.py. Full suite: 3627 passed, 0 failed. Nathan explicitly authorized merge with my own review + Opus only, no independent review needed.
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.
v0.50.260 Batch Release — Docker reliability overhaul
Summary
Nathan flagged Docker UX as a recurring pain point. This batch absorbs PR #1428 (the immediate fix for #1399) AND ships a broader reliability pass touching all 3 compose files, the README, a new
.env.docker.exampletemplate, and a new comprehensivedocs/docker.mdguide.Constituent PR
Broader Docker improvements (this batch)
HERMES_SKIP_CHMODandHERMES_HOME_MODEescape hatches inline (the v0.50.254 fix for Webui is overriding HERMES_HOME_MODE file permission setting #1389 wasn't surfaced for Docker users).env.docker.example— Docker-specific template with UID/GID, paths, password, and permission-handling escape hatches. UID/GID uncommented with placeholder values per Opus advisor (so macOS users don't skim past the warning)docs/docker.md— comprehensive guide covering all 3 compose files, common failure modes (with one-line fixes), bind-mount migration recipe, multi-container architecture diagram, macOS Docker Desktop file-sharing implementation note, and pointer to the community all-in-one image (caveated as third-party)docs/docker.md. Stale/root/.hermesreference removed (current agent images use/home/hermes/.hermes).gitignoreupdated — explicitly allowlist.env.docker.exampleanddocs/docker.mdso the new files actually shipPre-applied Opus advisor follow-up — MUST-FIX
Opus caught a real footgun in my initial draft:
HERMES_HOME_MODEhas DIFFERENT semantics in the WebUI vs. the agent image:0640allows group bits on.env)0700)0640on a directory has no owner-execute bit, so the agent can't traverse its own home → bricked. My initial draft recommendedHERMES_HOME_MODE=0640as the example value in agent service blocks. Fixed across all 4 surfaces:docker-compose.two-container.ymlagent block now recommends0750docker-compose.three-container.ymlagent + dashboard blocks recommend0750.env.docker.exampleadds an explicit MULTI-CONTAINER WARNINGdocs/docker.mdfailure mode Hermes Web UI — Sprints 11-14: multi-provider models, settings, sessi… #2 calls out the asymmetryOpus also flagged that the WebUI service blocks should annotate that
0640IS correct for the WebUI but NOT to copy to the agent — done.Tests
test_v050260_docker_invariants.py)12 regression tests in
tests/test_v050260_docker_invariants.py:.env.docker.exampleexists and documents critical varsdocs/docker.mdexists and references each known failure mode by issue number/root/.hermesreferences and links todocs/docker.mdHERMES_HOME_MODE=0640(Opus catch).env.docker.exampleincludes the MULTI-CONTAINER WARNINGWhy ship without independent review
Per Nathan's directive: "you have my approval. You don't need an independent review, so just use yourself and the Opus Advisor Claude Code, and then go ahead and merge those in."
The change set is large by Docker-overhaul standards but:
What's NOT in this batch
WANTED_UID(webui) vsHERMES_UID(agent) env var names — flagged as future work