{"repo":"NousResearch/hermes-agent","public_id":"25016","display_label":"LSP idle subprocess reaping and memory leak","summary":"These issues and pull requests concern LSP language-server processes that are never terminated when idle, causing unbounded memory accumulation in long-running sessions. The work involves adding or enforcing an idle timeout and background reaper to shut down inactive language-server subprocesses.","subsystem":"agent/lsp","counts":{"members":17,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":4,"merged_prs":1,"attempt_prs":12},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":74058},"resolution":{"state":"partially_resolved","by":"pr-74058"},"freshness":{"state":"verified","last_verified_at":"2026-07-29T11:41:31+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.1555882352941176},"fix_edges":[{"issue_number":25016,"pr_number":74058,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":36681,"pr_number":74058,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":47314,"pr_number":74058,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":25016,"title":"lsp: idle subprocesses are never reaped — long-lived gateways accumulate ~200 MB per server forever","url":null,"state":"closed"},{"kind":"issue","number":36681,"title":"LSP language-server processes accumulate indefinitely in long-running gateways (missing idle reaper)","url":null,"state":"closed"},{"kind":"issue","number":38365,"title":"LSP idle timeout is declared but not enforced, leaving TypeScript tsserver processes alive","url":null,"state":"closed"},{"kind":"issue","number":47314,"title":"[Feature]: Add idle timeout for LSP processes to reduce memory footprint","url":null,"state":"closed"},{"kind":"pr","number":25021,"title":"fix(lsp): add idle-subprocess reaper to reclaim memory during long sessions","url":null,"state":"closed","close_reason":{"category":"implemented_elsewhere","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":25109,"title":"fix: reap idle LSP subprocesses to stop memory leak","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":36684,"title":"Fix LSP idle reaper: add background task to reap idle language-server clients","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#64141","number":64141},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":36892,"title":"fix(lsp): reap idle language-server clients","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":47332,"title":"feat(lsp): add idle timeout to shut down inactive LSP clients","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":52751,"title":"fix(lsp): add idle client reaper to prevent memory leak","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":53430,"title":"fix(lsp): reap idle language servers (DEFAULT_IDLE_TIMEOUT was never enforced)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#36684","number":36684},{"kind":"pr","value":"#36684","number":36684},{"kind":"pr","value":"#36681","number":36681},{"kind":"pr","value":"#25016","number":25016},{"kind":"pr","value":"#52751","number":52751},{"kind":"pr","value":"#36684","number":36684}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":62995,"title":"fix(lsp): reap idle servers and terminate process groups","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":64980,"title":"fix(lsp): bound language-server lifecycle safely","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#25016","number":25016},{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#64141","number":64141},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":68091,"title":"fix: reap idle LSP clients","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#74058","number":74058},{"kind":"pr","value":"#25016","number":25016}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":73057,"title":"fix(lsp): add idle subprocess reaper (#25016)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#36684","number":36684},{"kind":"pr","value":"#25016","number":25016},{"kind":"pr","value":"#36684","number":36684}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":73794,"title":"fix(lsp): add idle subprocess reaper to reclaim memory (#25016)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#36684","number":36684},{"kind":"pr","value":"#25016","number":25016},{"kind":"pr","value":"#36684","number":36684}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":74058,"title":"fix(lsp): reap idle language servers (salvage #64141, closes #25016)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/lsp/eventlog.py","agent/lsp/manager.py","contributors/emails/[redacted:email]","hermes_cli/config.py","tests/agent/lsp/test_service.py","website/docs/user-guide/features/lsp.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}