Skip to main content

Options

cross-seed has several program options, which can either be specified on the command line or in a configuration file. The priority is shown below.

CLI > config file > defaults

If you specify an option both on the command line and in the config file, the command line value will override the config file's value.

Options on the command line

All options on the command line have a long form, which looks like --long-form-option <value>. Some more common options have a single-letter short form as well, which look like -f <value>.

Some options take multiple arguments, which are always separated by spaces:

--variadic-option arg1 arg2 arg3
tip

Any references to options you see in camelCase have their corresponding long-form option name as the kebab-cased variant. For example, the excludeRecentSearch option's long-form CLI option name is --exclude-recent-search.

Options in the config file

cross-seed will look for a configuration file at

  • Mac/Linux/Unix: ~/.cross-seed/config.js
  • Windows: AppData\Local\cross-seed\config.js
tip

If you would like to use a custom config directory, you can set the CONFIG_DIR environment variable.

To create an editable config file, run the following command:

cross-seed gen-config
tip

Add -d to this command to generate a config for Docker

From there, you can open the config file in your favorite editor and set up your configuration.

tip

The configuration file uses JavaScript syntax, which means:

  • Array/multi options must be enclosed in ['brac', 'kets'].
  • Strings must be enclosed in "quotation" marks.
  • Array elements and options must be separated by commas.
  • Windows users will need to use \\ for paths. (e.g. c:\\torrents)
OptionRequired
delay
torznabRequired
torrentDirRequired
outputDirRequired
dataDirs
linkCategory
duplicateCategories
linkDir
linkType
matchMode
skipRecheck
includeSingleEpisodes
includeNonVideos
seasonFromEpisodes
autoResumeMaxDownload
fuzzySizeThreshold
excludeOlder
excludeRecentSearch
action
duplicateCategories
rtorrentRpcUrl
delugeRpcUrl
transmissionRpcUrl
qbittorrentUrl
snatchTimeout
searchTimeout
searchLimit
notificationWebhookUrl
flatLinking
blockList
sonarr
radarr

Options used in cross-seed daemon

OptionRequired
delay
torznabRequired
torrentdirRequired
outputdirRequired
dataDirs
linkCategory
duplicateCategories
linkDir
linkType
matchMode
skipRecheck
includeEpisodes
includeSingleEpisodes
includeNonVideos
seasonFromEpisodes
autoResumeMaxDownload
fuzzySizeThreshold
excludeOlder
excludeRecentSearch
action
duplicateCategories
rtorrentRpcUrl
delugeRpcUrl
transmissionRpcUrl
qbittorrentUrl
notificationWebhookUrl
host
port
rssCadence
searchCadence
snatchTimeout
searchTimeout
searchLimit
apiKey
flatLinking
blockList
sonarr
radarr

All options

delay*

Config file nameCLI short formCLI Long formFormatDefault
delay-d <value>--delay <value>number (seconds)30

When running a search with cross-seed search or using searchCadence in daemon mode, the delay option lets you set how long you want cross-seed to sleep in between searching for each torrent.

If you set it higher, it will smooth out the load on your indexer, however setting this lower will result in cross-seed running faster.

DISCLAIMER

You need to read your tracker's rules and be aware of their limits.

You and you alone are responsible for following your tracker's rules.

delay Examples (CLI)

cross-seed search -d 60
cross-seed search --delay 30

delay Examples (Config file)

delay: 30,

torznab*

Config file nameCLI short formCLI Long formFormatDefault
torznab-T <urls...>--torznab <urls...>string[][] (empty list)

List of Torznab URLs. You can use Jackett, Prowlarr, or indexer built-in Torznab implementations.

This entry MUST be wrapped in []'s and strings inside wrapped with quotes and separated by commas.

caution
http://localhost:9117/p/a/t/h?query=string
└────────host───────┘└─path─┘└───query───┘

The path of each URL should end in /api.

Finding your Torznab URLs

For Prowlarr and Jackett you can simply copy the RSS URL from the WebUI.

note

This works because in Torznab, "RSS feeds" are just a search for the first page of unfiltered (no search query) results from the indexer.

