hermes - 💡(How to fix) Fix [Bug] Gateway repeatedly restarts with signal=UNKNOWN under s6-overlay on Docker 28.5.2

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

Root Cause Hypothesis

Fix Action

Workaround

Setting HERMES_GATEWAY_NO_SUPERVISE=1 in /opt/data/.env bypasses s6 supervision and restores stable operation, but removes the auto-restart-on-crash protection.

Code Example

s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
→ gateway is now running under s6 supervision (auto-restart on crash,
  dashboard supervised alongside if HERMES_DASHBOARD is set).
  This is the recommended setup for the s6 container image —
  the gateway will keep running even if it crashes.
  Use `--no-supervise` (or HERMES_GATEWAY_NO_SUPERVISE=1) to opt out
  and get the pre-s6 foreground behavior instead.
┌─────────────────────────────────────────────────────────┐
│           ⚕ Hermes Gateway Starting...├─────────────────────────────────────────────────────────┤
Messaging platforms + cron scheduler                   │
Press Ctrl+C to stop                                   │
└─────────────────────────────────────────────────────────┘

WARNING gateway.run: Shutdown context: signal=UNKNOWN under_systemd=no parent_pid=115 parent_name=s6-supervise loadavg_1m=1.93 parent_cmdline="s6-supervise gateway-default"
┌─────────────────────────────────────────────────────────┐
│           ⚕ Hermes Gateway Starting...├─────────────────────────────────────────────────────────┤
Messaging platforms + cron scheduler                   │
Press Ctrl+C to stop                                   │
└─────────────────────────────────────────────────────────┘

WARNING gateway.run: Shutdown context: signal=UNKNOWN under_systemd=no parent_pid=115 parent_name=s6-supervise loadavg_1m=1.64 parent_cmdline="s6-supervise gateway-default"
RAW_BUFFERClick to expand / collapse

Bug Description

After upgrading from v0.14.x to v0.15.0/v0.15.1/v0.15.2, the gateway enters a restart loop under s6-overlay supervision.

Downgrade to v0.14.0 resolves the issue completely.

Reproduction Steps

  1. Pull latest hermes-agent Docker image (tested on v0.15.0, v0.15.1, v0.15.2)
  2. Run container on Docker 28.5.2 (fnNAS / Linux 6.18.18-trim)
  3. Gateway starts, but enters a restart loop

Observed Behavior

Logs repeat indefinitely:

s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
→ gateway is now running under s6 supervision (auto-restart on crash,
  dashboard supervised alongside if HERMES_DASHBOARD is set).
  This is the recommended setup for the s6 container image —
  the gateway will keep running even if it crashes.
  Use `--no-supervise` (or HERMES_GATEWAY_NO_SUPERVISE=1) to opt out
  and get the pre-s6 foreground behavior instead.
┌─────────────────────────────────────────────────────────┐
│           ⚕ Hermes Gateway Starting...                 │
├─────────────────────────────────────────────────────────┤
│  Messaging platforms + cron scheduler                   │
│  Press Ctrl+C to stop                                   │
└─────────────────────────────────────────────────────────┘

WARNING gateway.run: Shutdown context: signal=UNKNOWN under_systemd=no parent_pid=115 parent_name=s6-supervise loadavg_1m=1.93 parent_cmdline="s6-supervise gateway-default"
┌─────────────────────────────────────────────────────────┐
│           ⚕ Hermes Gateway Starting...                 │
├─────────────────────────────────────────────────────────┤
│  Messaging platforms + cron scheduler                   │
│  Press Ctrl+C to stop                                   │
└─────────────────────────────────────────────────────────┘

WARNING gateway.run: Shutdown context: signal=UNKNOWN under_systemd=no parent_pid=115 parent_name=s6-supervise loadavg_1m=1.64 parent_cmdline="s6-supervise gateway-default"

The signal=UNKNOWN is the key symptom. The gateway shutdown handler cannot identify the signal sent by s6-overlay, causing an unclean exit → s6 detects the exit as a crash → s6 restarts the gateway → repeat.

Environment

  • Host OS: fnNAS (Linux 6.18.18-trim)
  • Docker version: 28.5.2 (containerd 2.x as default runtime)
  • Hermes version tested: v0.15.0, v0.15.1, v0.15.2
  • Hermes version working: v0.14.x
  • Container image: NousResearch/hermes-agent (s6-overlay based)

Workaround

Setting HERMES_GATEWAY_NO_SUPERVISE=1 in /opt/data/.env bypasses s6 supervision and restores stable operation, but removes the auto-restart-on-crash protection.

Root Cause Hypothesis

Docker 28.5.2 uses containerd 2.x as the default runtime, which changed how SIGTERM and other signals are delivered to containers. The s6-overlay v3.2.3.0 shipped in hermes-agent v0.15.0 does not correctly handle this new signal delivery mechanism — the gateway receives signal=UNKNOWN instead of a recognized signal (SIGTERM/SIGINT/SIGQUIT), causing an incorrect shutdown path.

Suggested Fixes

  1. Investigate s6-overlay signal handling with Docker containerd 2.x runtime
  2. Consider pinning a compatible s6-overlay version or patching the signal handling
  3. Document HERMES_GATEWAY_NO_SUPERVISE=1 as a known workaround for Docker 28.5+ users

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix [Bug] Gateway repeatedly restarts with signal=UNKNOWN under s6-overlay on Docker 28.5.2