Stars
Forks
Watchers
Developer links
WatchState
Instead of relying on third-party cloud trackers to keep watched history aligned across Plex, Jellyfin, and Emby, WatchState synchronizes playback state and watch progress directly between your own self-hosted media servers. Household administrators can map multiple family members across independent backend accounts using isolated user identities, configuring either one-way mirroring from a primary server or full many-to-many synchronization across every connected instance. A unified generic webhook endpoint captures play, pause, stop, and watched events from Plex, Tautulli, Jellyfin, and Emby for near-instant state propagation, while scheduled background import and export tasks reconcile any missed updates automatically. When libraries grow across multiple servers, the built-in Media Health diagnostic engine audits the database for external GUID conflicts, duplicate file references, metadata disagreements, weak matches, and missing local files, complete with exportable reports and per-record action hints. Users can also search backend metadata, inspect detailed item event logs, and export portable JSON backups of their entire watch history for safe server migrations. Running on a dedicated VPS on RepoCloud with guaranteed CPU, RAM, and SSD, full root SSH access, and a browser serial console. MIT licensed.
Benefits
- Private Multi-Server Play State Synchronization
- Keep watched episodes, movie completion statuses, and exact playback timestamps synchronized across Plex, Jellyfin, and Emby instances without sending viewing habits to external cloud services.
- Granular Multi-User Identity Mapping
- Link individual household members across different media server backends using isolated WatchState identities, each with independent import and export switches, databases, and watch history reports.
- Comprehensive Media Health Auditing
- Detect external GUID conflicts, duplicate file paths, structural metadata disagreements, and missing library records across connected servers using the centralized Media Health diagnostic report.
- Real-Time Webhooks With Scheduled Reconciliation
- Combine a single unified webhook receiver for Plex, Tautulli, Jellyfin, and Emby with scheduled background import and export tasks so playback progress stays accurate even after server downtime.
Features
- One-Way and Two-Way Sync
- Configure per-backend Import and Export toggles in the web interface to run either one-way state mirroring or full bidirectional play state synchronization across Plex, Jellyfin, and Emby.
- Unified Webhook Receiver
- Process real-time playback start, pause, stop, and mark-played webhook payloads from Plex Pass, Tautulli, Jellyfin Webhook Plugin, and Emby Server through a single endpoint.
- Path and GUID Matching
- Match movies and episodes across heterogeneous media backends using normalized local file paths via guid_path alongside IMDb, TMDB, and TVDB external metadata identifiers.
- Media Health Diagnostic Report
- Queue background database audits that flag guid_conflict, duplicate_guid, duplicate_reference, metadata_disagreement, and path_disagreement states with direct links to source backend records.
- Portable History Backups
- Generate scheduled or on-demand portable backups of every user's play state and watch progress for disaster recovery or seamless migration between media server platforms.
- Integrated Web Console
- Execute WatchState CLI diagnostic, import, export, and database maintenance commands directly inside the browser-based web console without needing container shell access.