# ADR 0009 — SSE over WebSocket for the event stream Status: accepted (2026-07-07) · Plan: rev 3, R3-14 ## Context Live updates (signals, executions, approvals) push server→client only. Rev 2 specified WebSocket. ## Decision Server-Sent Events at GET /api/v1/events/stream: plain HTTP (proxies through Caddy without upgrade handling), native browser EventSource with auto-reconnect, Last-Event-ID resume backed by the events table. Bounded per-subscriber buffers with drop-oldest; heartbeat comments every 15s. Delivery is best-effort — GET /events backfills. Transactional emission + post-commit LISTEN/NOTIFY feed the stream. ## Consequences - No bidirectional channel; if one is ever needed (interactive terminals), add WebSocket alongside — this ADR covers the event feed only.