{"repo":"NousResearch/hermes-agent","public_id":"19914","display_label":"Dashboard PTY WebSocket handshake and streaming fixes","summary":"Multiple bugs and fixes related to the dashboard's /api/pty WebSocket endpoint, covering handshake timeouts, empty responses, event loop blocking, and loopback connectivity for the PTY sidecar. The work spans FastAPI compatibility, in-container networking, and async offloading of PTY operations.","subsystem":"dashboard","counts":{"members":8,"open_issues":0,"open_issues_distinct":0,"open_prs":1,"closed_issues":3,"merged_prs":0,"attempt_prs":5},"landed_fix":null,"resolution":{"state":"unresolved","by":null},"freshness":{"state":"never_verified","last_verified_at":null,"is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.20428571428571426},"fix_edges":[],"members":[{"kind":"issue","number":19914,"title":"Dashboard TUI WebSocket handshake hangs on FastAPI 0.136 — /api/pty times out","url":null,"state":"closed"},{"kind":"issue","number":21948,"title":"Dashboard Chat stuck: /api/pty websocket handshake/connects but never streams frames","url":null,"state":"closed"},{"kind":"issue","number":22864,"title":"Dashboard /chat PTY WebSocket can time out before HTTP 101 response flushes","url":null,"state":"closed"},{"kind":"pr","number":19938,"title":"fix(tui): accept WebSocket handshake before close to fix FastAPI 0.136 hang on /api/pty","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":19943,"title":"fix(cli): run dashboard PTY spawn off the event loop","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#19938","number":19938}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":21980,"title":"fix(dashboard): connect PTY sidecar via loopback","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#21988","number":21988}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":21988,"title":"fix(dashboard): connect PTY sidecar via loopback","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"merged":false},{"kind":"pr","number":22873,"title":"fix(dashboard): yield event loop after WebSocket accept in pty_ws handler","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"d06104a9ee163e6369d3870f092de875b2f2ab0c","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true}],"trust":{"default_tier":"verified","includes_suggested":false}}