Deploy Now

SaaS Alternative

Trakt TV Time Simkl

Stars

1,600

Forks

29

Watchers

7

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.

WatchState
WatchState
WatchState
WatchState
WatchState

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.

Apps Similar to WatchState