torznab Examples (CLI)

cross-seed search --torznab https://localhost/prowlarr/1/api?apikey=12345
cross-seed search -T http://prowlarr:9696/1/api?apikey=12345 http://prowlarr:9696/2/api?apikey=12345
cross-seed search -T http://jackett:9117/api/v2.0/indexers/oink/results/torznab/api?apikey=12345

torznab Examples (Config file)

torznab: ["https://localhost/prowlarr/1/api?apikey=12345"],

torznab: [
"http://prowlarr:9696/1/api?apikey=12345",
"http://prowlarr:9696/2/api?apikey=12345"
],

torznab: ["http://jackett:9117/api/v2.0/indexers/oink/results/torznab/api?apikey=12345"],

sonarr

Config file nameCLI short formCLI Long formFormatDefault
sonarr--sonarr <url(s)>string[]undefined
NOTICE

Read about the functionality in the v6 Migration Guide

The URL to your Sonarr instance with your ?apikey= parameter appended to the end.

Finding your Sonarr URL

For Sonarr you can simply append ?apikey= to the end of your WebUI base URL with your API key after the =.

sonarr Examples (CLI)

cross-seed search --sonarr https://localhost/?apikey=12345
cross-seed search --sonarr https://localhost/?apikey=12345 https://localhost4k/?apikey=12345

sonarr Examples (Config file)

sonarr: ["https://sonarr/?apikey=12345"],

sonarr: ["http://sonarr:8989/?apikey=12345","http://sonarr4k:8990/?apikey=12345"],

radarr

Config file nameCLI short formCLI Long formFormatDefault
radarr--radarr <url(s)>string[]undefined
NOTICE

Read about the functionality in the v6 Migration Guide

The URL to your Radarr instance with your ?apikey= parameter appended to the end.

Finding your Radarr URL

For Radarr you can simply append ?apikey= to the end of your WebUI base URL with your API key after the =.

radarr Examples (CLI)

cross-seed search --radarr https://localhost/?apikey=12345
cross-seed search --radarr https://localhost/?apikey=12345 https://localhost4k/?apikey=12345

radarr Examples (Config file)

radarr: ["https://radarr/?apikey=12345"],

radarr: ["http://radarr:7878/?apikey=12345","https://radarr4k:7879/?apikey=12345"],

torrentDir*

Config file nameCLI short formCLI long formFormatDefault
torrentDir-i <dir>--torrent-dir <dir>string

Point this at a directory containing torrent files. If you don't know where your torrent client stores its files, the table below might help.

Data-Only Searching

If you wish to search only your data, we previously recommended pointing this to an empty directory. You can now set this to null if you wish to search only your dataDirs.

qBittorrent

If you are using qBittorrent 4.6.x, 5.x (or later) and SQLite database in Preferences -> Advanced you will need to switch to fastresume and restart qBittorrent for compatibility with cross-seed. We have no ETA on SQLite integration currently.

Docker

Leave the torrentDir as /torrents and use Docker to map your directory to /torrents.

ClientLinuxWindowsMac
rTorrentyour session directory as configured in .rtorrent.rcyour session directory as configured in .rtorrent.rcyour session directory as configured in .rtorrent.rc
Deluge/home/<username>/.config/deluge/state%APPDATA%\deluge\statecurrent version of Deluge not officially supported
Transmission/home/<username>/.config/transmission/torrentsUnknown (please submit a PR!)Unknown (please submit a PR!)
qBittorrent/home/<username>/.local/share/data/qBittorrent/BT_backupC:\Users\<username>\AppData\Local\qBittorrent\BT_backup~/Library/Application Support/qBittorrent/BT_backup

torrentDir Examples (CLI)

cross-seed search --torrent-dir ~/.config/deluge/state
cross-seed search -i ~/.config/transmission/torrents

torrentDir Examples (Config file)

torrentDir: "/home/<username>/.config/deluge/state",

torrentDir: "C:\\torrents",
WINDOWS USERS

It is necessary to insert double-slashes for your paths, as seen in the examples above. Back-slashes are "escape characters" and "\\" equates to "\"

