hermes-agent/gateway
Teknium c9df4bc094
fix(gateway): default restart_drain_timeout to 0 to kill systemd crash loop (#54066)
A restart now interrupts in-flight agents immediately rather than holding
the gateway open for a grace window. The previous 180s default coupled two
independently-set timers: the gateway's own drain timer and systemd's
TimeoutStopSec. On a stale unit where TimeoutStopSec < drain, systemd
SIGKILLed the gateway mid-cleanup, leaving a stale lock that made the next
startup exit immediately ('already running') — an infinite crash loop under
Restart=on-failure (#31981).

Setting drain to 0 makes the mismatch structurally impossible: with drain 0
the generated unit gets TimeoutStopSec=90 against a near-instant drain, so
systemd never kills mid-cleanup. Contract: restart the gateway, in-flight
work stops. A grace window large enough to 'save' a long agent turn would
have to outlast an unbounded task, which is impossible.

Also fixes the stale-unit warning's suggested command
(hermes gateway service install --replace -> hermes gateway install --force);
the former subcommand does not exist.

Closes #31981
2026-06-28 01:14:34 -07:00
..
assets
builtin_hooks
platforms fix(gateway): deliver profile-scoped cache media on symlinked HERMES_HOME (#54060) 2026-06-28 01:07:28 -07:00
relay feat(relay): multi-platform-per-agent — list identity, provision-loop, N-hello, per-frame egress (Phase 1.5) (#52830) 2026-06-26 17:32:46 +10:00
__init__.py
authz_mixin.py fix(telegram): apply bot auth policy to Telegram sources 2026-06-28 00:57:03 -07:00
channel_directory.py
code_skew.py
config.py fix(gateway): make bg-process reset TTL configurable + surface session-scoped processes 2026-06-27 20:45:43 -07:00
delivery.py
display_config.py
drain_control.py fix(gateway): stamp drain marker with instantiation epoch so a durable-volume restart clears it (NS-570) 2026-06-26 18:59:41 +05:30
hooks.py
kanban_watchers.py
memory_monitor.py
message_timestamps.py
mirror.py fix(cron): mirror continuable cron as a labelled user turn (alternation-safe) 2026-06-24 20:27:05 -07:00
pairing.py
platform_registry.py
response_filters.py
restart.py
rich_sent_store.py
run.py fix(gateway): default restart_drain_timeout to 0 to kill systemd crash loop (#54066) 2026-06-28 01:14:34 -07:00
runtime_footer.py
scale_to_zero.py
session.py fix: stale background processes no longer permanently block session reset 2026-06-27 20:45:43 -07:00
session_context.py
shutdown_forensics.py
slash_access.py
slash_commands.py fix(gateway): clear stale base_url on model switches 2026-06-27 21:23:25 -07:00
status.py fix(gateway): namespace --replace takeover marker by HERMES_HOME to stop cross-profile flap (#29092) 2026-06-27 19:43:02 -07:00
sticker_cache.py
stream_consumer.py
stream_dispatch.py
stream_events.py
whatsapp_identity.py