> For the complete documentation index, see [llms.txt](https://wiki.crosswatch.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.crosswatch.app/crosswatch/settings/synchronization/media-clients.md).

# Media clients

Media clients connect directly to CrossWatch as synchronization targets.

{% hint style="danger" %}

### Media-client sync warning

Media clients are best used as sync destinations.

Nuvio, Kodi, and Stremio are playback and library clients. They are not perfect history authorities. When used as a source, some data can be incomplete or approximate. Some data uses when CW first observed a change.

This matters most for history dates:

* Kodi uses `lastplayed` for watched history. Ratings and resume progress lack event timestamps. CrossWatch tracks when it first sees or changes those values.
* Nuvio provides watched and progress timestamps when available. Items without required dates are skipped or marked unresolved.
* Stremio stores exact watched dates for movies, but not individual episodes. Episode watched state syncs, but exact episode dates cannot be recovered.

For the safest setup, sync one-way from a provider to the media client. Only use media-client-to-provider or two-way sync if incomplete or approximate dates can sync back to providers.

Start with **Dry run**. Enable one feature at a time. Keep removals disabled until the plan looks correct.
{% endhint %}

### Supported clients

#### Nuvio

Nuvio synchronizes its Library, watched history, and resume progress. It does not support ratings or playlists.

Nuvio is an experimental adapter. API changes can temporarily affect synchronization.

Before creating a pair:

1. Connect Nuvio under **Settings** → **Connections** → **Clients**.
2. Approve the temporary login code and select a Nuvio profile.
3. Configure TMDb metadata for stronger identity matching.

Use one-way synchronization and **Dry run** for your first pair. Enable one feature at a time. Keep removals disabled until you verify the plan.

For feature support, matching, removal behavior, and troubleshooting, see [Nuvio](/crosswatch/settings/synchronization/media-clients/nuvio.md).

#### Kodi

Kodi synchronizes watched history, ratings, and resume progress for movies and episodes. It also works as a Watcher playback source.

Kodi is an experimental adapter. It requires Kodi 21 Omega, JSON-RPC 13.5.0 or newer, and authenticated HTTP remote control.

Use source-path whitelists to limit History, Ratings, Progress, and Watcher activity. Kodi writes only to items already in its video library.

Use one-way synchronization and **Dry run** for your first pair. Enable one feature at a time. Keep removals disabled until you verify the plan.

For feature support, matching, whitelist behavior, and troubleshooting, see [Kodi](/crosswatch/settings/synchronization/media-clients/kodi.md).

#### Stremio

Stremio synchronizes History, Progress, Watchlist, and supported Ratings.

Stremio is experimental and uses its internal account API. API changes can temporarily affect synchronization.

Stremio uses its Library as the Watchlist. It keeps episode watched state without individual watched dates. Ratings write to Stremio only as Liked or Loved reactions.

Use one-way synchronization and **Dry run** for your first pair. Enable one feature at a time. Keep removals disabled until you verify the plan.

For feature support, matching, data behavior, and troubleshooting, see [Stremio](/crosswatch/settings/synchronization/media-clients/stremio.md).

### Supported features

| Client  | History        | Ratings               | Progress       | Watchlist      |
| ------- | -------------- | --------------------- | -------------- | -------------- |
| Kodi    | Read and write | Read and write        | Read and write | Not supported  |
| Nuvio   | Read and write | Not supported         | Read and write | Read and write |
| Stremio | Read and write | Write to Stremio only | Read and write | Read and write |

History and Progress support movies and individual episodes. Watchlists support movies and shows. Seasons are not synchronized separately.

{% hint style="danger" %}
Media clients can store less detail than trackers or media servers. Start with one-way sync, then run **Dry run** before writing data.
{% endhint %}

### What you can lose

| Client  | Key limitation                                                                                                                                 |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Kodi    | Separate plays collapse into one play count and latest date. Decimal ratings are rounded. Missing library items cannot be added.               |
| Nuvio   | Repeated plays become one History record. Progress needs a position, duration, and timestamp. Episodes and seasons cannot enter the Watchlist. |
| Stremio | Episode watched dates are lost. Numeric Ratings become reactions. Only one unfinished episode per series retains Progress.                     |

{% hint style="info" %}
Keep a tracker as the source of truth when exact dates, Ratings, or several active episodes matter.
{% endhint %}

### Data handling reference

Support does not guarantee full fidelity. Some clients retain the latest state only. Others retain dated events. Review these limits before configuring a pair.

#### What can be lost or changed

| Client  | Feature         | When used as source                                          | When used as destination                                              | What you may lose                                         |
| ------- | --------------- | ------------------------------------------------------------ | --------------------------------------------------------------------- | --------------------------------------------------------- |
| Kodi    | History         | CW reads watched state, play count, and `lastplayed`.        | CW writes the play count and latest date to an existing library item. | Separate play events.                                     |
| Kodi    | Ratings         | Kodi provides a Rating from 1 to 10.                         | Kodi accepts an integer Rating from 1 to 10.                          | Decimal Ratings are rounded.                              |
| Kodi    | Progress        | Kodi provides resume position and duration.                  | CW writes resume position to an existing library item.                | The original Progress timestamp is unavailable.           |
| Kodi    | Watchlist       | Not available.                                               | Not available.                                                        | Watchlists cannot synchronize through Kodi.               |
| Nuvio   | History         | Nuvio provides a watched date for movies and episodes.       | Nuvio accepts the source watched date.                                | Separate repeated plays are not preserved.                |
| Nuvio   | Ratings         | Not available.                                               | Not available.                                                        | Ratings cannot synchronize through Nuvio.                 |
| Nuvio   | Progress        | Nuvio provides position, duration, and a Progress timestamp. | All three values are required for writes.                             | Progress without duration or timestamp cannot be written. |
| Nuvio   | Watchlist       | The Nuvio Library is the Watchlist.                          | Movies and shows are added to the Nuvio Library.                      | Episodes and seasons are unsupported.                     |
| Stremio | Movie History   | Stremio provides the latest watched date and watched state.  | Stremio stores one latest watched date.                               | Separate historical play events are not preserved.        |
| Stremio | Episode History | Stremio stores watched episodes in a bitfield.               | Stremio stores only watched state.                                    | Every individual episode watched date.                    |
| Stremio | Ratings         | Stremio cannot be a Ratings source.                          | Ratings become Stremio reactions.                                     | The original numeric Rating and Rating date.              |
| Stremio | Progress        | A movie can expose its current resume position.              | Stremio requires position and duration.                               | Progress without duration cannot be written.              |
| Stremio | Progress        | A series record exposes one active episode.                  | Writing another episode replaces the active episode.                  | Multiple unfinished episodes from one series.             |
| Stremio | Watchlist       | The Stremio Library is the Watchlist.                        | Movies and shows are added to the Library.                            | There is no separate Watchlist.                           |
| Stremio | All features    | Matching normally requires IMDb.                             | TMDb metadata can resolve IMDb when possible.                         | Items without a usable mapping remain unresolved.         |

#### Important History differences

**Exact History versus watched state**

Trackers can store dated History events. Media clients usually store current watched state, with no date or only one latest date.

When a client does not provide the original date, CW cannot recreate it. The destination uses its import date, another fallback, or leaves the item unresolved.

**Multiple watches**

Kodi, Nuvio, and Stremio synchronize as one current History record per movie or episode.

A tracker can contain several separate plays. When tracker History synchronizes to a media client, those plays can collapse into one watched state.

A later sync back to the tracker cannot restore the original events.

#### Common pair examples

| Pair                        | What is synchronized                                         | Main risk                                                                                           |
| --------------------------- | ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| Stremio to Plex             | Movie and episode watched state                              | Stremio episodes have no individual watched date. Plex can mark them watched using the import date. |
| Plex to Stremio             | Movie History, episode watched state, and supported Progress | Individual Plex episode dates are discarded in Stremio.                                             |
| Stremio to Trakt            | Movie dates and episode watched state                        | Original episode dates are unavailable.                                                             |
| Trakt to Stremio            | Movie and episode watched state                              | Separate Trakt plays collapse into one state. Episode dates are not retained.                       |
| Provider Ratings to Stremio | Movie and show Ratings                                       | Numeric Ratings become `liked` or `loved`. Ratings below the threshold create no reaction.          |
| Kodi to a tracker           | Watched state, latest date, Ratings, and Progress            | Missing Kodi dates and synthetic timestamps are not historical source data.                         |
| Tracker to Kodi             | History, Ratings, and Progress for matching library items    | Missing watched dates become the current date. Decimal Ratings are rounded.                         |
| Nuvio to a tracker          | Watched dates and Progress from the selected profile         | Repeated plays are represented as one current item.                                                 |
| Tracker to Nuvio            | History, Progress, and Watchlist                             | High Progress can be treated as completed.                                                          |
| Any provider to Stremio     | Supported data with Stremio-compatible identifiers           | Episode dates, exact Ratings, and multiple episode Progress entries can be lost.                    |

#### Two-way sync risks

Two-way sync can send reduced data back to the provider that originally contained more detail.

For example, a tracker can send exact episode dates to Stremio. Stremio stores watched state only. A later Stremio-to-tracker sync cannot recover those dates.

The same applies to numeric Ratings converted to reactions and several episode Progress entries reduced to one active Stremio episode.

Two-way sync is not recommended when a client stores less information.

{% hint style="warning" %}
Do not use Stremio as a Ratings source. Keep exact episode dates and Ratings authoritative elsewhere.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://wiki.crosswatch.app/crosswatch/settings/synchronization/media-clients.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
