Skip to content

Synchronize your data across Plex, Jellyfin, Emby, SIMKL, Trakt, MDBlist, and more. Keep your movies and shows in sync, no matter where you watch.

License

Notifications You must be signed in to change notification settings

cenodude/CrossWatch

Repository files navigation

CrossWatch

CrossWatch

CrossWatch - Screenshot 1 CrossWatch - Screenshot 2 CrossWatch - Screenshot 3 CrossWatch - Screenshot 4

Click any screenshot to view it full size.

image

Latest Release Must-read: Quick Start

At minimum, read the Best Practices before enabling two-way sync or media server to media server writes.

CrossWatch is a synchronization engine that keeps your Plex, Jellyfin, Emby, SIMKL, Trakt and MDBlist in sync.
It runs locally with a clean web UI where you link accounts, define sync pairs, run them manually or on a schedule, and review stats and history.
CrossWatch also includes its own tracker to keep your data safe with snapshots. It supports movies and shows/episodes Anime is not supported yet....sorry..

Why CrossWatch?

  • One brain for all your media syncs A single place to configure and understand everything.
  • Multi-server (Plex, Jellyfin, Emby) and multi-tracker (Trakt, SIMKL, MDBlist) in one tool.
  • Flexible sync directions Between media server. Between trackers. Or from/to media servers and trackers.
  • Simple and advanced scheduling From “run once a day” to more detailed, time-based pair schedules
  • Internal CrossWatch Tracker Keeps snapshots/backups of your Watchlist, History and Ratings from your media servers and trackers.
  • Unified, visual Watchlist across providers View all watchlist items in one place, with filter, search, bulk-remove and more.
  • Back-to-the-Future (Fallback GUID) Revives items that left your Plex library but still exist in your server database.
  • Webhooks (Plex / Jellyfin / Emby to Trakt)
  • Watcher (Plex / Emby to Trakt and/or SIMKL) Plugin-free and subscription-free.
  • Watchlist Auto-Remove Clears items from your Watchlist after a verified finish.
  • Analyzer Finds items that are stuck or inconsistent between providers.
  • Editor Inspect and adjust CrossWatch data. Add or block items. Example: tell Plex to stop sending movie X because you do not want it.
  • Player card (Webhooks and Watcher) Shows what you are currently watching in real time while Webhooks or Watcher are active.

image

- _.....and more...._

🚀 Features

  • Sync watchlists (one-/two-way)
  • Live scrobble (Plex/Jellyfin/Emby to Trakt)
  • Sync ratings (one-/two-way)
  • Sync watch history (one-/two-way)
  • Keep snapshots with CrossWatch tracker
  • Auto-remove from watchlist after finish
  • Analyzer - finds broken or missing matches/IDs
  • Exporter - CSV files for popular service
  • Now Playing card, Stats, history, live logs
  • Headless scheduled runs
  • Trackers: CrossWatch  SIMKL  Trakt  MDBList
  • Media servers: Plex  Jellyfin  Emby

⬇️ Download

  • Docker (recommended):
    docker pull ghcr.io/cenodude/crosswatch:latest
  • Prebuilt releases:
    Get the latest builds and assets here: Releases ▸

Tip: use :latest for stable, or a specific tag like :v0.2.x.


🐳 Run as Container

docker run -d   --name crosswatch   -p 8787:8787   -v /path/to/config:/config   -e TZ=Europe/Amsterdam   ghcr.io/cenodude/crosswatch:latest

or

# docker-compose.yml
services:
  crosswatch:
    image: ghcr.io/cenodude/crosswatch:latest
    container_name: crosswatch
    ports:
      - "8787:8787"          # host:container
    environment:
      - TZ=Europe/Amsterdam
    volumes:
      - /path/to/config:/config
    restart: unless-stopped

The container exposes the web UI at:
👉 http://localhost:8787

By default CONFIG_BASE will be /config inside the container.
Your config.json, state.json, statistics.json, etc. will all be stored there.


📋 Usage

  1. Open the web UI
  2. Connect at least two authentication providers, Plex, Jellyfin, Emby, SIMKL and/or TRAKT
  3. Create one or more Sync Pairs (for example: Plex to SIMKL or two-way) and/or enable Scrobble
  4. Click Synchronize to start, or enable scheduling in Settings
  5. Track stats, logs, and history from the UI

🎬 Live Scrobbling (Plex/Jellyfin/Emby to Trakt and/or SIMKL)

CrossWatch can scrobble your real-time Plex, Jellyfin, and Emby playback to Trakt, so episodes and movies you watch are instantly marked as “Watching” or “Watched” on Trakt.
Have Plex Pass / Emby Premiere? Prefer Webhook. No Pass/Premiere? Use the Watcher. Jellyfin users: use Webhook.


🔐 Security

⚠️ CrossWatch is NOT meant to be exposed directly to the public internet. During the current development stage there is no authentication built in, so treat it as a LAN/VPN-only tool.

  • Do NOT port-forward 8787 from your router or expose the web UI directly to WAN.
  • Run CrossWatch on your local network only, or access it via:
    • a VPN (WireGuard, Tailscale, etc.)
  • Anyone who can reach the web UI can change sync pairs, tokens and settings, which may:
    • delete or corrupt watch history / ratings / watchlists,
    • cause unwanted writes between servers/trackers,
    • leak information about your media libraries and accounts.

About

Synchronize your data across Plex, Jellyfin, Emby, SIMKL, Trakt, MDBlist, and more. Keep your movies and shows in sync, no matter where you watch.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages