OpenWatchParty: Synchronized Watch Parties for Jellyfin
What is OpenWatchParty? OpenWatchParty is a Jellyfin plugin that enables synchronized media playback across multiple clients. Watch movies and shows together with friends, no matter where they are. Unlike Jellyfin’s built-in SyncPlay, OpenWatchParty uses a dedicated external session server, providing more reliable synchronization and better latency handling. Architecture The system consists of three components: Component Technology Role Jellyfin Plugin C# Delivers client JavaScript and configuration UI Session Server Rust Manages rooms, relays sync messages via WebSocket Web Client JavaScript Embedded in Jellyfin UI, coordinates playback flowchart LR A[Client A] <-->|WebSocket| S[Session Server<br/>Rust] B[Client B] <-->|WebSocket| S C[Client C] <-->|WebSocket| S Features Real-time Synchronization: Playback stays in sync across all participants Room-based Management: Create and join watch party rooms Host Control: The party creator controls playback (play, pause, seek) Latency Monitoring: RTT (Round-Trip Time) measurement and display Drift Correction: Automatic playback rate adjustment to maintain sync HLS Support: Works with transcoded content via HTTP Live Streaming JWT Authentication: Secure user identity verification Installation 1. Deploy the Session Server docker run -d \ -p 3000:3000 \ -e ALLOWED_ORIGINS=https://your-jellyfin-domain.com \ ghcr.io/mhbxyz/openwatchparty-session-server:latest 2. Add the Plugin Repository In Jellyfin Dashboard: ...