outputDir*

Config file nameCLI short formCLI long formFormatDefault
outputDir-s <dir>--output-dir <dir>string

cross-seed will store the torrent files it finds in this directory. If you use Injection you'll need to make sure that the client has access to this path also.

Docker

Leave the outputDir as /cross-seeds and use Docker to map your directory to /cross-seeds.

outputDir Examples (CLI)

cross-seed search -s .
cross-seed search --output-dir /tmp/output

outputDir Examples (Config file)

outputDir: "/output",

outputDir: "/tmp/output",

outputDir: ".",
WINDOWS USERS

It is necessary to insert double-slashes for your paths, as seen in the examples above. Back-slashes are "escape characters" and "\\" equates to "\"

dataDirs

Config file nameCLI short formCLI long formFormatDefault
dataDirs--data-dirs <dirs...>--data-dirs <dirs...>string(s)

cross-seed will search the paths provided (separated by spaces). If you use Injection cross-seed will use the specified linkType to create a link to the original file in the linkDir during data-based searches where it cannot find a associated torrent file.

General Usage in v6

Starting in v6.0.0, this option is generally only applicable in two cases:

  1. You are downloading through Usenet or other non-torrent methods in order to match new content not present in your torrent client.

  2. You have content in your media or data directories that is not already present in your torrent client. In this scenario, you only need to perform a search with dataDirs once. After the initial search, you should remove the directories from dataDirs entirely.

tip

You cannot include your linkDir in the dataDirs option.

Docker

You will need to mount the volume for cross-seed to have access to the data and linkDir.

dataDirs Examples (CLI)

cross-seed search --data-dirs /data/torrents/completed

dataDirs Examples (Config file)

dataDirs: ["/data/torrents/completed"],

dataDirs: ["/data/torrents/completed", "/media/library/movies"],

dataDirs: ["C:\\My Data\\Downloads\\Movies"],
WINDOWS USERS

It is necessary to insert double-slashes for your paths, as seen in the examples above. Back-slashes are "escape characters" and "\\" equates to ""

linkCategory

Config file nameCLI short formCLI long formFormatDefault
linkCategoryN/A--link-category <category>stringcross-seed-link

cross-seed will, when performing data-based searches with injection, use this category for all injected torrents.

Docker

You will need to mount the volume for cross-seed to have access to the data and linkDir.

linkCategory Examples (CLI)

cross-seed search --link-category category

linkCategory Examples (Config file)

linkCategory: "Category1",

duplicateCategories

Config file nameCLI short formCLI long formFormatDefault
duplicateCategoriesN/A--duplicate-categoriesbooleanfalse

cross-seed will inject using the original category, appending '.cross-seed', with the same save paths as your normal categories. For qBittorrent with linking enabled, this will be applied as tag instead while keeping linkCategory.

info

This will prevent an Arr from seeing duplicate torrents in Activity, and attempting to import cross-seeds.

Example: if you have a category called "Movies", this will automatically inject cross-seeds to "Movies.cross-seed"

duplicateCategories Examples (CLI)

cross-seed search --duplicate-categories

duplicateCategories Examples (Config file)

duplicateCategories: true,

duplicateCategories: false,

linkDir

Config file nameCLI short formCLI long formFormatDefault
linkDir--link-dir <dir>--link-dir <dir>string

cross-seed will link (symlink/hardlink) in the path provided. If you use Injection cross-seed will use the specified linkType to create a link to the original file in the linkDir during searches where the original data is accessible (both torrent and data-based matches).

What linkType should I use?

warning

If you are utilizing hardlinks with Docker, it is necessary that you to use a single mount/volume for both the linkDir and the data in your client and/or dataDirs from which you're linking . Using hardlinks across two volumes/mounts in Docker will error and fail.

All paths need to be accessible in the same structure as your torrent client for injection to succeed.

tip

If you are using dataDirs (click for v6 use-cases), your linkDir can not reside INSIDE of your included dataDirs folders. This is to prevent recursive and erroneous searches of folders used in linking folder structure.

