Agent skill · software engineering · nousresearch

hermes-s6-container-supervision

Modify or debug s6 services in the Hermes Docker image.

Why this skill is useful

Provides specific commands and modifications for managing s6 services in the Hermes Docker image that the AI wouldn't reliably generate on its own.

What it needs

Requires docker installed locally. About 7k tokens when loaded. Last updated 2026-08-07. 226,679 stars on the source repository.

What this skill does

Hermes s6-overlay Container Supervision When to use this skill Load this skill when you're working on: Adding or removing a static service in the Hermes Docker image (something that should be supervised at every container start, like the dashboard) Diagnosing why a per-profile gateway isn't starting, restarting, or surviving docker restart Understanding why the container's CMD is /opt/hermes/docker/main-wrapper.sh and how leading-dash args reach the user's program Modifying cont-init.d boot scripts (UID remap, volume seeding, profile reconciliation) Changing the rendered run-script for per-profile gateways (Phase 4) If you're just running the Hermes Agent and want to use Docker, see website/docs/user-guide/docker.md instead. Architecture at a glance Key files Path Role --- --- Dockerfile s6-overlay install + cont-init.d wiring + ENTRYPOINT ["/opt/hermes/docker/entrypoint-dispatch.sh"] docker/entrypoint-dispatch.sh PID-1 dispatcher: exec's /init + main-wrapper when the image owns PID 1; on wrapped runtimes (Fly Machines, docker run --init) falls back to stage2-hook + main-wrapper directly, restoring the s6 helper PATH first (#38349). docker/stage2-hook.sh The "old entrypoint logic" — UID remap, chown, seed, skills sync. Runs as cont-init.d/01-hermes-setup. docker/cont-init.d/02-reconcile-profiles Calls hermescli.containerboot on every boot to restore profile gateway slots from the persistent volume. docker/main-wrapper.sh The container's CMD. Routes user args, drops to hermes via s6-setuidgid, exec's the chosen program. docker/s6-rc.d/main-hermes/run No-op sleep infinity — slot exists so the s6-rc user bundle is valid; main hermes runs as the CMD, not as a supervised service. docker/s6-rc.d/dashboard/run Conditional service — exec sleep infinity unless HERMESDASHBOARD is truthy. docker/entrypoint.sh Back-compat shim that execs the stage2 hook. External scripts that hard-coded the old entrypoint path still work. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills nousresearch/hermes-s6-container-supervision

View the source on GitHub

Browse the @skills marketplace