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.
51 lines
930 B
Plaintext
51 lines
930 B
Plaintext
# Python cache
|
|
__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
*.pyd
|
|
|
|
# Backup and temporary files
|
|
*.bak
|
|
*.swp
|
|
*.swo
|
|
|
|
# Archive directory (pre-git backups, kept on disk but not tracked)
|
|
archive/
|
|
|
|
# Local environment and secrets (but keep the example templates)
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
!.env.docker.example
|
|
.claude/
|
|
CLAUDE.md
|
|
AGENTS.md
|
|
.cursorrules
|
|
.windsurfrules
|
|
.aider*
|
|
copilot-instructions.md
|
|
|
|
# Generated screenshots and transient artifacts
|
|
screenshot-*.png
|
|
full-UI.png
|
|
|
|
# Version file written by Docker/CI build — generated, never committed
|
|
api/_version.py
|
|
|
|
# OS files
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Local reference clones — never committed (except tracked design/UI-UX reference pages)
|
|
docs/*
|
|
!docs/ui-ux/
|
|
!docs/ui-ux/**
|
|
!docs/docker.md
|
|
|
|
# Local-only PR review harness: rendering drivers, sample bank, fixtures.
|
|
# Used by Claude during deep reviews; never shared in the repo.
|
|
.local-review/
|
|
graphify-out/
|
|
.graphify_cached.json
|
|
.graphify_uncached.txt
|