Docker

You will need to mount the volume for cross-seed to have access to the dataDir and linkDir.

linkDir Examples (CLI)

cross-seed search --linkDir /data/torrents/xseeds

linkDir Examples (Config file)

linkDir: "/path/to/your/linkDir",

linkDir: "C:\\cross-seed-links",

WINDOWS USERS

It is necessary to insert double-slashes for your paths, as seen in the examples above. Back-slashes are "escape characters" and "\\" equates to "\"

linkType

Config file nameCLI short formCLI long formFormatDefault
linkType--link-type <type>--link-type <type>string

cross-seed will link (symlink/hardlink) in the method provided. If you use Injection cross-seed will use the specified linkType to create a link to the original file in the linkDir during data-based searchs where it cannot find a associated torrent file.

Valid methods for linkType are symlink and hardlink.

What linkType should I use?

PATH ADVISORY

If you are utilizing hardlinks with Docker, it is necessary that you to use a single mount/volume for both the linkDir and the data in your client and/or dataDirs from which you're linking . Using hardlinks across two volumes/mounts in Docker will error and fail.

All paths need to be accessible in the same structure as your torrent client for injection to succeed.

linkType Examples (CLI)

cross-seed search --linkType hardlink

linkType Examples (Config file)

linkType: "hardlink",

linkType: "symlink",

matchMode

Config file nameCLI short formCLI long formFormatDefault
matchMode--match-mode <mode>--match-mode <mode>safe/risky/partial*safe

cross-seed uses three types of matching algorithms safe, risky, and partial. These algorithms can only be ran if cross-seed has snatched the torrent files. The vast majority of candidates get rejected before a snatch has happened by parsing information from the title.

optiondescription
safethe default which matches based on file naming and sizes.
riskymatches based on file sizes only.
partialcan be read about in detail here

For media library searches risky or partial is necessary due to the renaming of files.

matchMode Examples (CLI)

cross-seed search --match-mode risky
cross-seed search --match-mode safe

matchMode Examples (Config file)

matchMode: "risky",

matchMode: "safe",

skipRecheck

Config file nameCLI short formCLI long formFormatDefault
skipRecheckN/A--skip-recheckbooleantrue

Set this to false to recheck all torrents upon injection. Set this to true to only recheck necessary injections (such as partial or data based).

tip

Torrents will be resumed even with skipRecheck: false, if applicable.

skipRecheck Examples (CLI)

cross-seed search # will skip rechecking
cross-seed search --no-skip-recheck # will not skip rechecking

skipRecheck Examples (Config file)

skipRecheck: true,

skipRecheck: false,

includeSingleEpisodes

Config file nameCLI short formCLI long formFormatDefault
includeSingleEpisodesN/A--include-single-episodesbooleanfalse
NOTICE

Behavior of this option has changed in v6, please see the migration guide for details on the implementation's changes'.

Set this to true to include ALL SINGLE episodes when searching (which are ignored by default).

info

This will NOT include episodes present inside season packs (data-based searches).

tip

This option has explicit usage examples given in the config templates which outlines the most common scenarios.

includeSingleEpisodes Examples (CLI)

cross-seed search --include-single-episodes # will include single episodes not from season pack
cross-seed search # will not include episodes

includeSingleEpisodes Examples (Config file)

includeSingleEpisodes: true,

includeSingleEpisodes: false,

seasonFromEpisodes

Config file nameCLI short formCLI long formFormatDefault
seasonFromEpisodesN/A--season-from-episodesnumber (decimal from 0 to 1)1

cross-seed will also aggregate individual episodes into season packs for searching (when applicable) or to match with season packs from rss/announce. This will only match season packs where you have at least the specified ratio of episodes. null disables this feature. If enabled, values below 1 requires matchMode partial.

tip

This feature works best with matchMode partial and Sonarr. You can avoid downloading the same missing episodes on multiple trackers by following these steps.

seasonFromEpisodes Examples (CLI)

