hermes - 💡(How to fix) Fix Bug: dashboard chat handler leaks tui_gateway.slash_worker processes after each gateway turn

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…

hermes dashboard spawns tui_gateway.slash_worker subprocesses per chat turn (including turns routed in from gateway platforms like Telegram), but does not reap them after the response is delivered. Workers accumulate as idle processes holding session state.

Root Cause

hermes dashboard spawns tui_gateway.slash_worker subprocesses per chat turn (including turns routed in from gateway platforms like Telegram), but does not reap them after the response is delivered. Workers accumulate as idle processes holding session state.

Fix Action

Workaround

pkill -f tui_gateway.slash_worker — safe, next turn spawns fresh.

RAW_BUFFERClick to expand / collapse

Summary

hermes dashboard spawns tui_gateway.slash_worker subprocesses per chat turn (including turns routed in from gateway platforms like Telegram), but does not reap them after the response is delivered. Workers accumulate as idle processes holding session state.

Repro

  1. Run hermes dashboard with the gateway attached to a chat platform (e.g. Telegram).
  2. Send N messages through the platform. Do not open a TUI session.
  3. pgrep -af tui_gateway.slash_worker → N processes, one per turn, parented to the hermes dashboard PID, all idle.

Expected

Worker exits (or returns to a bounded pool with idle eviction) after delivering its turn's response.

Actual

Worker stays resident indefinitely. Each idle worker holds ~5MB RSS + ~80MB swap of cold session state. Linear growth with chat volume.

Suspected cause

slash_worker likely awaits a follow-up message on its IPC channel that only the TUI sends. When the dashboard chat path invokes it for a one-shot turn, nothing ever closes the channel, so the worker blocks forever.

Workaround

pkill -f tui_gateway.slash_worker — safe, next turn spawns fresh.

Related

  • #18438 (gateway RAM leak, Discord)
  • #8043 (persistent event loops in model_tools.py)
  • #15275 (slash_worker spawning duplicate mcp serve)

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