RUSEON Core vs go2rtc
go2rtc is a lightweight streaming gateway written in Go and Python, widely adopted in the Home Assistant and smart home automation communities for camera stream restreaming.
While go2rtc is an excellent bridge for home automation, RUSEON Core is purpose-built for industrial video surveillance, high camera density (600+ streams), and resilient 24/7 continuous recording.
1. Key Architectural Differences
1. High-Density Multi-Camera Scaling (600+ Streams)
- go2rtc: Primarily optimized for residential setups (5–30 cameras). Lacks per-stream buffer memory limits and worker pool isolation, causing performance degradation as camera count grows beyond 50–100 streams.
- RUSEON Core: Built on an isolated per-stream RingBuffer architecture. Benchmarked with 600 simultaneous 30 FPS cameras (1.34 Gbps total ingest) with zero frame drops, consuming only 471 MB RSS memory and ~3.6 CPU cores on a 12-core server.
2. Built-in Continuous fMP4 Archiver vs Home Assistant Add-on
- go2rtc: Does not provide an integrated, crash-resilient 24/7 recording engine or direct Linux I/O management. Requires external integrations (such as Frigate or Home Assistant recorders).
- RUSEON Core: Features an integrated Linux Direct I/O fMP4 Archiver using
sync_file_rangeandPOSIX_FADV_DONTNEED, with hourly rotation, power outage self-recovery, and instant timeline scrubbing without duplicate HLS disk files.
3. WebRTC Kernel Egress: Adaptive sendmmsg Batching
- go2rtc: Employs standard UDP writes for WebRTC tracks.
- RUSEON Core: Uses
BatchingUDPMuxConnon Linux to batch up to 32 RTP packets or flush on frame boundaries ($M=1$), reducing kernel syscall overhead by 85–90%.
2. Comparison Summary Table
| Feature | RUSEON Core | go2rtc |
|---|---|---|
| Target Scale | High-Density Commercial (50 – 600+ Cams) | Smart Home / Residential (5 – 30 Cams) |
| Ingest Protocols | RTSP (H.264 / H.265) | RTSP, WebRTC, HomeKit, MSE |
| 24/7 fMP4 Archiver | ✅ Built-in Direct I/O | ❌ None (Requires external recorder) |
| Linux Page Cache Protection | ✅ POSIX_FADV_DONTNEED | ❌ None |
| WebRTC UDP Batching | ✅ sendmmsg (32 pkts / M=1) | ❌ Standard socket writes |
| State Store | ✅ BadgerDB (ACID LSM-tree) | ❌ Static YAML |
| User Interface | ✅ React 19 Glassmorphism | ⚠️ Basic HTML status page |