cross-seed search --season-from-episodes 0.8 # will also combine episodes into season packs if you have at least 80%
cross-seed search # will only combine episodes to a season when you have 100% of the pack
cross-seed search --no-season-from-episodes # will not attempt to join episodes to season packs

seasonFromEpisodes Examples (Config file)

seasonFromEpisodes: 0.8, // requires 80% of the episodes to cross-seed a season pack

seasonFromEpisodes: undefined, // will join with 100% of the episodes

seasonFromEpisodes: null, // will disable season pack from episodes

autoResumeMaxDownload

Config file nameCLI short formCLI long formFormatDefault
autoResumeMaxDownloadN/A--auto-resume-max-downloadnumber (0 to 52428800)52428800 (50 MiB)

The amount remaining for an injected torrent in bytes for cross-seed to resume. For torrents with a larger amount remaining, you will need to manually resume as you can avoid downloading the same missing data on multiple trackers by following these steps.

autoResumeMaxDownload Examples (CLI)

cross-seed search --auto-resume-max-download 0 # only resume complete matches

autoResumeMaxDownload Examples (Config file)

autoResumeMaxDownload: 52428800,

autoResumeMaxDownload: 0,

includeNonVideos

Config file nameCLI short formCLI long formFormatDefault
includeNonVideosN/A--include-non-videosbooleanfalse
NOTICE

Behavior of this option has changed in v6, please see the migration guide for details on the implementation's changes.

Set this to true to include torrents that contain a majority of files other than video files (.mp4, .avi, .mkv) in the search.

includeNonVideos Examples (CLI)

cross-seed search --include-non-videos # will include non-videos
cross-seed search --no-include-non-videos # will not include non-videos
cross-seed search # will not include non-videos

includeNonVideos Examples (Config file)

includeNonVideos: true,

includeNonVideos: false,

fuzzySizeThreshold

Config file nameCLI short formCLI long formFormatDefault
fuzzySizeThresholdN/A--fuzzy-size-threshold <value>number (decimal from 0 to 0.1)0.02

Increase this number to reject fewer torrents based on size. There is no guarantee that it will increase your match rate.

caution

This option has very limited utility and under normal operation does not need to be modified.

fuzzySizeThreshold Examples (CLI)

cross-seed search --fuzzy-size-threshold 0.02
cross-seed daemon --fuzzy-size-threshold 0.02

fuzzySizeThreshold Examples (Config file)

fuzzySizeThreshold: 0.02,

excludeOlder

Config file nameCLI short formCLI long formFormatDefault
excludeOlder-x <value>--exclude-older <value>string in the ms format

When running a search, this option excludes anything first searched more than this long ago. This option is only relevant in search mode or in daemon mode with searchCadence turned on.

tip

excludeOlder will never exclude torrents that are completely new to cross-seed or torrents seen via RSS or Announce API.

excludeOlder Examples (CLI)

cross-seed search -x 10h # only search for torrents whose first search was less than 10 hours ago or never
cross-seed search --exclude-older "3 days" # only search for torrents whose first search was less than 3 days ago or never
cross-seed search -x 0s # only search for each torrent once ever

excludeOlder Examples (Config file)

excludeOlder: "10 hours",

excludeOlder: "3days",

excludeOlder: "0s",

excludeRecentSearch

Config file nameCLI short formCLI long formFormatDefault
excludeRecentSearch-r <value>--exclude-recent-search <value>string in the ms format

When running a search, this option excludes anything that has been searched more recently than this long ago. This option is only relevant in search mode or in daemon mode with searchCadence turned on.

tip

excludeRecentSearch will never exclude torrents seen via RSS or Announce API.

Note

Search history is stored on a per-indexer basis.

Searches that failed on specific indexers (for example - due to timeout or rate-limiting) will not be marked as having been searched, and thus will not be excluded by this setting for those specific indexers on the next run.

excludeRecentSearch Examples (CLI)

cross-seed search -r 1day # only search for torrents that haven't been searched in the past day
cross-seed search --exclude-recent-search "2 weeks" # only search for torrents that haven't been searched in the past 2 weeks

excludeRecentSearch Examples (Config file)

excludeRecentSearch: "1 day",

