{"repo":"NousResearch/hermes-agent","public_id":"78872","display_label":"EMFILE errors from orphaned backend processes accumulating","summary":"A bug where orphaned local backend processes pile up and exhaust file descriptors, causing EMFILE errors and broken UI state. Two related fixes address this via file descriptor limits, orphan process cleanup, and bounded resource pools.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":83406,"merged_at":"2026-08-11T00:02:56+00:00"},"resolution":{"state":"resolved","by":"pr-83406"},"freshness":{"state":"verified","last_verified_at":"2026-08-11T00:02:56+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":61349,"pr_number":83406,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-11T00:02:56+00:00"},{"issue_number":75269,"pr_number":83406,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-11T00:02:56+00:00"},{"issue_number":77276,"pr_number":83406,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-11T00:02:56+00:00"},{"issue_number":77573,"pr_number":83406,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-11T00:02:56+00:00"},{"issue_number":78872,"pr_number":83406,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-08-11T00:02:56+00:00"},{"issue_number":81547,"pr_number":83406,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-11T00:02:56+00:00"}],"members":[{"kind":"issue","number":78872,"title":"Desktop: orphan local hermes serve backends pile up → EMFILE → empty tabs/sidebar","url":null,"state":"closed"},{"kind":"pr","number":78873,"title":"fix(runtime,desktop,gateway): EMFILE hardening — nofile floor, orphan serve reap, launchd plist limit persistence","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#83406","number":83406},{"kind":"pr","value":"#76700","number":76700},{"kind":"pr","value":"#77587","number":77587},{"kind":"pr","value":"#73066","number":73066},{"kind":"pr","value":"#78873","number":78873},{"kind":"pr","value":"#78312","number":78312}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":83406,"title":"fix(state,desktop,runtime): EMFILE cascade — bounded WAL read pool, orphan serve reap, nofile floor","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/electron/backend-child.ts","apps/desktop/electron/main.ts","apps/desktop/electron/windows-child-options.test.ts","cli-config.yaml.example","contributors/emails/XiaoZAZA@users.noreply.github.com","contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","gateway/run.py","hermes_cli/config_defaults.py","hermes_cli/dashboard_procs.py","hermes_cli/gateway.py","hermes_cli/main.py","hermes_cli/resource_limits.py","hermes_cli/web_server.py","hermes_state.py","tests/hermes_cli/test_dashboard_admin_endpoints.py","tests/hermes_cli/test_gateway_service.py","tests/hermes_cli/test_orphan_desktop_serve_reap.py","tests/test_resource_limits.py","tests/test_session_db_read_conn_pool.py","tests/test_session_db_read_path_split.py","website/docs/user-guide/configuration.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}