# About CrossWatch

CrossWatch (CW) is a self-hosted tool for syncing watch state between services.

It runs locally in Docker, stores its state on disk, and is managed through a web UI.

{% hint style="success" %}
CW can feel overwhelming at first. The default settings are good enough for most users. Start with **one pair** and **one feature**. Then expand. Keep it easy!
{% endhint %}

{% hint style="warning" %}
CrossWatch is **not** meant for very large libraries.

Before you invest time in setup, check [Limitations](/getting-started/limitations.md).
{% endhint %}

### Common workflows

* Sync Plex watch history to Trakt, including watched status and timestamps.
* Keep a Plex, Jellyfin, or Emby watchlist aligned with SIMKL or MDBList.
* Sync resume position, or “Continue Watching,” between Plex, Emby, and Jellyfin.
* Scrobble “now playing” events and completions in real time with Watcher.
* Connect multiple accounts or servers by using profiles.

### What you can do

* <i class="fa-right-left">:right-left:</i> Sync **watchlists**, **history**, **ratings**, and **progress** (resume position).
* <i class="fa-tower-broadcast">:tower-broadcast:</i> Scrobble plays in real time with **Watcher**.
* <i class="fa-camera-movie">:camera-movie:</i> Improve matching with **TMDb** metadata.
* <i class="fa-shield-halved">:shield-halved:</i> Use local state and snapshots for safer planning and rollback.

### The mental model

* **Providers** are the services CrossWatch connects to, such as Plex, Jellyfin, Emby, Trakt, SIMKL, MDBList, AniList, and TMDb.
* **Profiles** are optional per-provider configurations for multiple accounts or servers.
  * For example, you might connect two Plex servers or two Trakt users.
* **Pairs** define one source and one target, and can run in one-way or two-way mode.
* **Runs** are the sync jobs you start manually or schedule.
* **State** is the set of local JSON files CrossWatch uses to plan changes safely.

### Where to go next

* Install and run CrossWatch in Docker: [Docker setup](/getting-started/docker-setup.md)
* Set up your first clean run: [First-time setup](/getting-started/first-time-setup.md)
* Decide between syncing and scrobbling: [What do you need?](/getting-started/first-time-setup/what-do-you-need.md)
* Learn how watchlist, history, and ratings syncing works: [Syncing](/getting-started/first-time-setup/what-do-you-need/syncing.md)
* Enable real-time Trakt, SIMKL, or MDBList scrobbling: [Watcher](/crosswatch/scrobble/watcher.md)
* Connect multiple accounts or servers per provider: [Profiles](/crosswatch/profiles.md)
* Start with safer defaults: [Best practices](/getting-started/best-practices.md)
* Check whether your library size is a good fit: [Limitations](/getting-started/limitations.md)
* Browse supported integrations: [Providers](/crosswatch/providers.md)

If something breaks, file an issue:

[File issues here](https://github.com/cenodude/CrossWatch/issues)

### Summary

CrossWatch syncs watchlists, history, ratings, and resume progress between supported services.

It can also scrobble Plex, Jellyfin, and Emby playback in real time through Watcher.

Start small with one pair, one feature, and a dry run.

### Next steps

* Install and run it: [Docker setup](/getting-started/docker-setup.md)
* Do your first clean run in the UI: [First-time setup](/getting-started/first-time-setup.md)
* Choose between periodic syncing and real-time scrobbling: [What do you need?](/getting-started/first-time-setup/what-do-you-need.md)
* Use safer defaults before trying two-way sync: [Best practices](/getting-started/best-practices.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.crosswatch.app/getting-started/about-crosswatch.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