excludeRecentSearch: "2 weeks",

action*

Config file nameCLI short formCLI long formFormatDefault
action-A <save/inject>--action <save/inject>save/injectsave

cross-seed can either save the found cross-seeds, or inject them into your client. If you use inject, you will need to set up your client. Read more in the Injection tutorial.

action Examples (CLI)

cross-seed search -A inject
cross-seed search --action save

action Examples (Config file)

action: "save",

action: "inject",

rtorrentRpcUrl

Config file nameCLI short formCLI long formFormatDefault
rtorrentRpcUrlN/A--rtorrent-rpc-url <url>URL

The url of your rTorrent XMLRPC interface. Only relevant with Injection. Often ends in /RPC2.

info

If you use Sonarr or Radarr, cross-seed is configured the same way. ruTorrent installations come with this endpoint configured, but naked rTorrent does not provide this wrapper. If you don't use ruTorrent, you'll have to set up the endpoint yourself with a webserver.

tip

If you use HTTP Digest Auth on this endpoint (recommended), then you can provide credentials in the following format: http://username:password@localhost/rutorrent/RPC2

rtorrentRpcUrl Examples (CLI)

cross-seed search --rtorrent-rpc-url http://rutorrent/rutorrent/RPC2
cross-seed search --rtorrent-rpc-url http://user:pass@localhost:8080/RPC2

rtorrentRpcUrl Examples (Config file)

rtorrentRpcUrl: "http://rutorrent/rutorrent/RPC2",

rtorrentRpcUrl: "http://user:pass@localhost:8080/RPC2",

qbittorrentUrl

Config file nameCLI short formCLI long formFormatDefault
qbittorrentUrlN/A--qbittorrent-url <url>URL

The url of your qBittorrent Web UI. Only relevant with Injection.

tip

qBittorrent doesn't use HTTP Basic/Digest Auth, but you can provide your qBittorrent credentials at the beginning of the URL like so: http://username:password@localhost:8080/

qbittorrentUrl Examples (CLI)

cross-seed search --qbittorrent-url http://qbittorrent:8080/qbittorrent
cross-seed search --qbittorrent-url http://user:pass@localhost:8080

qbittorrentUrl Examples (Config file)

qbittorrentUrl: "http://qbittorrent:8080/qbittorrent",

qbittorrentUrl: "http://user:pass@localhost:8080",

transmissionRpcUrl

Config file nameCLI short formCLI long formFormatDefault
transmissionRpcUrlN/A--transmission-rpc-url <url>URL

The url of your Transmission RPC Interface. Only relevant with Injection.

tip

Transmission doesn't use HTTP Basic/Digest Auth, but you can provide your Transmission credentials at the beginning of the URL like so: http://username:password@localhost:9091/transmission/rpc

transmissionRpcUrl Examples (CLI)

cross-seed search --transmission-rpc-url http://transmission:8080/transmission/rpc
cross-seed search --transmission-rpc-url http://user:pass@localhost:8080

transmissionRpcUrl Examples (Config file)

transmissionRpcUrl: "http://transmission:8080/transmission/rpc",

transmissionRpcUrl: "http://username:password@localhost:9091/transmission/rpc",

delugeRpcUrl

Config file nameCLI short formCLI long formFormatDefault
delugeRpcUrlN/A--deluge-rpc-url <url>URL

The url of your Deluge JSON-RPC Interface. Only relevant with Injection.

tip

Deluge doesn't use HTTP Basic/Digest Auth, but you can provide your Deluge password at the beginning of the URL like so: http://:password@localhost:8112/json

delugeRpcUrl Examples (CLI)

cross-seed search --deluge-rpc-url http://deluge:8112/json
cross-seed search --deluge-rpc-url http://:pass@localhost:8112/json

delugeRpcUrl Examples (Config file)

delugeRpcUrl: "http://deluge:8112/json",

delugeRpcUrl: "http://:pass@localhost:8112/json",

notificationWebhookUrl

Config file nameCLI short formCLI long formFormatDefault
notificationWebhookUrlN/A--notification-webhook-url <url>URL

