{"version":1,"pages":[{"id":"fnuXXTpkT5JefuzjfbXW","title":"Help Center","pathname":"/","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"life-ring","description":"CrossWatch documentation","breadcrumbs":[{"label":"WIKI"}]},{"id":"qtfUF6m4GafE3XDx2QZ8","title":"About CrossWatch","pathname":"/getting-started/about-crosswatch","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"address-card","description":"Self-hosted watchlist, history, ratings, and resume progress sync plus real-time scrobbling for Plex/Jellyfin/Emby and Trakt/SIMKL/MDBList/AniList/TMDb.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"}]},{"id":"Lws31PpVM04pXySTwH8d","title":"Limitations","pathname":"/getting-started/limitations","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"triangle-exclamation","description":"Soft size guidance, provider plan limits, and request-throttling limits that affect CrossWatch behavior.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"}]},{"id":"QeHCCMm3gQiQ1nwavCVy","title":"Docker setup","pathname":"/getting-started/docker-setup","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"docker","description":"Run CrossWatch in Docker and persist state by mounting /config.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"}]},{"id":"4qBQobIANBkULCJX7LMv","title":"First-time setup","pathname":"/getting-started/first-time-setup","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"rocket","description":"Connect providers, add TMDb metadata, create your first pair, then (optionally) enable Watcher for real-time scrobbling.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"}]},{"id":"cmMmuBNhh7EaJuct5jiI","title":"What do you need?","pathname":"/getting-started/first-time-setup/what-do-you-need","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Choose between periodic syncing and real-time scrobbling, based on what you want to keep in sync.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"},{"label":"First-time setup","icon":"rocket"}]},{"id":"jveNq0NHJSA5tWqmxYbm","title":"Syncing","pathname":"/getting-started/first-time-setup/what-do-you-need/syncing","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Align watchlists, history, and ratings between services. Start with one-way + one feature + dry run, then scale up.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"},{"label":"First-time setup","icon":"rocket"},{"label":"What do you need?"}]},{"id":"S1Az0s8qiDpqNxVE1N9q","title":"Sync results","pathname":"/getting-started/first-time-setup/what-do-you-need/syncing/sync-results","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"What the Done counters mean after a sync run.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"},{"label":"First-time setup","icon":"rocket"},{"label":"What do you need?"},{"label":"Syncing"}]},{"id":"fKL5oVdV3lPOfiOs4z9Z","title":"Webhook or Watcher","pathname":"/getting-started/first-time-setup/what-do-you-need/webhook-or-watcher","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Pick a scrobble mode. Watcher is recommended. Legacy webhooks are deprecated.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"},{"label":"First-time setup","icon":"rocket"},{"label":"What do you need?"}]},{"id":"aXxgMcv8AubC0CypFUTO","title":"Best practices","pathname":"/getting-started/best-practices","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"comment-question","description":"Recommended defaults for safe syncing, conflict handling, and operational hygiene.","breadcrumbs":[{"label":"WIKI"},{"label":"Getting Started"}]},{"id":"lCTegLtxemF834DhMv5R","title":"Providers","pathname":"/crosswatch/providers","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"chevron-right","description":"Connect services CrossWatch supports and jump to docs for authentication, media servers, trackers, metadata, and adapters.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"XXSROEx2Yqy98k1SqJvO","title":"Authentication","pathname":"/crosswatch/providers/authentication","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"key","description":"Connect CrossWatch to providers. Tokens and URLs live here. Pairs use them for syncing and scrobbling.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"}]},{"id":"FVyiR13vuSOqiGlMiDbw","title":"Auth: Media servers","pathname":"/crosswatch/providers/authentication/auth-media-servers","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Supported media servers (Plex, Jellyfin, Emby) and setup notes for authentication, whitelisting, and matching.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"}]},{"id":"kYDK8rWWJHZJmYMDPvQo","title":"Auth: Plex","pathname":"/crosswatch/providers/authentication/auth-media-servers/auth-plex","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"play","description":"Connect Plex via token auth, configure libraries, and enable watchlist, history, ratings, and progress syncing.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Media servers"}]},{"id":"Szfcj6x7Q0FfotF9xzXQ","title":"Auth: Jellyfin","pathname":"/crosswatch/providers/authentication/auth-media-servers/auth-jellyfin","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"play","description":"Connect Jellyfin via server URL and user token, configure libraries, and sync watchlist, history, and progress.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Media servers"}]},{"id":"GPW1AqoB7S8iPo29dgeW","title":"Auth: Emby","pathname":"/crosswatch/providers/authentication/auth-media-servers/auth-emby","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"play","description":"Connect Emby via server URL and user token, configure libraries, and sync watchlist, history, and progress.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Media servers"}]},{"id":"b27pu6Rt26LAGi446KRn","title":"Auth: Trackers","pathname":"/crosswatch/providers/authentication/auth-trackers","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Connect tracker providers (Trakt, SIMKL, MDBList, AniList, TMDb) for syncing and scrobbling.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"}]},{"id":"0kr4lay0HZW2P0SduuT1","title":"Auth: AniList","pathname":"/crosswatch/providers/authentication/auth-trackers/auth-anilist","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"list-radio","description":"Anime specific tracker","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Trackers"}]},{"id":"I8ilfYpZ7YJR54a1BgZw","title":"Auth: MDBList","pathname":"/crosswatch/providers/authentication/auth-trackers/auth-mdblist","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"list","description":"Movies, Shows, Seasons, Episodes and Limited Anime","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Trackers"}]},{"id":"TiyMexyBNNHgfQ4JDyy6","title":"Auth: SIMKL","pathname":"/crosswatch/providers/authentication/auth-trackers/auth-simkl","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"list-radio","description":"Movies, Shows, Seasons, Episodes and Anime","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Trackers"}]},{"id":"GTsgKYIFvITuCFrzQvji","title":"Auth: Trakt","pathname":"/crosswatch/providers/authentication/auth-trackers/auth-trakt","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"list-radio","description":"Movies, Shows, Seasons, Episodes and Limited Anime","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Trackers"}]},{"id":"ZgT0Gg3fSsAcn0rT9hed","title":"Auth: TMDb","pathname":"/crosswatch/providers/authentication/auth-trackers/auth-tmdb","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"list-radio","description":"Connect TMDb (Sync) to read/write your TMDb watchlist and ratings (separate from TMDb metadata).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Trackers"}]},{"id":"1KYetEKG2fDCn2YMhBtE","title":"Auth: Others","pathname":"/crosswatch/providers/authentication/auth-others","siteSpaceId":"sitesp_qHQlt","lang":"en","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"}]},{"id":"7DkCdHo0KFA1MgNMDdOD","title":"Auth: Tautulli","pathname":"/crosswatch/providers/authentication/auth-others/auth-tautulli","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"server","description":"Plex history import","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Authentication","icon":"key"},{"label":"Auth: Others"}]},{"id":"c5xWNlrna2qfw2ET3N6b","title":"Synchronization","pathname":"/crosswatch/providers/synchronization","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"rotate-exclamation","description":"Adapter reference for how CrossWatch reads/writes provider data during syncing.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"}]},{"id":"GUWl5kpWjOzbTroJ9EC0","title":"Adapter: AniList","pathname":"/crosswatch/providers/synchronization/adapter-anilist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Anime specific adapter","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"wo1bvQ75vjpmwdLU5SbB","title":"Adapter: CrossWatch","pathname":"/crosswatch/providers/synchronization/adapter-crosswatch","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Local backup adapter that stores watchlist/history/ratings on disk for rollback and restore.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"cHaK7elcPSgvo1VR2E48","title":"Adapter: Emby","pathname":"/crosswatch/providers/synchronization/adapter-emby","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Emby adapter notes for syncing watchlist/history/ratings and handling ID/matching quirks.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"LVxifNNcUFwNIcZzn53r","title":"Adapter: Jellyfin","pathname":"/crosswatch/providers/synchronization/adapter-jellyfin","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Jellyfin adapter notes for syncing watchlist/history/ratings and handling missing external IDs.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"CsNqeI2L3uOOXg95AW06","title":"Adapter: MDBList","pathname":"/crosswatch/providers/synchronization/adapter-mdblist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"MDBList adapter notes for syncing watchlist/history/ratings and handling rate limits.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"OWAe360aTxSHXAnIiRoW","title":"Adapter: Plex","pathname":"/crosswatch/providers/synchronization/adapter-plex","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Plex adapter notes for syncing watchlist/history/ratings with stable external IDs.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"eqXoLy9ij0AlCf3sbYdg","title":"Adapter: SIMKL","pathname":"/crosswatch/providers/synchronization/adapter-simkl","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"SIMKL adapter notes for syncing watchlist/history/ratings using activity watermarks and batching.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"bRhLnM3fO7uDpCByQXcs","title":"Adapter: Trakt","pathname":"/crosswatch/providers/synchronization/adapter-trakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Trakt adapter notes for syncing watchlist/history/ratings, including ETag caching and batching.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"7R7JVYBKElUh131kNRvA","title":"Adapter: Tautulli","pathname":"/crosswatch/providers/synchronization/adapter-tautulli","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Tautulli adapter notes for importing Plex watch history into CrossWatch.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"c5Ii2OZS1BGWhm95gyE7","title":"Adapter: TMDb","pathname":"/crosswatch/providers/synchronization/adapter-tmdb","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"TMDb adapter notes for syncing TMDb account data (watchlist/ratings) via TMDb (Sync).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Synchronization","icon":"rotate-exclamation"}]},{"id":"8L38pVPE2gL0y3sD7I8D","title":"Metadata","pathname":"/crosswatch/providers/metadata","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"camera-movie","description":"Configure metadata providers (TMDb) to improve matching and stabilize IDs across services.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"}]},{"id":"FWsYA6CO8FVG9KIb08pZ","title":"Meta: TMDb","pathname":"/crosswatch/providers/metadata/meta-tmdb","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Configure TMDb metadata to improve matching and stabilize IDs across providers.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Providers","icon":"chevron-right"},{"label":"Metadata","icon":"camera-movie"}]},{"id":"F6rPNYhTkT9As4H1vv0c","title":"Profiles","pathname":"/crosswatch/profiles","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"id-card-clip","description":"Configure multiple accounts/servers per provider in a single CrossWatch install.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"jIV6BevD08MaNG9uXez9","title":"Library Whitelisting","pathname":"/crosswatch/library-whitelisting","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"bars","description":"Limit which Plex/Jellyfin/Emby libraries CrossWatch reads, writes, or scrobbles.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"C1lNlN7T3a0xWpl0jEU5","title":"Configure Pairs","pathname":"/crosswatch/configure-pairs","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"gear","description":"How to configure a sync pair, feature toggles, and safety controls.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"hiFf8mtltsov8tilmcJv","title":"Global settings","pathname":"/crosswatch/configure-pairs/global-settings","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"globe","description":"Pair-wide safety switches and advanced guardrails.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"}]},{"id":"YPKlyWvCZHZXYAG2nASu","title":"Provider settings","pathname":"/crosswatch/configure-pairs/provider-settings","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"gears","description":"Pair-scoped provider behavior (matching, watched-state quirks, and more).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"}]},{"id":"tVYYXdouDUGFSh6Fp5C3","title":"Pair-level Whitelisting","pathname":"/crosswatch/configure-pairs/provider-settings/pair-level-whitelisting","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Limit libraries for a single pair (history/ratings) and keep other pairs unaffected.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"},{"label":"Provider settings","icon":"gears"}]},{"id":"JsPrfAQz44sqzLO0l3Sl","title":"Features","pathname":"/crosswatch/configure-pairs/features","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"feather","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"}]},{"id":"KNnBRgpRsxjPp2egBawm","title":"Watchlist","pathname":"/crosswatch/configure-pairs/features/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"check","description":"Configure watchlist syncing (adds, removes, and Jellyfin/Emby modes).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"},{"label":"Features","icon":"feather"}]},{"id":"g1Zud9UhBjNypsiziVe0","title":"Ratings","pathname":"/crosswatch/configure-pairs/features/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"check","description":"Configure ratings sync, scope, and backfill windows.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"},{"label":"Features","icon":"feather"}]},{"id":"7m19m7dZVqYr1WaT3OjB","title":"History","pathname":"/crosswatch/configure-pairs/features/history","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"check","description":"Configure watched-state syncing and safety limitations.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"},{"label":"Features","icon":"feather"}]},{"id":"c6bYHJvkqJMcY16AM0YC","title":"Playlists","pathname":"/crosswatch/configure-pairs/features/playlists","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"xmark","description":"Playlist syncing isn’t supported. The UI has placeholders, but no provider adapters enable playlist read/write.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"},{"label":"Features","icon":"feather"}]},{"id":"n575tse3rRGlm0zePIAq","title":"Progress","pathname":"/crosswatch/configure-pairs/features/progress","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"check","description":"Sync resume position (“Continue Watching”) between Plex, Emby, and Jellyfin.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configure Pairs","icon":"gear"},{"label":"Features","icon":"feather"}]},{"id":"T1om5dJpNXyNeNNFWP22","title":"Navigation","pathname":"/crosswatch/navigation","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"spider-web","description":"Overview of the CrossWatch web UI navigation and key settings.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"4SQnPA6cR4UB3Vd39FBT","title":"Settings","pathname":"/crosswatch/navigation/settings","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"gear","description":"Configure providers, pairs, scheduling, UI options, and maintenance.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"}]},{"id":"vH3t2HJ1dWPYhjONtnAF","title":"UI settings","pathname":"/crosswatch/navigation/ui-settings","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"sliders","description":"Control dashboard cards, sign-in behavior, HTTPS mode, and CW Tracker defaults.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"}]},{"id":"XtwnF9qxGI4HXdKH5ny5","title":"User interface","pathname":"/crosswatch/navigation/ui-settings/user-interface","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Control dashboard cards, help visibility, and HTTP/HTTPS mode for the web app.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"},{"label":"UI settings","icon":"sliders"}]},{"id":"xU77j5nQ9VT2K6im02io","title":"HTTPS/TLS","pathname":"/crosswatch/navigation/ui-settings/user-interface/https-tls","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"file-shield","description":"Enable HTTPS for the CrossWatch UI and manage TLS certificates.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"},{"label":"UI settings","icon":"sliders"},{"label":"User interface"}]},{"id":"mE8YVlm996mBVricmALA","title":"Security","pathname":"/crosswatch/navigation/ui-settings/security","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Configure local login, session duration, session cleanup, Plex sign-in, and trusted reverse proxies.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"},{"label":"UI settings","icon":"sliders"}]},{"id":"CiiHFEcOBptBWTAn3OZ8","title":"Plex SSO","pathname":"/crosswatch/navigation/ui-settings/security/plex-sso","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"right-to-bracket","description":"Link one Plex account as an optional sign-in method for the CrossWatch web app.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"},{"label":"UI settings","icon":"sliders"},{"label":"Security"}]},{"id":"YoLPWya8uPpOezqtxDAA","title":"CW Tracker","pathname":"/crosswatch/navigation/ui-settings/cw-tracker","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Configure CW Tracker retention, auto snapshots, and tracker snapshot selectors.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"},{"label":"UI settings","icon":"sliders"}]},{"id":"HEmHJudEJ2jI2Mvru71E","title":"Insights","pathname":"/crosswatch/navigation/insights","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"glasses","description":"Filter the Insights dashboard by feature and provider profile.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"}]},{"id":"2SUzk9crk2oSrJuB5Ru6","title":"Quick Add","pathname":"/crosswatch/navigation/quick-add","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"wand-magic-sparkles","description":"Manually send history, ratings, and watchlist actions to one or more providers for titles watched outside your usual media server flow.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"}]},{"id":"gJFS7qwEuH2gcxdm8BuJ","title":"Mobile devices","pathname":"/crosswatch/navigation/mobile-devices","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"mobile","description":"Use CrossWatch on phones, switch compact/full UI, and install it as a PWA over HTTPS.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Navigation","icon":"spider-web"}]},{"id":"YwgRnxeZmi2IG39XFA7l","title":"Scrobble","pathname":"/crosswatch/scrobble","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"cloud-binary","description":"Real-time playback progress syncing (now playing, pause/stop, and completion).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"BxJJk2jkTcCo8ZkED8lI","title":"Webhooks","pathname":"/crosswatch/scrobble/webhooks","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"webhook","description":"Deprecated legacy webhook setup for scrobbling (use Watcher instead).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Scrobble","icon":"cloud-binary"}]},{"id":"J9gNWTn8GfZMQxOd5AW2","title":"Watcher","pathname":"/crosswatch/scrobble/watcher","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"glasses-round","description":"Real-time scrobbling from Plex/Emby/Jellyfin to Trakt, SIMKL and MDBList.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Scrobble","icon":"cloud-binary"}]},{"id":"W18sQ6mUnupM012SCNYY","title":"Migrate to routes mode","pathname":"/crosswatch/scrobble/watcher/migrate-to-routes-mode","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Move from legacy Watcher config (provider + sink) to routes.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Scrobble","icon":"cloud-binary"},{"label":"Watcher","icon":"glasses-round"}]},{"id":"hWmJliJ9zAAQMuyxFE3f","title":"Playing Card","pathname":"/crosswatch/scrobble/playing-card","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"address-card","description":"Footer widget showing the currently playing item and live progress (when available).","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Scrobble","icon":"cloud-binary"}]},{"id":"hVUNomZiBduGHBlvojRV","title":"Scheduling","pathname":"/crosswatch/scheduling","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"calendar-check","description":"Configure standard recurring syncs or advanced plans with timed steps, automated captures, and event triggers.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"UXCRBxPO392JvXPCBbRM","title":"Advanced scheduling","pathname":"/crosswatch/scheduling/advanced-scheduling","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"diagram-project","description":"Configure timed sync steps, capture schedules, and event triggers for more precise automation.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Scheduling","icon":"calendar-check"}]},{"id":"IlKhfb6pyOgsPrOKgCe6","title":"Maintenance","pathname":"/crosswatch/maintenance","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"forklift","description":"Control log verbosity, run safe cleanup tasks, and restart the CrossWatch service.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"J7jn3mhmS7DuSViIeO9T","title":"Tools","pathname":"/crosswatch/tools","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"screwdriver-wrench","description":"Debug matching, edit local state, and export CSVs.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"urf7i5pr8Dd67jaRYgsQ","title":"Analyzer","pathname":"/crosswatch/tools/analyzer","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"magnifying-glass-chart","description":"Find items that didn’t sync and identify missing IDs or mismatches.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Tools","icon":"screwdriver-wrench"}]},{"id":"3etr8jiXzeY3oHBt6Zka","title":"Exporter","pathname":"/crosswatch/tools/exporter","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"file-arrow-down","description":"Export watchlist, history, and ratings from state.json to import-friendly CSV files.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Tools","icon":"screwdriver-wrench"}]},{"id":"jnc3CxKIomZJwjuz5RlN","title":"Editor","pathname":"/crosswatch/tools/editor","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"newspaper","description":"Inspect and edit CrossWatch local data in CW Tracker or Current State, including imports, blocks, manual adds, and save behavior.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Tools","icon":"screwdriver-wrench"}]},{"id":"qAmxDUAX1DagwLqV0c5P","title":"Captures","pathname":"/crosswatch/tools/captures","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"image-polaroid","description":"Create point-in-time captures for restore, compare, and scheduled retention workflows.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Tools","icon":"screwdriver-wrench"}]},{"id":"dvLPC0KuQmoeIdIVHSnr","title":"Capture Compare","pathname":"/crosswatch/tools/captures/capture-compare","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Run a read-only diff between two same-provider captures to see added, removed, updated, and unchanged items.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Tools","icon":"screwdriver-wrench"},{"label":"Captures","icon":"image-polaroid"}]},{"id":"sF3VwNfhZuYOwt6DwUG9","title":"Capture Compare (Advanced)","pathname":"/crosswatch/tools/captures/capture-compare-advanced","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Advanced capture diff viewer with raw JSON and field-level changes.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Tools","icon":"screwdriver-wrench"},{"label":"Captures","icon":"image-polaroid"}]},{"id":"wSx6U3V0FNJ3e2pvDywh","title":"Configuration (config.json)","pathname":"/crosswatch/configuration-config-json","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"sliders-up","description":"Config file location, load rules, and key reference for config.json.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"KaMtaAGBjgDvoh2g6LxO","title":"Default config values","pathname":"/crosswatch/configuration-config-json/default-config-values","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"slider","description":"Reference list of CrossWatch config.json","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configuration (config.json)","icon":"sliders-up"}]},{"id":"pzmuNfCTULe3Xev3N7q6","title":"Config encryption","pathname":"/crosswatch/configuration-config-json/config-encryption","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"binary-lock","description":"How CrossWatch encrypts secret values in config.json, where the master key comes from, and what to back up.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"},{"label":"Configuration (config.json)","icon":"sliders-up"}]},{"id":"uIdojSHyuBmDdMI0yPFg","title":"Provider rate limiting","pathname":"/crosswatch/provider-rate-limiting","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"gauge","description":"Default throttles for upstream APIs (SIMKL + Trakt + MDBList) and how to override them.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"bY2AjhMX4EOf0W8YjSNy","title":"FAQ","pathname":"/crosswatch/faq","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"message-question","description":"Common questions about installation, setup, syncing, scrobbling, and troubleshooting.","breadcrumbs":[{"label":"WIKI"},{"label":"CrossWatch"}]},{"id":"WkzOTz9VZtoK7KE0G0Qt","title":"Overview","pathname":"/blueprint-architecture/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Big-picture map of how Auth, Meta, Sync, Scrobble, and the Orchestrator fit together.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"458ZbsIKcwSYg9y6eb8R","title":"Orchestrator","pathname":"/blueprint-architecture/orchestrator","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How the orchestrator runtime loads providers, plans changes, applies writes, and persists state safely.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"zQ4XUsxclYjlv6NiKYDN","title":"Snapshots","pathname":"/blueprint-architecture/orchestrator/snapshots","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How the orchestrator builds, normalizes, and caches provider snapshots (indices), including canonical keys, checkpoints, and drop-guard safety.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"V14K7oAKlQVLX9RCMLHx","title":"Blackbox","pathname":"/blueprint-architecture/orchestrator/blackbox","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Quarantine noisy “flapping” items so runs stay safe, quiet, and cheap.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"c4ZzOhIGtLLdGbRtW59u","title":"One-way sync","pathname":"/blueprint-architecture/orchestrator/one-way-sync","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Exact one-way pipeline (src → dst) used by the orchestrator for one feature run, including guardrails and state writes.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"RMf2mp4SIU4Ll3oBp2rY","title":"Two-way sync","pathname":"/blueprint-architecture/orchestrator/two-way-sync","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Exact two-way pipeline (A ↔ B), including tombstones, observed deletions, and guarded removal propagation.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"PLUzHHTi69SryahNZLpc","title":"Guardrails","pathname":"/blueprint-architecture/orchestrator/guardrails","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Safety mechanisms that prevent transient provider issues from becoming destructive writes.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"a15hQCS2XtdMZzizOqbi","title":"State","pathname":"/blueprint-architecture/orchestrator/state","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Where CrossWatch stores orchestrator baselines, checkpoints, and guardrail internals on disk.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"1qZ7r7y7Bdekdu8JvvrW","title":"Applier","pathname":"/blueprint-architecture/orchestrator/applier","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Write engine that executes provider adds/removes, chunks batches, and normalizes results.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"MCX2CnhexmZ152XSkUCa","title":"Planner","pathname":"/blueprint-architecture/orchestrator/planner","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Diff engine that compares two snapshots and produces add/remove plans.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"AbAHapoU4fVH9SPBWr36","title":"Tombstones","pathname":"/blueprint-architecture/orchestrator/tombstones","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Deletion memory that prevents re-add loops and enables safer delete propagation in two-way sync.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"KnMPtx1Y6mb3cXWb3723","title":"Unresolved","pathname":"/blueprint-architecture/orchestrator/unresolved","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Records per-item apply failures so the orchestrator can stop retrying known-bad items.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"v5kstBTnHFLPb56jFq7a","title":"Phantom Guard","pathname":"/blueprint-architecture/orchestrator/phantom-guard","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Watchlist anti-flap guard that blocks “ghost adds” that don’t stick on the destination.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"AW0YhA9Rjjc0lx6UjKbg","title":"Scope","pathname":"/blueprint-architecture/orchestrator/scope","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How pair scoping prevents guardrail state and cache files from bleeding across pairs and modes.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"VM7MMmJTEtteplXKtsL0","title":"Eventing","pathname":"/blueprint-architecture/orchestrator/eventing","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Structured events and log conventions used by the orchestrator and UI during runs.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"m6d9opnFI1d5b6WDQCFY","title":"Runtime","pathname":"/blueprint-architecture/orchestrator/runtime","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Runtime config knobs for debug output, snapshot caching, chunking, and telemetry warnings.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"wKF2nlv3GlSiNlemxMri","title":"Conflicts","pathname":"/blueprint-architecture/orchestrator/conflicts","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Two-way conflict resolution for ratings, adds vs deletes, and ambiguous “missing” states.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"ZCP0BpNHARwYaQfxNBqr","title":"Blocklists","pathname":"/blueprint-architecture/orchestrator/blocklists","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How tombstones, blackbox, and unresolved block planned adds to prevent repeated failures.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"wb7Ll0gOfQcVcNezKShx","title":"Health","pathname":"/blueprint-architecture/orchestrator/health","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Provider health checks and how they gate pairs, features, and safe write behavior.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"GwGR7dqGHcqhXwsV1H5w","title":"Chunking","pathname":"/blueprint-architecture/orchestrator/chunking","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How write batches are split and throttled to reduce rate limits and failure blast radius.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"sXmNQGPmpKgsUrcxlrjP","title":"Caching layers","pathname":"/blueprint-architecture/orchestrator/caching-layers","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Where snapshots can get stale across orchestrator caching, baselines, and provider-side caches.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"Z4QSDnQPvCnbbnL6jHKp","title":"State.json","pathname":"/blueprint-architecture/orchestrator/state-json","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"On-disk schema and semantics of /config/state.json (baselines, checkpoints, manual policy, metrics).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"hu8h2Z0UY1qPrfuPatwn","title":"Provider contract","pathname":"/blueprint-architecture/orchestrator/provider-contract","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Contract providers implement so the orchestrator can snapshot, plan, and apply changes safely.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"QIYFjuLYtkbmT4FbN0PO","title":"Provider specifics","pathname":"/blueprint-architecture/orchestrator/provider-specifics","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Real-world provider quirks that affect IDs, freshness, consistency, and write confirmations.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Orchestrator"}]},{"id":"qa6UKOy7HZxFp299NBoE","title":"Auth","pathname":"/blueprint-architecture/auth","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal docs for auth provider modules used by Settings → Authentication.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"0e3d897b8f0d6b5b48ac9a5d002cb0a42667d842","title":"Registry","pathname":"/blueprint-architecture/auth/registry","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Discovers auth provider modules and exposes manifests and HTML blocks to the UI/API.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"d24bf98c41bbd9a3fa0ddb64d91d5baac583df88","title":"_auth_ANILIST","pathname":"/blueprint-architecture/auth/_auth_anilist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal AniList auth provider module (OAuth flow + token storage).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"78514795b48ba8422b8496c72bd5c050664e4ac7","title":"_auth_base","pathname":"/blueprint-architecture/auth/_auth_base","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal base classes and shared helpers for auth provider implementations.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"acb69927a1bf7025958686f90f148775309d14cc","title":"_auth_EMBY","pathname":"/blueprint-architecture/auth/_auth_emby","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal Emby auth provider module (server URL + access token handling).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"4c390c496375354633a30843141266e9b8465a5b","title":"_auth_JELLYFIN","pathname":"/blueprint-architecture/auth/_auth_jellyfin","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal Jellyfin auth provider module (server URL + access token handling).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"68bed3085940b92b92e68f541ed51cc6c37de429","title":"_auth_MDBLIST","pathname":"/blueprint-architecture/auth/_auth_mdblist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal MDBList auth provider module (API key handling).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"40d8bc0c897e35c583f51c7b12bbf46cad4f60d9","title":"_auth_PLEX","pathname":"/blueprint-architecture/auth/_auth_plex","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal Plex auth provider module (PIN/device auth and token storage).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"676e3574fce42732eac2d239a2160f96d66f1f0e","title":"_auth_SIMKL","pathname":"/blueprint-architecture/auth/_auth_simkl","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal SIMKL auth provider module (device PIN flow and token refresh handling).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"7dc76c19b2a28c2da6df22b9ab8e141a8b4c1572","title":"_auth_TAUTULLI","pathname":"/blueprint-architecture/auth/_auth_tautulli","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal Tautulli auth provider module (server URL + API key handling).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"5a053bea1ac830709045eb94feec58f083c9f77c","title":"_auth_TMDB","pathname":"/blueprint-architecture/auth/_auth_tmdb","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal TMDb (Sync) auth provider module (API key + session flow).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"c3b71f8065fcc35f623ef376ff3c368a4ea05854","title":"_auth_TRAKT","pathname":"/blueprint-architecture/auth/_auth_trakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal Trakt auth provider module (device PIN flow and token refresh handling).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Auth"}]},{"id":"HoUHz5MpA8SP07IwzQHH","title":"Meta","pathname":"/blueprint-architecture/meta","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal docs for metadata modules that resolve IDs and enrich items (TMDb).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"dc3fc9bcf4f4858d05f49eb4cb367d5fe5ad104f","title":"Registry","pathname":"/blueprint-architecture/meta/registry","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal registry that discovers metadata modules and exposes manifests to the app.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Meta"}]},{"id":"eb30ecf17cdf8e2824bdaefa229807aeda43ff54","title":"_meta_TMDB","pathname":"/blueprint-architecture/meta/_meta_tmdb","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal TMDb metadata module (ID resolution and poster/backdrop URL support).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Meta"}]},{"id":"d2G9CCKO2pPf9H6B6GYd","title":"Sync","pathname":"/blueprint-architecture/sync","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Low-level sync provider modules under sync/ (used by the Orchestrator).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"BDEMyOVUXYBNQF9tc659","title":"Engine-level features","pathname":"/blueprint-architecture/sync/engine-level-features","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Shared feature semantics the orchestrator uses across providers.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"3eb90be751d4ffa1e5531007398c922256c1f1a7","title":"History","pathname":"/blueprint-architecture/sync/engine-level-features/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Watched-state feature. Uses watched_at timestamps when available.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"Engine-level features"}]},{"id":"afacfa5f8f93efba749eef7bf2566a62d026e905","title":"Ratings","pathname":"/blueprint-architecture/sync/engine-level-features/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Rating feature. Syncs rating values plus rated_at when available.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"Engine-level features"}]},{"id":"f15a82c9dbba4ee2503b5bb8a183d23575a9d3f7","title":"Watchlist","pathname":"/blueprint-architecture/sync/engine-level-features/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Set-like feature used for “plan to watch” lists.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"Engine-level features"}]},{"id":"JYaSOwNqdnIZBN5Q71sz","title":"_mod_ANILIST","pathname":"/blueprint-architecture/sync/_mod_anilist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync module for AniList (GraphQL). Watchlist only.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"7b90fbb4ff034b4d78301ef54c371a7b327bde07","title":"overview","pathname":"/blueprint-architecture/sync/_mod_anilist/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"AniList sync module overview (capabilities and key behaviors).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_ANILIST"}]},{"id":"9b2f62db5eefea4d1f3940a6e6a17df2454907e5","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_anilist/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"AniList watchlist feature implementation (anime watchlist reads and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_ANILIST"}]},{"id":"9ef8b707174c76ad3968cb5730adf47b7e57d110","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_anilist/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"AniList ratings feature implementation (if enabled) and behavior.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_ANILIST"}]},{"id":"f76986b53f5f68fa91ffc7ac27d6aaa597ab8a9c","title":"history","pathname":"/blueprint-architecture/sync/_mod_anilist/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"AniList history feature implementation (if enabled) and behavior.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_ANILIST"}]},{"id":"yCFNwoUt67dsH602gnTL","title":"_mod_CROSSWATCH","pathname":"/blueprint-architecture/sync/_mod_crosswatch","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Local file-backed tracker(watchlist/history/ratings).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"8b1fb02a9551bb558b654ef51d2928b7cf6b8f8c","title":"overview","pathname":"/blueprint-architecture/sync/_mod_crosswatch/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"CrossWatch local provider sync module overview (snapshots, restore, and persistence).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_CROSSWATCH"}]},{"id":"3f3ed6473770fcbb88ceb04ab89133f105feea3f","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_crosswatch/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"CrossWatch local provider watchlist feature (file-backed set semantics).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_CROSSWATCH"}]},{"id":"132c41803ec25b58ada879ba997277526e08a20b","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_crosswatch/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"CrossWatch local provider ratings feature (file-backed ratings store).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_CROSSWATCH"}]},{"id":"7b3a8293a21cb3e4863efde75eb2a0ad0ed27d56","title":"history","pathname":"/blueprint-architecture/sync/_mod_crosswatch/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"CrossWatch local provider history feature (file-backed watched events store).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_CROSSWATCH"}]},{"id":"JjJS0X5wKa8UCoQki63P","title":"_mod_EMBY","pathname":"/blueprint-architecture/sync/_mod_emby","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync module for Emby (MediaBrowser API).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"b9bd4148d1257affa96625a514155af4d7349309","title":"overview","pathname":"/blueprint-architecture/sync/_mod_emby/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Emby sync module overview (capabilities, setup links, and matching notes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_EMBY"}]},{"id":"43a002fec02583b047d80ca025068d9498090469","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_emby/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Emby watchlist feature implementation (favorites/playlist modes and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_EMBY"}]},{"id":"295cc49b4ca9612c36be654d8b4b4ba18373cd85","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_emby/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Emby ratings feature implementation and limitations.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_EMBY"}]},{"id":"1b792fd5730884bf9b02d905b62ae9e5e278bad5","title":"history","pathname":"/blueprint-architecture/sync/_mod_emby/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Emby history feature implementation (watched state indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_EMBY"}]},{"id":"26CdfgfK6QlD2qsQxSOS","title":"progress","pathname":"/blueprint-architecture/sync/_mod_emby/progress","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Emby progress feature implementation (resume position indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_EMBY"}]},{"id":"8894e0a8c6c0655a44b11dde4a70cdb1b5c0c04c","title":"_mod_JELLYFIN","pathname":"/blueprint-architecture/sync/_mod_jellyfin","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for Jellyfin (watchlist/history indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"a16286c28be0b96a13f0673d0980a98e12fa8f30","title":"overview","pathname":"/blueprint-architecture/sync/_mod_jellyfin/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Jellyfin sync module overview (capabilities, setup links, and matching notes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_JELLYFIN"}]},{"id":"3cb6a2c6fd78c8ebd936151734ff77e0c3e05219","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_jellyfin/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Jellyfin watchlist feature implementation (favorites/playlist modes and write behavior).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_JELLYFIN"}]},{"id":"5776f106e1a2b9fae4a620f8472b6a4de328a037","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_jellyfin/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Jellyfin ratings feature implementation and limitations.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_JELLYFIN"}]},{"id":"8699d1d2f28c769ff01cd637653dba8dbd7a7a92","title":"history","pathname":"/blueprint-architecture/sync/_mod_jellyfin/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Jellyfin history feature implementation (watched state indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_JELLYFIN"}]},{"id":"qOzDEWqQX3kLc4DJWkHr","title":"progress","pathname":"/blueprint-architecture/sync/_mod_jellyfin/progress","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Jellyfin progress feature implementation (resume position indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_JELLYFIN"}]},{"id":"f495c828c87856a3585f8011e21a444293045001","title":"_mod_MDBLIST","pathname":"/blueprint-architecture/sync/_mod_mdblist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for MDBList (watchlist/history/ratings indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"d27fffc1a6b93b9a6eed3dbbffb7044f6c8b607b","title":"overview","pathname":"/blueprint-architecture/sync/_mod_mdblist/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"MDBList sync module overview (capabilities, setup links, and rate-limit notes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_MDBLIST"}]},{"id":"dee7da1cef2dc6d71a89b8321293d51b782fa342","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_mdblist/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"MDBList watchlist feature implementation (indexing and batch writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_MDBLIST"}]},{"id":"67bcc4c5789e71bc01285412619a8b4077d6f791","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_mdblist/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"MDBList ratings feature implementation (indexing and batch writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_MDBLIST"}]},{"id":"d6d69e863988b6b1e8055a38bebf74eff7a69071","title":"history","pathname":"/blueprint-architecture/sync/_mod_mdblist/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"MDBList history feature implementation (watched/unwatched writes and pagination).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_MDBLIST"}]},{"id":"35fa1d8db98b0b38d8f267852d3687b2a8ac4dd2","title":"_mod_PLEX","pathname":"/blueprint-architecture/sync/_mod_plex","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for Plex (watchlist/history/ratings indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"8a95535915d34b646e554c9fe04679e0c58513d4","title":"overview","pathname":"/blueprint-architecture/sync/_mod_plex/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Plex sync module overview (capabilities, setup links, and matching behavior).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_PLEX"}]},{"id":"dafd4af7ae879a3bab5a6d0f8556efc72382d530","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_plex/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Plex watchlist feature implementation (Discover-driven reads and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_PLEX"}]},{"id":"1841b2de20cd65dd62afd14d2a74102aef0a5df5","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_plex/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Plex ratings feature implementation (indexing and rating writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_PLEX"}]},{"id":"0f1cfb9f4f6600ed87ed5c9e5282a72986f07732","title":"history","pathname":"/blueprint-architecture/sync/_mod_plex/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Plex history feature implementation (watched-state indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_PLEX"}]},{"id":"JBCbSjorou1JKzWxlYmQ","title":"progress","pathname":"/blueprint-architecture/sync/_mod_plex/progress","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Plex progress feature implementation (resume position indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_PLEX"}]},{"id":"6d90d0a66a006bf6af4d6a75e6db99e974447856","title":"_mod_SIMKL","pathname":"/blueprint-architecture/sync/_mod_simkl","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for SIMKL (activity-based indexing and batch writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"0b33ff409143a09977f3ae859b218da8570cb1da","title":"overview","pathname":"/blueprint-architecture/sync/_mod_simkl/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"SIMKL sync module overview (activities/watermarks, caching, and rate-limit notes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_SIMKL"}]},{"id":"f2fef07d6ae55ffca42ac0f92720a8ffa4c6f41f","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_simkl/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"SIMKL watchlist feature implementation (indexing and batch writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_SIMKL"}]},{"id":"9713789bcabdb456570b0e78927d26224c5f91cb","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_simkl/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"SIMKL ratings feature implementation (indexing, scale behavior, and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_SIMKL"}]},{"id":"eef5188343e4bf12d7ce8b73dec6c373acd8f6f7","title":"history","pathname":"/blueprint-architecture/sync/_mod_simkl/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"SIMKL history feature implementation (watched events indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_SIMKL"}]},{"id":"68281541dd94ac9aedcf339adc324bf706f6f3e4","title":"_mod_TAUTULLI","pathname":"/blueprint-architecture/sync/_mod_tautulli","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for Tautulli (Plex history import support).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"f2dd1629dc1b9645e62fd54083aa9741b5a0eda5","title":"overview","pathname":"/blueprint-architecture/sync/_mod_tautulli/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Tautulli sync module overview (history import behavior and limitations).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TAUTULLI"}]},{"id":"c33976a90d54333c607a3104b23b044d33682485","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_tautulli/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Tautulli watchlist feature placeholder and notes (if supported).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TAUTULLI"}]},{"id":"9810493c832aa090da4547e84ed4bf5e1c54752e","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_tautulli/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Tautulli ratings feature placeholder and notes (if supported).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TAUTULLI"}]},{"id":"5cf7f23f0e14f6ef35b9ddbb7673f2db26ac1fb1","title":"history","pathname":"/blueprint-architecture/sync/_mod_tautulli/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Tautulli history feature implementation (Plex play history import).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TAUTULLI"}]},{"id":"e6bf5515dedfa6c11624b72c68a7517ce3abc380","title":"_mod_TMDB","pathname":"/blueprint-architecture/sync/_mod_tmdb","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for TMDb account sync (watchlist/ratings indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"4a585675c6399e298c8e10ee03c85869b2c270eb","title":"overview","pathname":"/blueprint-architecture/sync/_mod_tmdb/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"TMDb sync module overview (account sync behavior and limitations).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TMDB"}]},{"id":"faac485b605b2324aa9b2d064cd2afac386941ac","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_tmdb/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"TMDb watchlist feature implementation (account watchlist reads and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TMDB"}]},{"id":"45725940c93cdb6423b7f12bd974ffc9ccb69999","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_tmdb/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"TMDb ratings feature implementation (account ratings reads and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TMDB"}]},{"id":"1ed66e33cc37825feccfaa4ff910bd5423b75362","title":"history","pathname":"/blueprint-architecture/sync/_mod_tmdb/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"TMDb history feature notes (if supported) and behavior.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TMDB"}]},{"id":"284be575c5a4659c13026f3002c4edbb0bd2f8a9","title":"_mod_TRAKT","pathname":"/blueprint-architecture/sync/_mod_trakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Sync engine module for Trakt (watchlist/history/ratings indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"}]},{"id":"98cb963e6c9574c7b3f4efce525cc75cd264ffd1","title":"overview","pathname":"/blueprint-architecture/sync/_mod_trakt/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Trakt sync module overview (ETag caching, batching, and rate-limit notes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TRAKT"}]},{"id":"4134ff1c5b5814ddb5faa9a34fbe771f6040f7cd","title":"watchlist","pathname":"/blueprint-architecture/sync/_mod_trakt/watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Trakt watchlist feature implementation (indexing, ETag caching, and batch writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TRAKT"}]},{"id":"63eb88af39fc6ff568fecd3758892d224933e6c5","title":"ratings","pathname":"/blueprint-architecture/sync/_mod_trakt/ratings","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Trakt ratings feature implementation (indexing and batch writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TRAKT"}]},{"id":"41ea8829828386733c45cd26ea8456d70608ddaf","title":"history","pathname":"/blueprint-architecture/sync/_mod_trakt/history","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Trakt history feature implementation (watched events indexing and writes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Sync"},{"label":"_mod_TRAKT"}]},{"id":"ZKipAQKido7lbKzgQOl6","title":"Scrobble","pathname":"/blueprint-architecture/scrobble","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Internal blueprint for the scrobble pipeline (event parsing, filtering, and sink dispatch).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"fPpWdBDVLRqzh6PS1Vvg","title":"Sink","pathname":"/blueprint-architecture/scrobble/sink","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble sink modules that send playback events to trackers (Trakt, SIMKL, MDBList).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"}]},{"id":"e77507a53969e752a38f921bed6920319f2e9715","title":"Sink: SIMKL","pathname":"/blueprint-architecture/scrobble/sink/sink-simkl","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble sink implementation for sending playback events to SIMKL.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Sink"}]},{"id":"35f77abab823feab173a9dcc666bb4c6ab8d3edf","title":"Sink: Trakt","pathname":"/blueprint-architecture/scrobble/sink/sink-trakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble sink implementation for sending playback events to Trakt.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Sink"}]},{"id":"a182d59572d3dd2cc189d6088c659c2613f84ecb","title":"Sink: MDBList","pathname":"/blueprint-architecture/scrobble/sink/sink-mdblist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble sink implementation for sending playback events to MDBList.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Sink"}]},{"id":"4upuGPRPjAr3yEz8ga31","title":"Providers","pathname":"/blueprint-architecture/scrobble/providers","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble provider modules that produce playback events (Plex, Jellyfin, Emby).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"}]},{"id":"c08625197b9ecdf3a083ca69e39b8a7ed04839d5","title":"Watch: PLEX","pathname":"/blueprint-architecture/scrobble/providers/watch-plex","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble provider implementation for Plex (live sessions and playback events).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Providers"}]},{"id":"f774eb511e0fe78d9dd5ebbfd4a17233580c9b5d","title":"Watch: Jellyfin","pathname":"/blueprint-architecture/scrobble/providers/watch-jellyfin","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble provider implementation for Jellyfin (live sessions and playback events).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Providers"}]},{"id":"1accd26accfb8ce60662811d313134bf4efa8179","title":"Watch: Emby","pathname":"/blueprint-architecture/scrobble/providers/watch-emby","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble provider implementation for Emby (live sessions and playback events).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Providers"}]},{"id":"72crByyCH2Y3pUt8ck27","title":"Webhooks","pathname":"/blueprint-architecture/scrobble/webhooks","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Legacy webhook-based scrobble integrations (deprecated; use Watcher when possible).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"}]},{"id":"c5b9be173a679d2aa1ded0c3ada629b7fb570f9a","title":"Webhook: embytrakt","pathname":"/blueprint-architecture/scrobble/webhooks/webhook-embytrakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Legacy webhook bridge for Emby → Trakt scrobbling (deprecated).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Webhooks"}]},{"id":"bf9984aa5561ac1745ce1d6a5f245fd0848b0303","title":"Webhook: jellyfintrakt","pathname":"/blueprint-architecture/scrobble/webhooks/webhook-jellyfintrakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Legacy webhook bridge for Jellyfin → Trakt scrobbling (deprecated).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Webhooks"}]},{"id":"5d5078618fa9dea3a90b3fae6f58174f77efb97f","title":"Webhook: plextrakt","pathname":"/blueprint-architecture/scrobble/webhooks/webhook-plextrakt","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Legacy webhook bridge for Plex → Trakt scrobbling (deprecated).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Webhooks"}]},{"id":"Ob2Wp4AKhR6NGtveGr45","title":"Services","pathname":"/blueprint-architecture/scrobble/services","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Scrobble service helpers and state files under /config/.cw_state (now playing, auto-remove, etc.).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"}]},{"id":"Mb2bC2WIXCBdqDZyxL51","title":"Overview","pathname":"/blueprint-architecture/scrobble/services/overview","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Overview of scrobble service state files under /config/.cw_state, including currently_watching and auto-remove dedupe.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Services"}]},{"id":"5de5e0b9039bc0b3b4ad51779b2bda58ee971613","title":"Auto remove watchlist","pathname":"/blueprint-architecture/scrobble/services/auto-remove-watchlist","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How Watcher can auto-remove items from watchlists on completion (and how it dedupes deletes).","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Services"}]},{"id":"7331cc2a7df3eb5da3a6bc949a959e09b5b850c4","title":"Currently watching","pathname":"/blueprint-architecture/scrobble/services/currently-watching","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"State file format and behavior for the “currently watching” scrobble output.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"},{"label":"Scrobble"},{"label":"Services"}]},{"id":"CVAvBiYYXzMFTNIT8qdS","title":"API","pathname":"/blueprint-architecture/api","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Use the CrossWatch REST API from your own self-hosted instance. Includes base URL and the OpenAPI reference link.","breadcrumbs":[{"label":"WIKI"},{"label":"Blueprint Architecture"}]},{"id":"DOcCuN4scxrT6zXJ3MQ6","title":"Community","pathname":"/related-information/community","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"reddit","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"}]},{"id":"3yfF484evbpSBvmNDRqb","title":"Install scripts","pathname":"/related-information/community/install-scripts","siteSpaceId":"sitesp_qHQlt","lang":"en","icon":"users","description":"Community-built install helpers and setup wrappers for CrossWatch.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"},{"label":"Community","icon":"reddit"}]},{"id":"6tCk3W4glgy2MHOTU0pI","title":"Proxmox LXC installer","pathname":"/related-information/community/install-scripts/proxmox-lxc-installer","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Deploy CrossWatch in an unprivileged Proxmox Debian 12 LXC with automated setup, persistent /config storage, and a built-in update command.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"},{"label":"Community","icon":"reddit"},{"label":"Install scripts","icon":"users"}]},{"id":"hc17S7nZw5qkS0n6kIF5","title":"Synology with Portainer or Dockhand","pathname":"/related-information/community/install-scripts/synology-with-portainer-or-dockhand","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Community guide for running CrossWatch on Synology with Portainer or Dockhand.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"},{"label":"Community","icon":"reddit"},{"label":"Install scripts","icon":"users"}]},{"id":"tSuRV0FFanrs101vQzw8","title":"Reverse proxies","pathname":"/related-information/reverse-proxies","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Configure NGINX (and similar proxies) for CrossWatch with correct webhook and WebSocket settings.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"}]},{"id":"gJBGMccbuwDkrKIivFVe","title":"Trackers vs. Media Servers","pathname":"/related-information/trackers-vs.-media-servers","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"How to choose a source of truth between trackers and media servers.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"}]},{"id":"ViMuMs0B2NrggXaHUilW","title":"Media Server to Media Server","pathname":"/related-information/media-server-to-media-server","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Why server-to-server syncing is fragile, when it can work, and the safety checks you need.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"}]},{"id":"fxB1DefDj0AYKbaW0GkV","title":"Tracker to Media Server","pathname":"/related-information/tracker-to-media-server","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Why syncing from a tracker into a media server is risky, and safer defaults for history and ratings.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"}]},{"id":"21nXswLSpox6jztHoEpN","title":"Trakt vs SIMKL (Free plans)","pathname":"/related-information/trakt-vs-simkl-free-plans","siteSpaceId":"sitesp_qHQlt","lang":"en","description":"Quick comparison of common free-plan limits that affect watchlists and lists.","breadcrumbs":[{"label":"WIKI"},{"label":"Related information"}]}]}