Click any screenshot to view it full size.
CrossWatch/CW is a synchronization engine that keeps your Plex, Jellyfin, Emby, SIMKL, Trakt, AniList, MDBList and Tautulli in sync. It runs locally with a web UI where you link accounts, define sync pairs, run them manually or on a schedule, and review stats and history. CW also includes its own tracker to keep your data safe with snapshots.
Supported: Movies and TV shows / episodes / Seasons
Supported: Plex, Emby, Jellyfin, MDBList, Tautulli, AniList, Trakt, SIMKL and CW internal tracker
NOT supported: Multi-users/servers
CW in a nutshell:
- 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, AniList) 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 CW Tracker Keeps snapshots/backups from your media servers and trackers.
- Unified Watchlist across providers View all watchlist items in one place.
- Back-to-the-Future (Fallback GUID) Revives items that left your Plex library but still exist in your server database.
- Watcher (Plex / Emby / Jellyfin to Trakt/SIMKL/MDBList. Realtime, 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 your items and Add or block items. Example: tell Plex to stop sending movie X.
- Player card (Webhooks and Watcher) Shows what you are currently watching in real time while Webhooks or Watcher are active.
Features
Core features
|
Tools & modes
|
Download
- Docker:
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
- Open the web UI
- Connect at least one authentication providers such as: Plex, Jellyfin, Emby, SIMKL, TRAKT etc.
- Create one or more Sync Pairs (for example: Plex to SIMKL or two-way) AND/OR enable Scrobble
- Click Synchronize to start, or enable scheduling in Settings
- Track stats, logs, and history from the UI