Simplify: use native s6 multi-profile supervision, drop custom scripts #58

Merged
gortium merged 1 commits from fix/hermes-entrypoint-simple into master 2026-07-08 02:25:04 +00:00
Collaborator

What

Simplify the Hermes Docker setup to use the image's native s6 multi-profile supervision instead of custom entrypoint scripts.

Changes

  • compose.yml: use command: gateway run (vanilla, same as official docs). Remove HERMES_PROFILES env var — the s6 reconciler reads gateway_state.json from each profile directory and auto-starts those that were running.
  • Dockerfile: revert the start-hermes.sh COPY line added in the previous fix.
  • Scripts deleted: patch_tts_tool.py (orphaned), run-multi-gateways.sh (replaced by s6), start-hermes.sh (overengineered workaround).

Why

The official image's s6-overlay already handles per-profile gateways natively:

  • hermes profile create <name> registers an s6 service slot at /run/service/gateway-<name>/
  • hermes -p <name> gateway start/stop/restart dispatches to s6-svc
  • The boot reconciler (02-reconcile-profiles) auto-starts profiles whose gateway_state.json has desired_state: running
  • s6-supervise provides crash recovery, logging via s6-log, and state persistence

The five profiles (ashley, claire, finn, matt, paul) already exist on disk with desired_state: running — they pick up automatically on container boot.

Before vs After

Before (broken) After (fixed) Native (this PR)
bash → tini -g → entrypoint.sh → exit s6-overlay → start-hermes.sh s6-overlay → gateway run
SIGTERM crash loop Works but reinvents the wheel Clean — uses what the image already provides
Custom scripts Custom scripts Zero custom scripts
## What Simplify the Hermes Docker setup to use the image's **native s6 multi-profile supervision** instead of custom entrypoint scripts. ## Changes - **compose.yml**: use `command: gateway run` (vanilla, same as official docs). Remove `HERMES_PROFILES` env var — the s6 reconciler reads `gateway_state.json` from each profile directory and auto-starts those that were running. - **Dockerfile**: revert the `start-hermes.sh` COPY line added in the previous fix. - **Scripts deleted**: `patch_tts_tool.py` (orphaned), `run-multi-gateways.sh` (replaced by s6), `start-hermes.sh` (overengineered workaround). ## Why The official image's s6-overlay already handles per-profile gateways natively: - `hermes profile create <name>` registers an s6 service slot at `/run/service/gateway-<name>/` - `hermes -p <name> gateway start/stop/restart` dispatches to `s6-svc` - The boot reconciler (`02-reconcile-profiles`) auto-starts profiles whose `gateway_state.json` has `desired_state: running` - s6-supervise provides crash recovery, logging via s6-log, and state persistence The five profiles (ashley, claire, finn, matt, paul) already exist on disk with `desired_state: running` — they pick up automatically on container boot. ## Before vs After | Before (broken) | After (fixed) | Native (this PR) | |---|---|---| | `bash → tini -g → entrypoint.sh → exit` | `s6-overlay → start-hermes.sh` | `s6-overlay → gateway run` | | SIGTERM crash loop | Works but reinvents the wheel | Clean — uses what the image already provides | | Custom scripts | Custom scripts | Zero custom scripts |
Hermes added 1 commit 2026-07-08 02:21:58 +00:00
Simplify: drop custom scripts, use native s6 multi-profile supervision
Some checks failed
Build Hermes agent / build (pull_request) Has been cancelled
Build ollama (gfx906) / build (pull_request) Has been cancelled
3f82c9d321
- Remove patch_tts_tool.py (orphaned)
- Remove run-multi-gateways.sh (replaced by s6 native profile supervision)
- Remove start-hermes.sh (overengineered — the image does this natively)
- compose.yml: command: gateway run, drop HERMES_PROFILES env var
- Dockerfile: revert start-hermes.sh COPY addition

Per-profile gateways are now managed by s6-overlay natively:
profiles with desired_state=running in gateway_state.json are
auto-started by the s6 reconciler on boot.
gortium merged commit 53fcd59dff into master 2026-07-08 02:25:04 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gortium/compose#58
No description provided.