cross-seed will send a POST request to this URL with the following payload:

POST notificationWebhookUrl
Content-Type: application/json

{
"title": "string",
"body": "string",
"extra": {
"event": "RESULTS",
"name": "string",
"infoHashes": "string[]",
"trackers": "string[]",
"source": "announce | inject | rss | search | webhook",
"result": "SAVED | INJECTED | FAILURE"
}
}

Currently, cross-seed only sends the "RESULTS" and "TEST" events. In the future it may send more. This payload supports both apprise and Notifiarr.

notificationWebhookUrl Examples (CLI)

cross-seed daemon --notification-webhook-url http://apprise:8000/notify

notificationWebhookUrl Examples (Config file)

notificationWebhookUrl: "http://apprise:8000/notify",

host

Config file nameCLI short formCLI long formFormatDefault
hostN/A--host <host>host/ip0.0.0.0

In Daemon Mode, cross-seed runs a webserver listening for a few types of HTTP requests. You can use this option to change the host to bind to and listen on.

DOCKER

If you are using Docker, you do not need to set this. Leave the option as undefined.

host Examples (CLI)

cross-seed daemon --host 192.168.1.100

host Examples (Config file)

host: "1.3.3.7",

port*

Config file nameCLI short formCLI long formFormatDefault
port-p <port>--port <port>number2468

In Daemon Mode, cross-seed runs a webserver listening for a few types of HTTP requests. You can use this option to change the port it listens on.

port Examples (CLI)

cross-seed daemon --port 3000
cross-seed daemon -p 3000

port Examples (Config file)

port: 3000,

rssCadence

Config file nameCLI short formCLI long formFormatDefault
rssCadenceN/A--rss-cadence <cadence>string in the ms format

In Daemon Mode, with this option enabled, cross-seed will run periodic RSS searches on your configured indexers to check if any new uploads match torrents you already own. Setting this option to null, or not specifying it at all, will disable the feature.

tip

There is a minimum cadence of 10 minutes. We recommend keeping it at a relatively low number (10-30 mins) because if an indexer has a high frequency of new uploads, keeping the number low will make sure cross-seed gets a chance to see each new upload.

rssCadence Examples (CLI)

cross-seed daemon --rss-cadence 10min

rssCadence Examples (Config file)

rssCadence: null, // disable the RSS feature

rssCadence: "10 minutes",

rssCadence: "20min",

searchCadence

Config file nameCLI short formCLI long formFormatDefault
searchCadence--search-cadence <cadence>string in the ms format

In Daemon Mode, with this option enabled, cross-seed will run periodic searches of your torrents (respecting your includeEpisodes, includeNonVideos, excludeOlder, and excludeRecentSearch settings).

searchCadence Examples (CLI)

cross-seed daemon --search-cadence "2 weeks"
cross-seed daemon --search-cadence "2w"

searchCadence Examples (Config file)

searchCadence: null, // disable the periodic search feature

searchCadence: "2w",

searchCadence: "4 weeks",

apiKey

Config file nameCLI short formCLI long formFormatDefault
apiKey--api-key <key>stringundefined
info

apiKey is disabled in the config file by default, if you want to specify a key set it to a valid key (24 character min).

To find your generated API key, run the cross-seed api-key command. The API key can be included with your requests in either of two ways:

# provide api key as a query param
curl -XPOST localhost:2468/api/webhook?apikey=YOUR_API_KEY --data-urlencode ...
# provide api key as an HTTP header
curl -XPOST localhost:2468/api/webhook -H "X-Api-Key: YOUR_API_KEY" --data-urlencode ...

apiKey Examples (CLI)

cross-seed daemon --api-key <key> # will require auth on requests

apiKey Examples (Config file)

apiKey: undefined,
apiKey: "abcdefghijklmn0pqrstuvwxyz",

snatchTimeout

Config file nameCLI short formCLI long formFormatDefault
snatchTimeout--snatch-timeout <timeout>string in the ms format30 seconds

This option applies to any snatch (download) of a .torrent file via Torznab. If a response is not given in the amount of time specified then it will consider the snatch as failed.

