Select the program logo to display in the UI. Credits to @mrcuriousny for Plex-Inspired logo
Use compact view for statistics page
Hide the Patreon support message in the header
Loading help content...
Loading rate limit information...
Configure user interface preferences and appearance
Select the program logo to display in the UI. Credits to @mrcuriousny for Plex-Inspired logo
Use compact view for statistics page
Hide the Patreon support message in the header
Use 24-hour time format instead of 12-hour
Set your preferred date format. Click the info button to see available parameters.
Set your preferred time format. Click the info button to see available parameters.
Amount of items displayed for recently added on statistics page
Amount of items displayed for recently upgraded on statistics page
How many days back should be displayed on statistics page (0 = today, 7 = a week back)
How many days forward should be displayed on statistics page
Choose which provider's download stats to display on the Statistics page. Usenet shows cli_mount connection stats even when a debrid provider is also configured. Combined shows the total size and broken count across every debrid provider and usenet together.
Enable user account system
When enabled, the program will automatically start running when the application starts
When enabled, the program will skip the initialization process on startup. Useful for testing or manual control
Disable automatic browser launch on Windows systems
Enable web caching and compression for faster page loads. This improves performance by caching static assets (CSS, JavaScript, images) and compressing responses. Disable if experiencing issues with updates not appearing
Configure essential application settings
Debrid service provider
API key for the debrid service
Name debrid torrent folders in cli_mount's DFS mount using a structured format: {title} ({year}) - {imdb-id} - {version} - (original) for movies and {title} ({year}) - SxxExx - {episode title} - {imdb-id} - {version} - (original) for episodes. Requires cli_mount as the usenet provider (URL configured). Only renames the virtual folder in cli_mount โ the actual file on the debrid service is unchanged.
Include the version (e.g. Default, 4K Remux) in the debrid folder name when Debrid File Naming is enabled.
Include the content source display name in the debrid folder name when Debrid File Naming is enabled.
Additional debrid services tried in order when the primary provider fails (e.g. 451 DMCA block, rate limit). Each fallback needs its own API key.
Backend type. cli_mount uses custom endpoints (/api/add, /api/browse/nzbs); NzbDAV uses standard SAB query-string API (?mode=โฆ). Both expose the same client interface internally.
Two containers, one backend (same pattern as zurg + zurg_rclone): the nzbdav container is the downloader + WebDAV server; an rclone container mounts that WebDAV as a normal folder (e.g. /mnt/nzbdav) so Plex and cli-debrid can read the files as a path. You need both โ cli_mount only looked simpler because it bundled the mount internally.
Don't write these by hand: use the setup helper below โ it generates the docker-compose.yml (both containers) + rclone.conf + the config block for you, and can test the connection and create the required categories. The steps below are what it sets up:
docker compose up -d.movies, shows, movies_1080p_264, shows_1080p_264, __unplayable__. Missing categories โ grabs are rejected and loop in "Wanted".http://host:3000), API Token (the key from step 2), Download Folder = __unplayable__, NzbDAV Mount Path (where the rclone mount appears in this container, e.g. /mnt/nzbdav).content/movies, content/shows (+ _1080p_264) folders to your Plex libraries.Switching from cli_mount? Just set Provider to NzbDAV and update the URL/Token here โ your existing cli_mount files don't move. Run NzbDAV in parallel and let new grabs fill it (a hard mount-swap can make Plex purge "missing" items). To move existing downloads across, use Debug โ Library โ "Migrate between usenet providers" (in-app, both directions). For the cli_mountโNzbDAV direction it reads cli_mount's stored .nzb files, so bind cli_mount's appdata into cli-debrid (set cli_mount Data Path below) and the tool reads them from <data_path>/usenet/nzbs. (The host CLI nzbdav_setup.py migrate-files does the same from the shell.)
What you do vs. what's automatic: you type your paths/URL below and the tool writes the config files for you โ but you copy them to your host and run the shown docker compose commands yourself (cli-debrid runs in a container and can't create other containers). The only step this tool performs automatically is checking/creating the NzbDAV categories in section 2. Fields are prefilled from your saved settings; blank fields fall back to the placeholders.
โ most setups run both. Adds a small mergerfs "union" so cli-debrid sees debrid + usenet files under one path.
Union (debrid + usenet โ one mount): point both providers' rclone mounts under one host dir, and bind the union output into cli-debrid.
Once NzbDAV is running, verify cli-debrid can reach it and that the required categories exist (missing categories make grabs loop in "Wanted"). Uses the URL + token above.
/cli_mount_data) if you want backup/restore/cleanup tools.Do not use localhost:8888 โ that conflicts with Phalanx DB. Use the cli_mount host IP or container name.
Use the NzbDAV host IP or container name with its port (default 3000), e.g. http://192.168.1.x:3000. Do not append /sabnzbd โ NzbDAV serves its SAB-compatible API at the root /api.
Category/folder in cli_mount for downloads. Leave empty to use cli_mount's default download folder.
This is not a download destination โ it's the fallback category used only if the per-release title heuristic can't classify a grab. In practice the heuristic classifies everything (it auto-routes to movies / shows / music and the *_1080p_264 variants), so this almost never fires. Recommended value: __unplayable__ โ a category Plex doesn't scan, so any unclassifiable grab parks there harmlessly instead of polluting a library. This name (and every category the heuristic emits) must exist in NzbDAV's api.categories โ use the setup helper's "ensure categories" button above, or add them in NzbDAV โ Settings โ Categories.
Path to cli_mount's data directory inside the container. Add - /path/to/cli_mount/appdata:/cli_mount_data to your docker-compose volumes, then set this to /cli_mount_data. Required for cli_mount DB backup, restore, and cleanup tools โ and lets the in-app provider migration (Debug โ Library) read cli_mount's stored .nzb files from <data_path>/usenet/nzbs.
Path inside this container where the NzbDAV rclone-mount appears. NzbDAV has no /browse API, so folder lookups walk the filesystem under <this path>/content/<category>/. Bind-mount the nzbdav-rclone mount into the cli-debrid container at this same path. A trailing /__all__ is stripped automatically (zurg-path compatibility). Effectively required when provider is NzbDAV.
Comma-separated NzbDAV categories the broken-NZB repair tool may act on. NzbDAV history is shared with other SAB clients (e.g. Lidarr music) โ repair only re-acquires content cli-debrid manages, so it must never touch another app's entries. Leave empty to auto-pick the categories cli-debrid grabs into (plus the Download Folder fallback). Set only if your category names differ.
Comma-separated NzbDAV categories the repair tool must ignore (subtracted from the owned set). Use this if you point Radarr/Sonarr at the same NzbDAV and don't want cli-debrid touching their categories.
Maximum age of NZB results in days. Results older than this are filtered out at search time and never submitted to the Usenet provider. Set to 0 to disable. Applies everywhere NZB indexers are searched (queue, scraper results, upgrade hub, repair).
Reject NZB season packs entirely (movies are unaffected). A single damaged article in a season pack repairs the whole pack via a fresh grab; with this enabled, only aggregate/single-episode NZB results are considered, so a bad file only affects that one episode.
Connect to your Plex Media Server by signing in with your Plex account.
Select library management method. Note: On Windows systems, hardlinks will be used instead of symlinks when selecting Symlinked/Local option.
Path to the original files (in Zurg use the /__all__ folder).
Path to the destination folder (where you want your files linked to).
Select which media server to use for symlink updates.
Plex server URL for symlink updates (optional)
Plex authentication token (optional)
Comma-separated list of Plex movie library names or IDs (e.g., 'Movies,4K Movies' or '1,5')
Comma-separated list of Plex TV show library names or IDs (e.g., 'TV Shows,Anime' or '2,3')
Plex server URL
Plex authentication token
Comma-separated list of Plex movie library names or IDs (e.g., 'Movies,4K Movies' or '1,5')
Comma-separated list of Plex TV show library names or IDs (e.g., 'TV Shows,Anime' or '2,3')
Update Plex on file discovery (cli_debrid must be able to access mount at the below location)
The single path cli-debrid checks for file presence (in Zurg use the /__all__ folder). When you run more than one provider (e.g. Real-Debrid via zurg AND Usenet via NzbDAV), point this at one combined mount that contains all of them โ e.g. a mergerfs union of the providers' mounts โ so file checks succeed regardless of which provider holds the item. May differ from the per-provider mount path set under Usenet Provider.
Disable Plex library checks - if enabled use the mounted_file_location above to confirm file presence for Collection. If no file location indicated, immediately mark as Collected on addition. This setting is essentially a Local-Only mode, to allow for third party symlinking
URL for Emby or Jellyfin server (e.g. http://localhost:8096)
Authentication token for Emby or Jellyfin
Configure scraping profiles and preferences
Minimum size per file in GB.
Maximum size per file in GB. Leave empty for no limit.
Minimum bitrate per file in Mbps.
Maximum bitrate per file in Mbps. Leave empty for no limit.
Override global wake count limit. Leave empty to use global setting. Set to -1 to disable sleeping queue (only search once).
Only mark as Wanted after physical release date is available.
Preferred language code(s), comma-separated (e.g., fr, es, ja). The first language found will be used. See ISO 639-1.
Filter for anime content: 'None' (no filter), 'Anime Only', or 'Non-Anime Only'.
Parse Spanish Cap.XXYY episode format (e.g. Cap.701 โ S07E01) and match parenthesized alternative titles (e.g. 'El renacido (The Revenant)'). Enable for Spanish content.
Include alternative title aliases (filtered by Language Code) when checking title similarity.
Version to use if this one is blacklisted. Select 'None' to disable.
Enable version-specific scraper priority scoring. When enabled, these scores are added to the global scraper priority scores. This allows you to fine-tune scraper preferences per version without changing global settings.
Add bonus score for results from specific scrapers. These scores are added on top of the global scraper priority scores. Higher total scores = higher priority. Only enabled scrapers are shown.
Minimum size per file in GB.
Maximum size per file in GB. Leave empty for no limit.
Minimum bitrate per file in Mbps.
Maximum bitrate per file in Mbps. Leave empty for no limit.
Override global wake count limit. Leave empty to use global setting. Set to -1 to disable sleeping queue (only search once).
Only mark as Wanted after physical release date is available.
Preferred language code(s), comma-separated (e.g., fr, es, ja). The first language found will be used. See ISO 639-1.
Filter for anime content: 'None' (no filter), 'Anime Only', or 'Non-Anime Only'.
Parse Spanish Cap.XXYY episode format (e.g. Cap.701 โ S07E01) and match parenthesized alternative titles (e.g. 'El renacido (The Revenant)'). Enable for Spanish content.
Include alternative title aliases (filtered by Language Code) when checking title similarity.
Version to use if this one is blacklisted. Select 'None' to disable.
Enable version-specific scraper priority scoring. When enabled, these scores are added to the global scraper priority scores. This allows you to fine-tune scraper preferences per version without changing global settings.
Add bonus score for results from specific scrapers. These scores are added on top of the global scraper priority scores. Higher total scores = higher priority. Only enabled scrapers are shown.
Minimum size per file in GB.
Maximum size per file in GB. Leave empty for no limit.
Minimum bitrate per file in Mbps.
Maximum bitrate per file in Mbps. Leave empty for no limit.
Override global wake count limit. Leave empty to use global setting. Set to -1 to disable sleeping queue (only search once).
Only mark as Wanted after physical release date is available.
Preferred language code(s), comma-separated (e.g., fr, es, ja). The first language found will be used. See ISO 639-1.
Filter for anime content: 'None' (no filter), 'Anime Only', or 'Non-Anime Only'.
Parse Spanish Cap.XXYY episode format (e.g. Cap.701 โ S07E01) and match parenthesized alternative titles (e.g. 'El renacido (The Revenant)'). Enable for Spanish content.
Include alternative title aliases (filtered by Language Code) when checking title similarity.
Version to use if this one is blacklisted. Select 'None' to disable.
Enable version-specific scraper priority scoring. When enabled, these scores are added to the global scraper priority scores. This allows you to fine-tune scraper preferences per version without changing global settings.
Add bonus score for results from specific scrapers. These scores are added on top of the global scraper priority scores. Higher total scores = higher priority. Only enabled scrapers are shown.
None: Only take the best Cached result
Hybrid: Take the first best Cached result, and if no Cached results found, take the best Uncached result
Full: Take the best result, whether it's Cached or Uncached
Filter out releases marked as trash by the parser. These are typically low-quality or badly formatted releases.
Minimum calculated score for a scraped result to be considered. Scores are calculated based on version weights. Set to 0.0 to disable this filter (accept any score).
Enable upgrading of items in the queue
Percentage threshold for upgrading (enter as decimal representation of percentage,0.0 to 1.0). Higher values mean an item's score must be higher than the threshold to be upgraded.
Number of days to wait before attempting a single upgrade scrape on an item. Set to 0 to disable delayed upgrade scraping.
Enable cleanup of original items after successful upgrade (removes original item from Debrid Provider)
Filter out adult content
For anime, prefer the release SeaDex (releases.moe) has confirmed as best for that title over cli-debrid's own scoring. Only applies to items detected as anime, and only within versions whose Anime Filter Mode is not 'Non-Anime Only'. Requires an internet connection to releases.moe and api.ani.zip during scraping.
Check Trakt for early releases
Enable Trakt API rate limiting to prevent 429 errors. Automatically detects VIP/Free tier and adjusts limits. Recommended: enabled.
Timeout in seconds for scraping process (0 to disable)
If an item was released within the last X hours, accept uncached releases. Set to 0 to disable.
Manage your content sources and lists
Optional: Specify a custom subfolder within the main symlink root directory for items from this source. If set, items will be placed in '[Symlink Root]/[Custom Subfolder]/...' instead of directly in '[Symlink Root]/...'. Leave empty for default behavior.
Only process content with a release date greater than this date (YYYY-MM-DD format) or within the last X days (e.g., '30' for 30 days ago). Leave empty to process all content.
List of genres to exclude from this content source. Items with any of these genres will be skipped during content processing.
Maximum number of items to process from this content source. Leave empty or set to 0 for no limit.
Plex mode only: Tags embedded in NZB filenames for cli_mount virtual folder routing.
Allow processing of Season 0 (Specials) for shows added via this source.
When enabled, items in Blacklisted state (not ghostlisted) will be unblacklisted and re-queued as Wanted when this source runs.
Configure automatic Plex label assignment for items from this source. Labels help organize your Plex library and can be used for collections or filtering. More Plex label functions can be found on debug functions page.
Enable automatic Plex label application for this source
Label mode: 'list_name' uses the source name automatically, 'fixed' uses a static label you specify
Fixed label(s) to apply (only used when label_mode is 'fixed'). Supports comma-separated values for multiple labels (e.g., 'ufc,ppv')
Optional: Specify a custom subfolder within the main symlink root directory for items from this source. If set, items will be placed in '[Symlink Root]/[Custom Subfolder]/...' instead of directly in '[Symlink Root]/...'. Leave empty for default behavior.
Only process content with a release date greater than this date (YYYY-MM-DD format) or within the last X days (e.g., '30' for 30 days ago). Leave empty to process all content.
List of genres to exclude from this content source. Items with any of these genres will be skipped during content processing.
Maximum number of items to process from this content source. Leave empty or set to 0 for no limit.
Plex mode only: Tags embedded in NZB filenames for cli_mount virtual folder routing.
Loading users from Overseerr...
Select which Overseerr users' requests this source should process. All users (normal behavior) processes every request. Each user group with a different version preference should have its own content source.
Allow processing of Season 0 (Specials) for shows added via this source.
When enabled, items in Blacklisted state (not ghostlisted) will be unblacklisted and re-queued as Wanted when this source runs.
Configure automatic Plex label assignment for items from this source. Labels help organize your Plex library and can be used for collections or filtering. More Plex label functions can be found on debug functions page.
Enable automatic Plex label application for this source
Label mode: 'requester' uses requester display name automatically, 'fixed' uses a static label you specify
Fixed label(s) to apply (only used when label_mode is 'fixed'). Supports comma-separated values for multiple labels (e.g., 'ufc,ppv')
Optional: Specify a custom subfolder within the main symlink root directory for items from this source. If set, items will be placed in '[Symlink Root]/[Custom Subfolder]/...' instead of directly in '[Symlink Root]/...'. Leave empty for default behavior.
Only process content with a release date greater than this date (YYYY-MM-DD format) or within the last X days (e.g., '30' for 30 days ago). Leave empty to process all content.
List of genres to exclude from this content source. Items with any of these genres will be skipped during content processing.
Maximum number of items to process from this content source. Leave empty or set to 0 for no limit.
Plex mode only: Tags embedded in NZB filenames for cli_mount virtual folder routing.
Allow processing of Season 0 (Specials) for shows added via this source.
When enabled, items in Blacklisted state (not ghostlisted) will be unblacklisted and re-queued as Wanted when this source runs.
Configure automatic Plex label assignment for items from this source. Labels help organize your Plex library and can be used for collections or filtering. More Plex label functions can be found on debug functions page.
Enable automatic Plex label application for this source
Label mode: 'list_name' uses the source name automatically, 'fixed' uses a static label you specify
Fixed label(s) to apply (only used when label_mode is 'fixed'). Supports comma-separated values for multiple labels (e.g., 'ufc,ppv')
Optional: Specify a custom subfolder within the main symlink root directory for items from this source. If set, items will be placed in '[Symlink Root]/[Custom Subfolder]/...' instead of directly in '[Symlink Root]/...'. Leave empty for default behavior.
Only process content with a release date greater than this date (YYYY-MM-DD format) or within the last X days (e.g., '30' for 30 days ago). Leave empty to process all content.
List of genres to exclude from this content source. Items with any of these genres will be skipped during content processing.
Maximum number of items to process from this content source. Leave empty or set to 0 for no limit.
Plex mode only: Tags embedded in NZB filenames for cli_mount virtual folder routing.
Loading users from Overseerr...
Select which Overseerr users' requests this source should process. All users (normal behavior) processes every request. Each user group with a different version preference should have its own content source.
Allow processing of Season 0 (Specials) for shows added via this source.
When enabled, items in Blacklisted state (not ghostlisted) will be unblacklisted and re-queued as Wanted when this source runs.
Configure automatic Plex label assignment for items from this source. Labels help organize your Plex library and can be used for collections or filtering. More Plex label functions can be found on debug functions page.
Enable automatic Plex label application for this source
Label mode: 'requester' uses requester display name automatically, 'fixed' uses a static label you specify
Fixed label(s) to apply (only used when label_mode is 'fixed'). Supports comma-separated values for multiple labels (e.g., 'ufc,ppv')
Configure optional features and customizations
TMDB API key - used for poster retrieval and release date supplementation when TVDB is primary metadata source (not 'API Read Access Token')
Content rating region - select which country's certification system to display (e.g., US: R, PG-13 | GB: 15, 12A | CA: 14A, 18A)
TVDB v4 API key - when set, uses TVDB instead of Trakt for metadata lookups. A TMDB API key is also required for full release date support (digital/physical). Get a key at thetvdb.com/api-information
MDBList API key - enables curated lists from IMDB, Trakt, Netflix, Disney+, and more on the Discover page, and is required for MDBList content sources that use an API endpoint (watchlist / username+list name / list ID). Get your API key at mdblist.com/preferences
How long to cache MDBList data (in hours). Lower values mean fresher data but more API calls.
Trakt is an optional integration used for Trakt-based content sources (Watchlist, Lists, Collection) and as a metadata fallback. Please create an application at Trakt Applications if you have not yet done so. All you need to add is a Name, and the Redirect URI which is:
urn:ietf:wg:oauth:2.0:oobTrakt client ID
Trakt client secret
Click the button below to authorize Trakt. You must first have entered your Client ID and Client Secret above (after creating an application).
Your authorization code is:
Please visit https://trakt.tv/activate to enter this code and complete the authorization process.
Scrob is an optional self-hosted Trakt alternative (ellite/scrob) used for Scrob-based content sources (Lists, Collection, Special Lists). Enter your instance's base URL and an API key from Settings โ Connections โ API Key in the Scrob UI. This connection is shared by every Scrob content source below โ no need to re-enter it per source.
The API key covers everything needed to sync content into cli_debrid. Username and password are optional and only used so cli_debrid can also remove items from Scrob when you delete them from your library โ Scrob's API only allows deletions from a logged-in session, not an API key. Leave these blank if you don't need that.
Base URL of your self-hosted Scrob instance, e.g. http://192.168.1.24:7330
Scrob API key (Settings โ Connections โ API Key in the Scrob UI). Shared by all Scrob content sources (Lists, Collection, Special) below. Used for all read operations (syncing Lists, Collection, and Special Lists into cli_debrid).
Optional: your Scrob login username. Only needed if you want cli_debrid to remove items from Scrob Lists/Collection when you delete them from your library โ Scrob's API key cannot authorize deletions, only a logged-in session can. Leave blank to skip deletion sync (syncing content in still works fine with just the API key above).
Optional: your Scrob login password, paired with the username above. Only used to obtain a session token for removing items from Scrob when deleted in cli_debrid โ never sent anywhere else. Leave blank to skip deletion sync.
Sort order for the scraping queue
Apply secondary sorting by release date (newest first) after primary sort (content source/type). Items with unknown dates appear last.
Priority order for content sources in the scraping queue (comma-separated list). Content sources not listed will be processed last.
Number of times to wake items before blacklisting
Duration in minutes an item sleeps before the next wake attempt
Hours to wait before performing one final scrape attempt after an item would normally be blacklisted. Set to 0 to disable.
Hours after midnight to start scraping for new movies
Offset from the show's airtime to start scraping for new episodes. Positive values are to delay scraping, negative values are to scrape early. Requires Trakt login for accurate airtime, otherwise default of 19:00 will be used.
Enable pausing the queue during a scheduled time frame
Number of concurrent worker threads for queue processing tasks (Adding, Checking, Scraping etc.). Higher values process more items in parallel but use more CPU/memory. Recommended: 1 for slow/older machines, 2 for normal, 3 for fast machines. Takes effect after saving (no restart required).
Start time for scheduled queue pause (HH:MM format)
End time for scheduled queue pause (HH:MM format)
Amount of time (in seconds) to sleep after each task execution to reduce system load. This enforces a minimum delay between tasks. Default: 0.0 (no delay).
Number of days before release date to start scraping for movies. For example, setting to 3 will start scraping movies 3 days before their release date. Set to 0 to disable pre-release scraping.
CPU usage percentage threshold to trigger an increase in sleep time.
RAM usage percentage threshold to trigger an increase in sleep time.
Amount of time (in seconds) to increase the sleep duration by when load is high.
Amount of time (in seconds) to decrease the sleep duration by when load is normal.
The maximum sleep time (in seconds) that auto-regulation can set.
Automatically add deleted shows and movies to the ghostlist to prevent them from being re-added. When enabled, deleting a show will mark it as ghosted in the database. When disabled, deleted shows can be re-added by content sources.
Remove items from content sources (Trakt, Overseerr, etc.) during deletion. Enable when ghostlist OFF (prevents re-addition, slower). Disable when ghostlist ON (faster, ghostlist already prevents re-addition).
Hide Season 0 (Specials) tab and its episodes from the TV show page.
Remove all cached posters and backdrops. Artwork will be re-downloaded from the primary source on next library load.
Hide items without a rating from discover results
Hide items without a poster image from discover results
Only show items that are not in your library (hide items already in database)
Where to route when clicking on TV shows not in library (movies always go to Discover details)
Hide TV show specials (Season 0) from the Discover details page season list
Enable the poster overlay system. When enabled, overlay sync tasks will automatically run and apply media info badges to Plex posters. Requires Plex URL and token to be configured.
When enabled, cli_debrid will fetch a language-neutral (textless) poster from TMDB as the base image. Use the Title Logo badge in the layout editor to add the title as a transparent clearlogo PNG. Note: Not all titles have textless posters on TMDB โ the standard English poster is used as fallback.
Path to the Plex Media Server data directory (e.g. /config/Library/Application Support/Plex Media Server). Required for the poster cleanup task to delete old uploaded overlay versions directly from the filesystem.
How often (in days) to re-fetch ratings (IMDb/TMDB/Trakt/RT) and show status from the MDBList API to detect changes that should trigger an overlay refresh. Set to 0 to check every sync run. Default is 7 days. Version count changes are always checked every sync regardless of this setting.
Maximum number of shows/movies to process per overlay sync run. Higher values clear backlogs faster but each run takes longer. Default is 200.
Enable Radarr/Sonarr API spoofing for Bazarr subtitle integration. When enabled, cli_debrid will expose API endpoints that allow Bazarr to connect as if this were Radarr/Sonarr.
API key for Bazarr authentication. Click 'Generate' to create a new key, or enter your own. This key must be used when configuring Bazarr.
Which service to emulate. 'Auto' exposes both Radarr (movies) and Sonarr (TV) endpoints.
Version number to report to Bazarr. Change only if Bazarr requires a specific version.
Bazarr Configuration
URL: http://your-host:5000
API Key: (copy from above)
In Bazarr, add a new Radarr/Sonarr connection using the URL and API key above. Bazarr will then be able to discover your collected movies and TV shows.
Enable the Phalanx database feature. This is a shared database that tracks cache status by hash.
Enabling or disabling the Phalanx DB requires a program restart for the changes to take full effect and for the Phalanx DB service to start/stop accordingly.
If you change any symlink settings (templates, folder names, organization options), please use the "Resync Symlinks with New Settings" function on the Debug page to update your existing symlink structure.
Template for movie symlink filenames
Template for episode symlink filenames
{title} - Movie/show title{year} - Release year{imdb_id} - IMDb ID (recommended){tmdb_id} - TMDb ID{version} - Quality/version info{original_filename} - Original filename (no ext){content_source} - Content source{resolution} - Video resolution{season_number} - Season number{episode_number} - Episode number{episode_title} - Episode title{season_year} - Year season first aired{season_number:02d} - Zero-padded (01, 02){episode_number:02d} - Zero-padded (01, 02)
Important: Including {imdb_id} in templates is highly recommended for symlink recovery and media server integration.
Organize symlinked files by resolution (e.g., 1080p, 2160p) before media type folders
Organize symlinked files by version (e.g., Remux, WEB-DL) before media type folders. This is a new setting that will be used by symlink_folder_order.
Drag and drop to customize the order of organizational folders (e.g., Version, Resolution, Content Type). The individual "Organize By X" toggles still control if a specific folder component is actually included in the path.
Current order (saved): type,version,resolution
Enable separate folders for anime content
Enable separate folders for documentary content
Name of the movies folder
Name of the TV shows folder
Name of the anime movies folder
Name of the anime TV shows folder
Name of the documentary movies folder
Name of the documentary TV shows folder
Examples show the path relative to your 'Symlinked Files Path'. Refresh might be needed if base path changes. Path length truncation is not simulated in this preview.
Enable automatic subtitle downloading for media files. Requires Symlink File Management. Activate with caution as the Subtitle downloader adds 2-3 seconds of overhead per file processed. Consider instead filtering for MULTI releases with the language of your preference.
OpenSubtitles username for subtitle downloads
OpenSubtitles password for subtitle downloads
Comma-separated list of language codes (e.g., eng,zho,spa). Uses ISO-639-3 codes.
Before searching for subtitles, probe the file with ffprobe to detect embedded tracks. If all configured languages are already embedded, the external search (and Bazarr notification) is skipped. Requires ffprobe. Note: probing reads from the debrid mount โ ensure your mount is stable before enabling.
Enable running a custom script during post-processing
Absolute path to your custom post-processing script
Arguments template for the script. Available variables: {title}, {year}, {type}, {imdb_id}, {location_on_disk}, {original_path_for_symlink}, {state}, {version}
Enable the AI Butler chat widget on all pages. Requires OpenClaw to be installed and configured. Works best with a paid AI API (e.g. OpenAI, Anthropic, Gemini) โ free tier models may lack the context window or tool-calling capability needed for reliable responses.
URL of your OpenClaw instance. OpenClaw handles AI provider selection and session memory.
Bearer token for OpenClaw authentication. Leave blank if OpenClaw has no auth configured.
OpenClaw agent ID to use (default: main).
Send proactive alerts via your notification channels when the AI Butler detects issues (stuck queues, high blacklist rate, errors, etc.).
How often the AI Butler runs background health checks. Minimum 300 (5 minutes). Default 900 (15 minutes).
Allow the AI to read your full settings schema and suggest or apply configuration changes via the chat. When enabled, the AI can send APPLY_SETTING blocks that let you update settings with a single click, and it is given the list of all writable settings keys. Disabling this means the AI will still answer questions but cannot propose or apply any setting changes โ useful if you want a read-only assistant.
Allow the AI Health Monitor to run background checks every few minutes and push plain-English alerts to your notification channels (Telegram, Discord, etc.) when it detects problems such as stuck queues, high blacklist rates, excessive errors, or a large database. Disabling this stops all automatic health checks and alerts โ you can still ask the AI about health manually in the chat.
Allow the AI to recommend content based on your watch history and collected library, and add items directly to your wanted list via the chat with a single click. When enabled, the AI receives a summary of your recently watched and collected titles for context, and can generate ADD_TO_LIBRARY cards. Disabling this removes watch/library context from the AI prompt and disables the add-to-library action โ the AI will still answer general questions but won't know what you have watched.
Record significant user actions (running wanted sources, triggering upgrade scans, pausing queues, adding library items) in the background and surface pattern summaries to the AI. With this enabled, the AI can notice that you run a source every morning and suggest automating it, or spot that you frequently remove the same type of item from the blacklist and recommend a settings change. Disabling this stops all habit recording and removes the pattern summary from the AI context โ no data is deleted, it just won't be updated or shown to the AI.
When enabled, the AI receives your full configuration (up to 15 000 chars), extended log tails (up to 20 000 chars), upgrade activity history, and recent notification logs โ giving it the most complete picture of your setup for accurate diagnostics and suggestions. Secrets (API keys, tokens, passwords) are always redacted regardless of this setting. When disabled, the AI only receives a short config excerpt (2 000 chars) and a brief log tail (3 000 chars), which reduces context sent to the AI provider but may result in less accurate advice.
Apply a Plex label to items added to your library via the AI Butler.
Fixed: apply the same label to all AI Butler additions.
Label to apply to all items added via AI Butler. Comma-separated for multiple labels.
Downloads a pre-configured OpenClaw skill file with your URL and API token already filled in. Drop it into ~/.openclaw/skills/ on your OpenClaw machine, then reload OpenClaw. Your agent will then be able to answer questions about your library from external messengers like Telegram or Discord.
Note: This skill requires cli_debrid to be publicly accessible โ it cannot work via an internal IP only. Exposing cli_debrid publicly means anyone with your token can control it, so User Management must be enabled before downloading. For best security, use OIDC/SSO (e.g. Authentik) rather than local accounts.
Apply a custom poster design to Plex's built-in smart collections (genre, network, language collections, etc). Enable the collections below and configure the shared poster design. The task runs every 24 hours โ you can also trigger it manually.
Force reapply the poster for an individual enabled smart collection immediately.
Check collections to apply the shared poster design below:
Select a custom poster for all enabled smart collections. Leave on "None" to use Plex's default.
Accent color used throughout the poster design. Leave unset to use the layout's default color.
Dark gradient fade at the bottom of each card inside the poster. Higher = darker fade over the card art.
Intensity of the accent color glow around the edges of the poster background.
How far the accent color glow spreads. Default 55. Higher values spread the color across more of the poster.
Small text above the collection title on the poster. Leave blank to hide.
Icon shown on the poster. Leave blank to use the source default icon.
Automatically creates Plex collections for movie box sets using TMDB collection data. Applies TMDB collection posters (or a rendered fallback) and optionally queues missing movies.
{title} is the franchise name (e.g. The Godfather). Examples: {title} Collection, {title} Box SetForce a collection to reapply its poster on the next run. This only clears the fingerprint โ run the task manually or wait for the scheduled run.
Configure advanced and debug options
Logging level for console output and file logging
Override system timezone (e.g. 'America/New_York', 'Europe/London'). Leave empty to use system timezone.
Enable Python's tracemalloc for detailed memory usage tracking per task. Adds overhead, use only for debugging memory leaks.
Sample rate for tracemalloc (1 in X tasks). Lower values give more frequent data but increase overhead significantly. Default: 100.
Check for updates and display update indicator in header
Allow the use of symlinks on Windows. WARNING: Creating symlinks on Windows requires administrator privileges or Developer Mode to be enabled.
Skip Plex initial collection scan
Enable caching of Plex removal operations before executing them
Delay in minutes before processing a cached Plex removal operation. Default: 360 (6 hours).
Absolute path to your CineSync MediaHub main.py file (e.g. /path/to/CineSync/MediaHub/main.py)
Enable checking and fixing of unmatched or incorrectly matched items in Plex during collection scans
Add path prefixes that identify NAS or network drive locations (e.g. /MySamsungNAS_Movies/). Used to detect and optionally filter NAS items in Debrid Manager and other tools. If none are configured, smart detection is used as a fallback.
Do not add Plex watch history items to queue
Disable content source caching
Enable granular version additions for Wanted items
Sort results by uncached status over cached status
Checking queue max period (in seconds) before moving items back to Wanted queue
Ignore Wanted Queue throttling limits (WANTED_THROTTLE_SCRAPING_SIZE and SCRAPING_QUEUE_MAX_SIZE). Allows Wanted queue to move all eligible items to Scraping regardless of Scraping queue size. USE WITH CAUTION.
Disable the not wanted check for items in the queue
Allow partial show requests from Overseerr
Maximum allowed upgrading score. Upgrades will be disabled once this score is reached. Set to 0 to disable this limit.
Duration in hours to keep items in the upgrade queue before moving them to Collected state (default: 24)
Only download subtitles for the current file being processed (instead of scanning all folders)
Enable library maintenance task to run periodically. This is a destructive process and should be used with caution
List of filenames or folder names to filter out, comma separated
Character to use when replacing invalid characters in filenames (default: '_'). Must be a valid character for both Windows and Linux filesystems.
Check to enable automatic unblacklisting of items after their blacklist duration.
Number of days after which to automatically remove blacklisted items for a re-scrape, if enabled
Only unblacklist items with a release date greater than this date (YYYY-MM-DD format) or within the last X days (e.g., '30' for 30 days ago). Leave empty to process all blacklisted items for unblacklisting.
Truncate episode notifications to show only the first episode and a summary of the rest.
Enable detailed information in notifications including content source and content source details
Remove items from Plex Watchlist when they have been collected (only works with My Plex Watchlist and Other Plex Watchlist sources)
Keep series in Plex Watchlist when they have been collected, only delete movies
Remove items from Trakt Watchlist when they have been collected
Keep series in Trakt Watchlist when they have been collected, only delete movies
Template for movie symlink names. Available variables: {title}, {year}, {imdb_id}, {tmdb_id}, {quality}, {original_filename}
Template for episode symlink names. Available variables: {title}, {year}, {imdb_id}, {tmdb_id}, {season_number}, {episode_number}, {episode_title}, {version}, {original_filename}
Use AniDB to rename anime episodes instead of Trakt metadata (symlinking only)
Create separate anime folders for anime content when organizing symlinks
Create separate documentary folders for documentary content when organizing symlinks
Custom name for the Movies folder (default: 'Movies')
Custom name for the TV Shows folder (default: 'TV Shows')
Custom name for the Anime Movies folder (default: 'Anime Movies')
Custom name for the Anime TV Shows folder (default: 'Anime TV Shows')
Custom name for the Documentary Movies folder (default: 'Documentary Movies')
Custom name for the Documentary TV Shows folder (default: 'Documentary TV Shows')
Apply subtitle downloads to anime TV show folders (if separate anime folders are enabled)
Apply subtitle downloads to documentary movie folders (if separate documentary folders are enabled)
Apply subtitle downloads to documentary TV show folders (if separate documentary folders are enabled)
Allow the use of symlinks on Windows. WARNING: Creating symlinks on Windows requires administrator privileges or Developer Mode to be enabled.
Ultimate sort order for scraped results. Recommend leaving off and using existing versioning logic
If enabled, apply the assigned max size to the scraped results, but if no results are returned accept the smallest result available
Emphasize the number of items over quality when ranking results
If enabled, only accept results above the minimum scrape score for a limited period before accepting lower scored releases.
Time limit (in hours) to only accept results above the minimum scrape score before accepting lower scored releases.
Minimum scrape score to accept results above.
Scale final scores to a range of 0-100
Enable reverse order scraping
Enable alternate scraping time strategy: Instead of scraping based on queue offsets/airtime/release date, scrape all items with release dates and airtimes within the past 24 hours of the user-identified time each day.
24-hour time (HH:MM) to use as the daily scrape time for the alternate scraping strategy. Only used if alternate strategy is enabled.
Skip the initial multi-provider scrape for new content (released within the past 7 days).
Staleness threshold for metadata (in days)
Character to use when replacing invalid characters in filenames (default: '_'). Must be a valid character for both Windows and Linux filesystems.
Enable crash testing functionality
Override Content Source checking period (in minutes) - note that a minimum of 5 minutes is recommended
Manage notification channels and preferences
Truncate episode notifications to show only the first episode and a summary of the rest.
Select content sources to include in notifications. Leave empty to include all sources. Hold Ctrl/Cmd to select multiple sources. The filtering works with both backend IDs and display names.
Configure reverse parser default version assignment
Advanced debugging and experimental options
Ultimate sort order for scraped results. Recommend leaving off and using existing versioning logic
If enabled, apply the assigned max size to the scraped results, but if no results are returned accept the smallest result available
Sort results by uncached status over cached status
Emphasize the number of items over quality when ranking results
If enabled, only accept results above the minimum scrape score for a limited period before accepting lower scored releases.
Time limit (in hours) to only accept results above the minimum scrape score before accepting lower scored releases.
Minimum scrape score to accept results above.
Checking queue max period (in seconds) before moving items back to Wanted queue
Ignore Wanted Queue throttling limits. Allows Wanted queue to move all eligible items to Scraping regardless of Scraping queue size. USE WITH CAUTION.
Disable the not wanted check for items in the queue
Enable reverse order scraping
Enable alternate scraping time strategy: Instead of scraping based on queue offsets/airtime/release date, scrape all items with release dates and airtimes within the past 24 hours of the user-identified time each day.
24-hour time (HH:MM) to use as the daily scrape time for the alternate scraping strategy. Only used if alternate strategy is enabled.
Skip the initial multi-provider scrape for new content (released within the past 7 days).
Allow the use of symlinks on Windows. WARNING: Creating symlinks on Windows requires administrator privileges or Developer Mode to be enabled.
Override the system timezone (e.g. 'America/New_York')
Path to Cinesync installation
Delay in minutes before processing a cached Plex removal operation. Default: 360 (6 hours).
Sample rate for tracemalloc (1 in X tasks). Lower values give more frequent data but increase overhead significantly. Default: 100.
Staleness threshold for metadata (in days)
Disable caching for content sources
Character to use when replacing invalid characters in filenames (default: '_'). Must be a valid character for both Windows and Linux filesystems.
Maximum allowed upgrading score. Upgrades will be disabled once this score is reached. Set to 0 to disable this limit.
Enable crash testing functionality
Manage your scraper configurations
Scraper Priority: Drag and drop scrapers using the โฎโฎ handle to set their priority order. Scrapers at the top of the list receive higher priority scores, making their results rank better in search results. The last enabled scraper receives a score of 0, with each scraper above it getting +10 points. This helps you prioritize trusted or faster scrapers without changing other settings.
AIOStreams Stremio Endpoint Configuration Requirements:
AIOStreams requires specific configuration in ADVANCED mode to work properly with CLI-Debrid. Follow these steps in your AIOStreams settings:
1. Install P2P-Compatible Addons
Important: Enabling "P2P" in AIOStreams does NOT establish actual peer-to-peer torrent connections like traditional torrent clients. It simply filters for torrent-based streams (infohashes) that CLI-Debrid can send to your debrid service just like all the other scrapers. All downloading is handled securely through your debrid provider, not through direct P2P connections.
2. Configure Stream Type Filters
3. Set Custom Description Format
{stream.message::exists["โน๏ธ {stream.message}"||""]}
{stream.title::exists["๐ {stream.title::title}"||""]}{stream.year::exists[" ({stream.year})"||""]}{stream.seasonEpisode::exists[" {stream.seasonEpisode::join(' โข ')}"||""]}
{stream.filename::exists["โน๏ธ {stream.filename}"||""]}
{stream.infoHash::exists["โน๏ธ {stream.infoHash}"||""]}
{addon.name::exists["โน๏ธ {addon.name}"||""]}
{stream.indexer::exists["โน๏ธ {stream.indexer}"||""]}
{stream.quality::exists["๐ฅ {stream.quality} "||""]}{stream.encode::exists["๐๏ธ {stream.encode} "||""]}{stream.releaseGroup::exists["๐ท๏ธ {stream.releaseGroup}"||""]}
{stream.visualTags::exists["๐บ {stream.visualTags::join(' โข ')} "||""]}{stream.audioTags::exists["๐ง {stream.audioTags::join(' โข ')} "||""]}{stream.audioChannels::exists["๐ {stream.audioChannels::join(' โข ')}"||""]}
{stream.size::>0["๐ฆ {stream.size::bytes} "||""]}{stream.folderSize::>0["/ ๐ฆ {stream.folderSize::bytes}"||""]}{stream.duration::>0["โฑ๏ธ {stream.duration::time} "||""]}{stream.age::exists["๐
{stream.age} "||""]}{stream.indexer::exists["๐ {stream.indexer}"||""]}
{stream.languageEmojis::exists["๐ {stream.languageEmojis::join(' / ')}"||""]}
4. Optimize Your Filters
5. Increase Scraper Timeout (Important!)
Note: Without proper configuration, AIOStreams will not return usable results. The custom description template is required for CLI-Debrid to extract addon and indexer information.
| Code | Description | Example |
|---|---|---|
| %Y | Year with century (4 digits) | 2024 |
| %y | Year without century (2 digits) | 24 |
| %m | Month as zero-padded number | 01-12 |
| %B | Full month name | January, February |
| %b | Abbreviated month name | Jan, Feb |
| %d | Day of month as zero-padded number | 01-31 |
| %-d | Day of month without padding | 1-31 |
| %j | Day of year as zero-padded number | 001-366 |
| %-j | Day of year without padding | 1-366 |
| Code | Description | Example |
|---|---|---|
| %A | Full weekday name | Monday, Tuesday |
| %a | Abbreviated weekday name | Mon, Tue |
| %w | Weekday as number (0=Sunday) | 0-6 |
| %u | Weekday as number (1=Monday) | 1-7 |
| Code | Description | Example |
|---|---|---|
| %H | Hour (24-hour) zero-padded | 00-23 |
| %-H | Hour (24-hour) without padding | 0-23 |
| %I | Hour (12-hour) zero-padded | 01-12 |
| %-I | Hour (12-hour) without padding | 1-12 |
| %M | Minute zero-padded | 00-59 |
| %-M | Minute without padding | 0-59 |
| %S | Second zero-padded | 00-59 |
| %-S | Second without padding | 0-59 |
| %f | Microsecond (6 digits) | 000000-999999 |
| %p | AM/PM | AM, PM |
| Code | Description | Example |
|---|---|---|
| %z | UTC offset | +0100, -0700 |
| %Z | Timezone name | UTC, EST, PST |
| Format | Description | Example Output |
|---|---|---|
| %Y-%m-%d | ISO date format | 2024-12-22 |
| %m/%d/%Y | US date format | 12/22/2024 |
| %d/%m/%Y | European date format | 22/12/2024 |
| %B %d, %Y | Long date format | December 22, 2024 |
| %H:%M:%S | 24-hour time | 14:30:45 |
| %I:%M:%S %p | 12-hour time with AM/PM | 02:30:45 PM |
| %H:%M:%S.%f | Time with microseconds | 14:30:45.123456 |
| %Y-%m-%d %H:%M:%S | Full datetime | 2024-12-22 14:30:45 |
Note: The %- prefix (e.g., %-d, %-H) removes leading zeros but may not work on all platforms (especially Windows). For maximum compatibility, use zero-padded versions.
Who's awesome? You are!
cli_debrid is a labor of love that requires significant time and resources to develop and maintain. I love supporting this project and have committed countless hours to it. Any support is appreciated!
Your support helps cover these costs and enables:
If I've made your life easier consider supporting!
- godver3
Add shows and movies to the ghostlist to prevent them from being re-added. When enabled, deleting content will mark it as ghosted in the database. When disabled, deleted content can be re-added by dynamic content sources.
Remove items from content sources (Trakt lists, Overseerr requests, Plex Watchlist, etc.) during deletion. When enabled, the app will remove items from these sources to prevent them from being automatically re-added, but this makes deletion slower. When disabled, deletion is faster but the item might be re-added if it's still on your lists. Tip: Enable this when ghostlist mode is OFF. Disable this when ghostlist mode is ON (since ghostlist already prevents re-addition, and disabling makes deletion much faster).
Hide Season 0 (Specials) tab and its episodes from the TV show page.
Remove all cached posters and backdrops. Artwork will be re-downloaded from TMDB on next library load.
Hide items that don't have a TMDB rating from discover results.
Hide items that don't have a poster image from discover results.
Only show items that are not already in your library. Items will be filtered based on their database status.
Hide Season 0 (specials) from the season list on TV show detail pages.
Choose where to route when clicking on TV shows not in your library. Movies always go to Discover details page.
Enable the poster overlay system. When enabled, overlay sync tasks will automatically run and apply media info badges to Plex posters. Requires Plex URL and token to be configured.
When enabled, cli_debrid will fetch a language-neutral (textless) poster from TMDB
as the base image โ these posters have no baked-in title text so the title logo
badge can render it cleanly at your chosen position.
Use the Title Logo badge in the layout editor to add the show or movie
title as a transparent clearlogo PNG (with text fallback if no clearlogo exists).
The Title Logo badge is only available in the layout editor when this setting is on.
Note: Not all titles have textless posters on TMDB.
If none is found, the standard English poster is used as fallback.
When enabled, cli_debrid will fetch a language-neutral (textless) poster from TMDB
as the base image โ these posters have no baked-in title text so the title logo
badge can render it cleanly at your chosen position.
Use the Title Logo badge in the layout editor to add the show or movie
title as a transparent clearlogo PNG (with text fallback if no clearlogo exists).
The Title Logo badge is only available in the layout editor when this setting is on.
Note: Not all titles have textless posters on TMDB.
If none is found, the standard English poster is used as fallback.
When enabled, cli_debrid will fetch a language-neutral (textless) poster from TMDB
as the base image โ these posters have no baked-in title text so the title logo
badge can render it cleanly at your chosen position.
Use the Title Logo badge in the layout editor to add the show or movie
title as a transparent clearlogo PNG (with text fallback if no clearlogo exists).
The Title Logo badge is only available in the layout editor when this setting is on.
Note: Not all titles have textless posters on TMDB.
If none is found, the standard English poster is used as fallback.
Path to the Plex Media Server data directory. Required for the poster cleanup task to delete old uploaded overlay versions directly from the filesystem.
How often to re-fetch ratings (IMDb/TMDB/Trakt/RT) and show status to detect changes. Set to 0 to check every sync. Version count changes are always checked every sync. Default: 7.
Maximum number of shows/movies processed per overlay sync run. Higher values clear backlogs faster but each run takes longer (~1s per item). Default: 200.
Reset posters to clean originals from TMDB. Use this when migrating from another overlay app (Kometa, PMM, etc.) or to clear any foreign overlays. Overlays will not be re-applied automatically โ use Generate All when ready.