Files
hermes-agent/docker
unsupportedpastels c08c485305 fix(docker): supervise profile gateways outside the root s6 scandir
The image's root s6 scandir (/run/service) is watched by the PID-1
s6-svscan, so every slot in it runs under a root s6-supervise that
executes the slot's run/finish/log scripts as root. 02-reconcile-profiles
chowned that directory to hermes so per-profile gateway slots could be
registered at runtime, and 015-supervise-perms chowned the static
services' supervise/ and event/ trees to hermes. Both handed the
unprivileged hermes user control over what the root supervisor runs
and writes.

- Per-profile gateway slots move to /run/hermes-service, watched by a
  nested s6-svscan that runs as hermes (new s6-rc longrun
  profile-gateways). Gateways, their loggers and their supervisors now
  all run as hermes; the rendered run/log scripts already skip the
  privilege drop when non-root.
- 02-reconcile-profiles creates that scandir hermes-owned (refusing a
  symlink) and no longer touches /run/service.
- 015-supervise-perms keeps the static services' supervise/ trees
  root-owned and only grants group hermes read on status/lock and write
  on the control FIFO, leaving event/ as s6 creates it.
- hermes doctor probes the static services in the root scandir via a
  new s6_service_up() helper; S6_DYNAMIC_SCANDIR now points at the
  gateway scandir and S6_STATIC_SCANDIR names the root one.
- Docker integration tests, docs and the s6 skill follow the new
  gateway slot path.
2026-11-04 23:37:25 -05:00
..