For the complete documentation index, see llms.txt. This page is also available as Markdown.

Migrate to routes mode

Move from legacy Watcher config (provider + sink) to routes.

Routes mode replaces the legacy provider + sink Watcher config.

Before v0.9.0, Watcher used the legacy fields.

Starting with v0.9.0, Watcher uses routes mode.

As of v0.9.15, CrossWatch no longer auto-migrates legacy Watcher config.

If you upgrade from an old config, you must create routes yourself.

Starting with a clean config.json is usually the best option.

It lets you scrobble:

  • multiple media servers in parallel

  • to multiple trackers

  • with per-route filters

Legacy config (pre-v0.9.0)

Legacy Watcher config used:

  • scrobble.watch.provider

  • scrobble.watch.sink (sometimes CSV)

  • scrobble.watch.filters

Routes config (v0.9.0+)

Routes mode uses:

  • scrobble.watch.routes[]

Each route is one mapping:

provider(profile) → sink(profile)

Each route can also have its own Filters and Options.

Global Watcher settings still exist.

They act as the defaults for every route.

If one route needs different behavior, override it in that route instead of changing the global default for everything.

What to do in v0.9.15+

There is no automatic conversion anymore.

If your old config still uses the legacy Watcher fields, rebuild the Watcher routes manually.

Preferred path:

  • start with a clean config.json

  • reconnect the providers you need

  • recreate your routes in the UI

If you keep an existing config:

  • treat the old Watcher fields as legacy only

  • recreate each route by hand

  • re-check filters, profiles, and route options carefully

Checklist

  1. Decide whether to start clean or keep the old config.json.

  2. Prefer a clean config.json if you want the least confusing setup.

  3. Open Settings → Scrobble → Watcher.

  4. Confirm you see a Routes section.

  5. Recreate each route with the right provider and sink.

  6. Leave the global Watcher settings alone unless you want a different default for all routes.

  7. If you use profiles:

    • create the needed provider profiles

    • update each route’s provider_instance / sink_instance

  8. Set route Filters so the route only matches the users or server you want.

  9. Use route Options only when one route should behave differently.

  10. Start Watcher.

  11. Check status in the UI.

Common issues

Routes duplicated

A route is identified by:

provider + provider_instance + sink + sink_instance

If you duplicate that tuple, you will double-scrobble.

Keep the filters and options in mind too.

Two near-identical routes can still create confusing results.

Watcher runs but nothing scrobbles

  • Check auth for the selected sink profile.

  • Check that your routes were recreated correctly.

  • Tighten filters. Empty filters are safest to validate first.

Last updated

Was this helpful?