Skip to content

Latest commit

 

History

2,077 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59d12c86-1022-4b0e-92a0-70474db3ef41

⭐ Star this repository to get updates

Latest Release GHCR Pulls Must-read: Quick Start
Docker Pulls Image Size Docker Version

Website Wiki Reddit

CrossWatch (CW) is a synchronization engine that act as a bridge and keeps your Plex, Jellyfin, Emby, SIMKL, Floppy, FlickList, Trakt, AniList, TMDb, MDBList, PublicMetaDB, PunchPlay, BingeBase, Scrob, Tautulli, Kodi, Nuvio, Stremio and CW local tracker in sync. It runs locally with a web UI or/and Command-Line Interface (CLI) 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. With Profiles, you can manage separate sync setups for yourself and for friends or family too, with their own servers and/or tracker API's.

CW in a nutshell:

  • One brain for all your media syncs A single place to configure everything.
  • Be your own Sync Hub Create profiles for seperate media servers/users/trackers.
    • Managed user support (multi-users)
  • Web User Interface and/or Command Line Interface (CLI)
  • Multi media-server and multi tracker support with profiles.
  • Synchronization
    • Watchlists, Ratings, History, Progress and Collections
    • Rewatches: keep separate plays in sync for supported trackers.
    • Anime ID mapping (powered by AniBridge and animeApi) for AniList, SIMKL and CW tracker pairs, with custom mappings.
  • Scrobble (tracks your activity)
    • Watcher (Plex/Emby/Jellyfin/Kodi/Scrob to supported trackers)
      • Does not require Plex Pass or Emby Premiere. Yay!
    • Webhooks (Plex/Emby/Jellyfin to supported trackers)
    • Anime ID mapping for watcher and webhooks for supported providers.
  • Tools
    • Analyzer: Finds items that are stuck or inconsistent between providers.
    • Playback Progress Manager: View and edit unfinished playback sessions across providers.
    • Editor: Inspect and adjust your items and add or block items.
    • Import and Export: Import your tracker files and export your data.
    • Events Viewer: Search and inspect sync runs.
    • Captures: Rollback tool for provider watchlist, ratings, and history.

And much more...such as:

  • Simple and advanced scheduling: From standard to more detailed pair schedules
  • CW Tracker Keeps snapshots/backups from your media servers and trackers.
  • Unified Watchlist: View all watchlist items in one place.
  • Player card: Shows what you are currently watching in real time.
  • Fallback GUID: Revives old items from your Plex library.

Download

Guide: Installation

  • Docker:

    docker pull ghcr.io/cenodude/crosswatch:latest

Run as Container

docker run -d \
  --name crosswatch \
  -p 8787:8787 \
  -v crosswatch_config:/config \
  -e TZ=Europe/Amsterdam \
  --restart unless-stopped \
  ghcr.io/cenodude/crosswatch:latest

or

services:
  crosswatch:
    image: ghcr.io/cenodude/crosswatch:latest
    container_name: crosswatch
    ports:
      - "8787:8787"
    environment:
      TZ: Europe/Amsterdam
    volumes:
      - type: volume
        source: crosswatch_config
        target: /config
    restart: unless-stopped

volumes:
  crosswatch_config:

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

Want no web UI? Add -e CW_CLI_ONLY=1 or CW_CLI_ONLY: "1" in Compose. The API, CLI, webhooks and auth callbacks keep working.

Run Once and Exit

For cron, Kubernetes CronJobs or other external schedulers, run the container as a one-shot sync job:

docker run --rm \
  -v crosswatch_config:/config \
  -e TZ=Europe/Amsterdam \
  ghcr.io/cenodude/crosswatch:latest \
  run-once

Run selected pairs by id, number or unique prefix:

docker run --rm \
  -v crosswatch_config:/config \
  ghcr.io/cenodude/crosswatch:latest \
  run-once --pair pair_07c3 --pair pair_91ab

The one-shot command exits 0 on success and 1 when the sync reports errors or cancellation. Add --fail-on-unresolved if unmatched items should fail the job.

Sponsors

Buy Me a Coffee
Every cent goes directly to the ALS Foundation in the Netherlands

GitBook

Huge thanks to our sponsors for keeping this project moving.

About

Synchronize your data across media servers, media agents and trackers. Keep your movies and shows in sync, no matter where you watch.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

844 stars

Watchers

5 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages