hermes-s6-container-supervision

Modify and debug s6-overlay supervised services in the Hermes Docker image.

Updated Aug 22, 2026
One-click install
npx skills add https://github.com/vivekgoquest/hermes-agent-stable --skill hermes-s6-container-supervision-vivekgoquest
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hermes-s6-container-supervision
Source: https://github.com/vivekgoquest/hermes-agent-stable/tree/main/optional-skills/devops/hermes-s6-container-supervision
Command: npx skills add https://github.com/vivekgoquest/hermes-agent-stable --skill hermes-s6-container-supervision-vivekgoquest

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Working on the Hermes Docker image's s6-overlay supervision stack is error-prone: cont-init.d boot scripts, per-profile gateway service slots on tmpfs, and the CMD-as-main-program architecture have non-obvious mechanics that cause confusing failures like exit code 143, crash-looping gateways, and permission errors. ## Core Features & Use Cases - Service lifecycle management: Add static s6-rc.d services, register or unregister per-profile gateway slots under /run/service, and control them with s6-svc commands. - Boot reconciliation: Understand and modify the cont-init.d pipeline (UID remap, volume seeding, profile reconciliation via hermes_cli.container_boot) that restores gateway state across container restarts. - Troubleshooting recipes: Diagnose crash loops, root-owned profile directories, missing SOUL.md markers, and the s6-overlay halt exit-code limitation using concrete docker exec and s6-svstat commands. - Use Case: A per-profile gateway fails to survive docker restart. Use this Skill to inspect /run/service/gateway-<name> with s6-svstat, check container-boot.log for the reconciler action, and fix the underlying profile configuration. ## Quick Start Ask the agent to diagnose why the gateway for profile 'coder' is not starting in the Hermes Docker container and show the relevant s6 service state.

Frequently Asked Questions about hermes-s6-container-supervision

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add a new static s6 service to a Docker image?▼

Create docker/s6-rc.d/<name>/type containing longrun and a run script using #!/command/with-contenv sh, drop privileges with s6-setuidgid hermes, add an empty dependencies.d/base file, and register it in user/contents.d. The Dockerfile's COPY of docker/s6-rc.d picks it up automatically.

How do I check why an s6 service keeps restarting in a container?▼

Run docker exec <c> /command/s6-svstat /run/service/gateway-<name> using the absolute path since /command is not on the docker exec PATH. A status of down with an exitcode and 'want up' indicates a crash loop, often caused by missing model or auth configuration in the profile.

Why does my s6-overlay container always exit with code 143?▼

s6-overlay's halt command does not propagate the exit code written to the container-results file, so containers exit 143 (SIGTERM) regardless. To get a real exit code, let the CMD exit normally instead of calling halt or s6-svscanctl -t from a finish script.

Why does s6-svstat say s6-supervise not running after docker restart?▼

The /run/service directory is on tmpfs and is wiped on container restart. The cont-init.d reconciler recreates service slots at boot, so either it has not finished yet or it failed; check docker logs for the 02-reconcile-profiles output.

Can docker exec run s6 commands directly in an s6-overlay container?▼

No, /command is on PATH only for processes spawned by the supervision tree, so docker exec <c> s6-svstat fails with command not found. Always use the absolute path /command/s6-svstat or /command/s6-svc when running s6 tools via docker exec.