snatchTimeout Examples (CLI)

cross-seed daemon --snatch-timeout "15s"
cross-seed search --snatch-timeout "30s"

snatchTimeout Examples (Config file)

snatchTimeout: undefined, // disable the snatch timeout (http default)

snatchTimeout: "30s",

snatchTimeout: "15s",

searchTimeout

Config file nameCLI short formCLI long formFormatDefault
searchTimeout--search-timeout <timeout>string in the ms format2 minutes

This option applies to any search via Torznab. If the search response is not given in the amount of time specified then it will consider the search failed.

searchTimeout Examples (CLI)

cross-seed daemon --search-timeout "20s"
cross-seed search --search-timeout "45s"

searchTimeout Examples (Config file)

searchTimeout: undefined, // disables searchTimeout (http default)

searchTimeout: "60s",

searchTimeout: "20s",

searchLimit

Config file nameCLI short formCLI long formFormatDefault
searchLimit--search-limit <number>numberundefined

This option applies to any search Torznab. This option will stop searching after the number of searches meets the number specified.

info

This will apply to searching in daemon mode (periodic/cadence or when given a path which contains many files) or directly with the search command.

searchLimit Examples (CLI)

cross-seed daemon --search-limit 50
cross-seed search --search-limit 150

searchLimit Examples (Config file)

searchLimit: undefined, // disable search count limits

searchLimit: 150,

flatLinking

Config file nameCLI short formCLI long formFormatDefault
flatLinkingN/A--flat-linkingbooleanfalse
Be Advised

qBittorrent users using an external program or script, such as qbit_manage, to force AutoTMM on torrents (e.g. to apply share limits automatically) will need to enable flatLinking or modify your workflow accordingly.

Read more about specific usage

Set this to true to use the flat-folder style linking previously used in v5. This option will otherwise link any matches to a tracker-specific folder inside of linkDir (if set). This prevents cross seeds from conflicting with each other.

With flatLinking: false (default):

linkDir/
TrackerA/
Video.mkv
Video2/
Video2.mkv
TrackerB/
Pack/
Pack.1.mkv
Pack.2.mkv
Video.mkv

With flatLinking: true:

linkDir/
Video.mkv <--- Both TrackerA and TrackerB cross seeds share the same file
Video2/
Video2.mkv
Pack/
Pack.1.mkv
Pack.2.mkv

flatLinking Examples (CLI)

cross-seed search --flat-linking

flatLinking Examples (Config file)

flatLinking: true,

flatLinking: false,

blockList

Config file nameCLI short formCLI long formFormatDefault
blockList--block-list <strings>--block-list <strings>string(s)

cross-seed will exclude any of the files/releases from cross-seeding during the prefiltering done for each search/inject/rss/announce/webhook use. The full list of supported prefixes are:

  • name:
  • nameRegex:
  • folder:
  • folderRegex:
  • category:
  • tag:
  • tracker:
  • infoHash:
  • sizeBelow:
  • sizeAbove:
danger

The regex (ECMAScript flavor) options are for advanced users only. Do not use without rigorous testing as cross-seed is unable to perform any checks. Use at your own risk.

All options, including the regex, are case-sensitive. name: can be a substring of the name of inside the .torrent file. folder: can be a substring of any folder in the path for data based searches. All other prefixes must match exactly. category: tag: tracker: are read from source torrents (labels are considered tag:). When blocklisting by tracker:, if the announce url is https://user:pass@tracker.example.com:8080/announce/key, you must use host "tracker:tracker.example.com:8080". The blockList sizes are an integer of the number of bytes.

blockList Examples (Config file)

blockList: [
"name:Release.Name",
"name:-excludedGroup",
"name:x265",
"nameRegex:[Rr]elease[.\s][Nn]ame",
"folder:folderName",
"folderRegex:folder\d+",
"category:icycool",
"tag:everybody",
"tracker:tracker.example.com:8080",
"infoHash:3317e6485454354751555555366a8308c1e92093",
"sizeBelow:12345",
"sizeAbove:98765",
],