Stream Bridge First
Phase 1 focuses on a single bridge path only: RTSP Input → WebSocket-FLV Output, instead of expanding into many protocols too early.
Phase 1 focuses on RTSP Input → WebSocket-FLV Output, with stability-first priorities around lifecycle correctness, restart/recovery behavior, resource cleanup, and runtime observability.
Phase 1 focuses on a single bridge path only: RTSP Input → WebSocket-FLV Output, instead of expanding into many protocols too early.
Includes an automatic restart skeleton for unexpected FFmpeg exits, idle/no-data recovery, and max restart protection.
WebSocket disconnect triggers client cleanup, idle session stop, and removal of listener bindings to avoid leaked runtime state.
/healthz is more than a liveness check. It exposes active sessions, sweep status, runtime information, and session snapshots.
Built on Turborepo + pnpm workspace + TypeScript, with structure reserved for future shared upstream and multi-bridge evolution.
Phase 1 intentionally excludes shared upstream, auth, frontend app, database, and k8s to keep the backend bridge path stable first.