finds.dev← search

// the find

pion/rtwatch

★ 541 · Go · MIT · updated Jun 2026

Watch videos with friends using WebRTC, let the server do the pausing and seeking.

rtwatch uses Pion WebRTC and GStreamer to stream a single video file to multiple viewers simultaneously, with server-controlled playback state — pause/seek affects everyone. It's a proof-of-concept for synchronized co-watching where the server is the only player; clients just receive frames.

Server-side state model is genuinely clever — since only the current frame is pushed over WebRTC, viewers can't skip ahead or cache the file locally, which is useful for DRM-adjacent scenarios. GStreamer's uridecodebin means it handles a wide range of container formats and remote URIs out of the box without you writing demuxing logic. The entire server is a single main.go, so the architecture is easy to audit. Pion is a solid, well-maintained WebRTC stack in Go.

Single video file per server instance — there's no concept of rooms, playlists, or multiple concurrent streams. You'd have to run separate processes per session, which the project offers zero tooling for. GStreamer as a cgo dependency is a real deployment pain: the Docker path breaks on macOS due to host networking restrictions, and the Windows setup requires MinGW64 with manual PATH surgery. No authentication whatsoever — anyone who hits port 8080 can watch and control playback. The project is fundamentally a demo; there's no production path documented for multi-room, auth, or scaling.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →