Options | cross-seed
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 > Fallback
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.
danger
DO NOT remove options from the config file, this will cause errors.
Options on the command line
All options on the command line have a long form, which looks like
--long-form-option
. Some more common options have a single-letter
short form as well, which look like
-f
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
For instructions on creating and editing the config file, use the
getting started guide
. DO NOT
remove options from the config file, this will cause errors.
tip
What should I do after updating my config?
All options
delay
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
delay
-d
--delay
number
(seconds)
30
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
torznab
-T
--torznab
string[]
[]
[]
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
└────────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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
sonarr
--sonarr
string[]
[]
[]
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"
NOTICE
If you are using a secure connection (HTTPS) to Sonarr and you are using a certificate signed by a custom authority, make sure that the environment variable
NODE_EXTRA_CA_CERTS
is set and contains the path to a file containing the root certificate of the custom authority.
radarr
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
radarr
--radarr
string[]
[]
[]
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"
NOTICE
If you are using a secure connection (HTTPS) to Radarr and you are using a certificate signed by a custom authority, make sure that the environment variable
NODE_EXTRA_CA_CERTS
is set and contains the path to a file containing the root certificate of the custom authority.
useClientTorrents
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
useClientTorrents
N/A
--use-client-torrents
boolean
true
false
warning
Deluge with Docker can have a desyncing issue with the WebUI daemon after
prolonged uptime with useClientTorrents, if you notice strange behavior you may
need to use
torrentDir
instead.
Query the torrent client APIs to find matches against its contents. This is a
replacement for torrentDir and is generally recommended. This method supports
qBittorrent's
SQLite
mode and all forms of content
layouts/renames/modifications to the torrent in client.
useClientTorrents
Examples (CLI)
cross-seed search --use-client-torrents
cross-seed search --no-use-client-torrents
useClientTorrents
Examples (Config file)
useClientTorrents
true
torrentDir
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
torrentDir
-i


--torrent-dir
string
null
null
qBittorrent
You
MUST
use
useClientTorrents
instead if any apply:
You are using
SQLite
in
Preferences -> Advanced
You have renamed torrents or its files in client
You have torrents added
WITHOUT
Content Layout
set to
Original
Point this at a directory containing torrent files,
or if you're using a
torrent client integration and injection
- your torrent client's
.torrent
file store/cache.
What directory is supported
More details on why using paths other than the .torrent store from the client's
config/appdata directory (ex: 'state' or 'BT_backup') is not supported and
discouraged
can be found here.
If you don't know where your torrent client stores its files,
please use the
table below to find the client's store of .torrent files
. This folder can then
either be mounted as something like
/torrents
(with read only (
:ro
permissions) as a "shorthanded" path if you're using Docker or used outright as
your
torrentDir
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
Client
Linux
Windows
Mac
rTorrent
your session directory as configured in .rtorrent.rc
your session directory as configured in .rtorrent.rc
your session directory as configured in .rtorrent.rc
Deluge
/home//.config/deluge/state
%APPDATA%\deluge\state
current version of Deluge not officially supported
Transmission
/home//.config/transmission/torrents
Unknown (please submit a
PR
!)
Unknown (please submit a
PR
!)
qBittorrent
/home//.local/share/data/qBittorrent/BT_backup
C:\Users\\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//.config/deluge/state"
torrentDir
"C:\\torrents"
WINDOWS USERS
It is necessary to insert double-slashes for your paths, back-slashes are "escape characters" and "\\" equates to "\".
outputDir
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
outputDir
-s
--output-dir
string
null
null
tip
Keep this set to
outputDir: null
for the best experience with
cross-seed
This will map outputDir into your
cross-seed
config directory
danger
DO NOT USE THIS DIRECTORY AS A WATCH FOLDER FOR YOUR TORRENT CLIENT!
With
action: "inject"
cross-seed
will use this directory to
retry injections only, it will be empty nearly all the time. With
action: "save"
cross-seed
will store the .torrent files it finds
in this directory. Only change this from
null
if you are using
action: "save"
and the path would be more convenient.
outputDir
Examples (CLI)
cross-seed search
cross-seed search --output-dir /path/to/folder
outputDir
Examples (Config file)
outputDir
null
outputDir
"/path/to/folder"
WINDOWS USERS
It is necessary to insert double-slashes for your paths, back-slashes are "escape characters" and "\\" equates to "\".
dataDirs
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
dataDirs
--data-dirs
--data-dirs
string(s)
[]
[]
tip
Usages and Configuration
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 linkDirs.
Docker
You will need to mount the volume for
cross-seed
to have access to the data
and linkDirs.
dataDirs
Examples (CLI)
cross-seed search --data-dirs /data/usenet/movies
dataDirs
Examples (Config file)
dataDirs
"/data/usenet/movies"
dataDirs
"/data/usenet/movies"
"/data/torrents/tv"
dataDirs
"C:\\My Data\\Downloads\\Movies"
WINDOWS USERS
It is necessary to insert double-slashes for your paths, back-slashes are "escape characters" and "\\" equates to "\".
maxDataDepth
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
maxDataDepth
N/A
--max-data-depth
number
tip
What value should I set my
maxDataDepth
to?
Determines how deep into the specified
dataDirs
cross-seed
will
go to generate searchees. Setting this to higher values will result in more
searchees and more API hits to your indexers.
maxDataDepth
Examples (CLI)
cross-seed search --max-data-depth 2
maxDataDepth
Examples (Config file)
maxDataDepth
linkCategory
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
linkCategory
N/A
--link-category
string
cross-seed-link
cross-seed-link
cross-seed
will use this category for all injected torrents when
linking
is enabled.
Docker
You will need to mount the volume for
cross-seed
to have access to the data
and linkDirs.
linkCategory
Examples (CLI)
cross-seed search --link-category category
linkCategory
Examples (Config file)
linkCategory
"Category1"
duplicateCategories
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
duplicateCategories
N/A
--duplicate-categories
boolean
false
false
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. You do not need to set this to
true
if you
are using linking.
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
linkDirs
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
linkDirs
N/A
--link-dirs
string(s)
[]
[]
tip
Ideally, you should only have a single linkDir and use drive pooling. Using
multiple linkDirs should be reserved for setups with cache/temp drives or where
drive pooling is impossible.
How to configure linking?
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 one of the
linkDirs
during searches
where the original data is accessible (both torrent and data-based matches). The
correct linkDir is chosen by matching the
stat.st_dev
for the source and link
paths. If no linkDir shares a
stat.st_dev
with the source, the injection will
fail for hardlinks and fallback to the first linkDir for symlinks.
Docker
You will need to mount the volume for
cross-seed
to have access to the dataDir
and linkDirs.
linkDirs
Examples (CLI)
cross-seed search --linkDirs /data/torrents/xseeds /data1/torrents/cross-seed-links
linkDirs
Examples (Config file)
linkDirs
"/data/torrents/SomeLinkDirName"
linkDirs
"C:\\cross-seed-links"
"D:\\xseeds"
WINDOWS USERS
It is necessary to insert double-slashes for your paths, back-slashes are "escape characters" and "\\" equates to "\".
linkType
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
linkType
--link-type
--link-type
string
hardlink
symlink
tip
What
linkType
should I use?
cross-seed
will link (symlink/hardlink/reflink) in the method provided. If you
use
Injection
cross-seed
will use the specified
linkType to create a link to the original file in one of the linkDirs.
Valid methods for linkType are
symlink
hardlink
, and
reflink
tip
It's possible to use an alternative reflink method detailed here
linkType
Examples (CLI)
cross-seed search --linkType hardlink
linkType
Examples (Config file)
linkType
"hardlink"
linkType
"symlink"
matchMode
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
matchMode
--match-mode
--match-mode
strict
flexible
partial*
flexible
strict
cross-seed
uses three types of matching algorithms
strict
flexible
, and
partial
. All types are equally safe.
strict
is required if you cannot use
linking. Using
partial
will find all possible cross seeds of your data and
allows setting
seasonFromEpisodes
to a value below 1.
note
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. Using
partial
minimizes the amount of
wasted snatches since it's the most complete.
option
description
strict
requires all file names to match exactly along with file sizes
flexible
allows for file renames and slight inconsistencies
partial
can be read about in detail
here
For media library searches
flexible
or
partial
is necessary due to the
renaming of files.
matchMode
Examples (CLI)
cross-seed search --match-mode flexible
cross-seed search --match-mode strict
matchMode
Examples (Config file)
matchMode
"partial"
matchMode
"strict"
skipRecheck
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
skipRecheck
N/A
--skip-recheck
boolean
true
true
Set this to
false
to recheck all torrents upon injection. Set this to
true
to only recheck necessary injections such those from
partial
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
includeSingleEpisodes
N/A
--include-single-episodes
boolean
false
false
tip
It's recommended to use
includeSingleEpisodes: false
in your config and
override it for webhook commands triggered on
download completion
Combined with matching single episodes from announce, this should match all
episodes without the downside of searching for
trumped/dead torrents
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).
Behavior of this option has changed in v6, please see the
migration guide
for
details on the implementation's changes'.
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
seasonFromEpisodes
N/A
--season-from-episodes
number
(decimal from 0 to 1)
null
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 --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
null
// will disable season pack from episodes
autoResumeMaxDownload
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
autoResumeMaxDownload
N/A
--auto-resume-max-download
number
(0 to 52428800)
52428800
52428800
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
ignoreNonRelevantFilesToResume
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
ignoreNonRelevantFilesToResume
N/A
--ignore-non-relevant-files-to-resume
boolean
false
false
If set to
true
and the amount remaining is above
autoResumeMaxDownload
, resume if accumulated size of
the missing files is less than the accumulated size of the known-irrelevant
files such as nfo, sample, txt, subs, proofs, and bonus/commentary files present
in the torrent.
note
The goal is to resume all torrents that meet this criteria. However, for safety,
a 200 MiB limit has been set on the remaining download size. We're open to
increasing this limit if needed.
ignoreNonRelevantFilesToResume
Examples (CLI)
cross-seed search --ignore-non-relevant-files-to-resume # will resume if the only files missing are known-irrelevant files
cross-seed search --no-ignore-non-relevant-files-to-resume # will not resume if the only files missing are known-irrelevant files
ignoreNonRelevantFilesToResume
Examples (Config file)
ignoreNonRelevantFilesToResume
true
ignoreNonRelevantFilesToResume
false
includeNonVideos
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
includeNonVideos
N/A
--include-non-videos
boolean
false
false
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
fuzzySizeThreshold
N/A
--fuzzy-size-threshold
number
(decimal from 0 to 0.1)
0.02
0.02
Increase this number to reject fewer torrents based on size. There is no
guarantee that it will increase your match rate.
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
excludeOlder
-x
--exclude-older
string
in the
ms
format
2 weeks
undefined
tip
How to ignore
excludeOlder
for a single search?
What's the best way to add new trackers?
If you prefer to spread out repeat searches for a longer safety net, use
excludeRecentSearch: "90 days"
and
excludeOlder: "450 days"
When running a search, this option excludes anything first searched more than
this long ago. This option is only relevant in
mode or in
daemon
mode
with
searchCadence
turned on.
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.
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
cross-seed search --no-exclude-older # disables/overrides the excludeOlder value in config.js
excludeOlder
Examples (Config file)
excludeOlder
"10 hours"
excludeOlder
"3days"
excludeOlder
"0s"
excludeRecentSearch
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
excludeRecentSearch
-r
--exclude-recent-search
string
in the
ms
format
3 days
undefined
tip
How to ignore
excludeRecentSearch
for a single search?
What's the best way to add new trackers?
If you prefer to spread out repeat searches for a longer safety net, use
excludeRecentSearch: "90 days"
and
excludeOlder: "450 days"
When running a search, this option excludes anything that has been searched more
recently than this long ago. This option is only relevant in
mode or in
daemon
mode with
searchCadence
turned on.
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
cross-seed search --no-exclude-recent-search # disables/overrides the excludeRecentSearch value in config.js
excludeRecentSearch
Examples (Config file)
excludeRecentSearch
"1 day"
excludeRecentSearch
"2 weeks"
action
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
action
-A
--action
inject
inject
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"
torrentClients
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
torrentClients
N/A
--torrent-clients
URL(s)
[]
[]
Multiple Clients
cross-seed
will never inject a torrent into a client if it exists in another.
If there similar torrents to source from in multiple clients, the order of the
clients defined will be used as the priority.
Injections from
useClientTorrents
will be injected into
the client the match was sourced from or the first valid non-readonly client
with the first valid
linkDir
. Custom routing is not supported at
this time.
Injections from
dataDirs
will be injected into the first valid
client with the first valid
linkDir
. Custom routing is not
supported at this time.
The URL(s) of your torrent client that
cross-seed
will source torrents from
prefixed by their client type. If desired, you can use
readonly:
after the
prefix to use a client to source cross seeds from but not inject into.
tip
You may need to urlencode your username and password if they contain special characters
cross-seed
must share the same
user and group
permissions as the torrent
clients to prevent errors.
You may need to use
cross-seed clear-client-cache
if you change torrent clients or modify the torrents in client
qbittorrent
The url of your
qBittorrent
Web UI prefixed with
qbittorrent
qbittorrent:http://user:pass@localhost:8080
deluge
The url of your
Deluge
JSON-RPC Interface prefixed with
deluge
deluge:http://:pass@localhost:8112/json
transmission
The url of your
Transmission
RPC Interface prefixed with
transmission
transmission:http://user:pass@localhost:9091/transmission/rpc
rtorrent
The url of your
rTorrent
XMLRPC interface prefixed with
rtorrent
rtorrent:http://user:pass@localhost:8080/RPC2
or
rtorrent:http://user:pass@localhost:8080/rutorrent/plugins/httprpc/action.php
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:
torrentClients
Examples (CLI)
cross-seed search --torrent-clients rtorrent:http://rutorrent/rutorrent/RPC2
cross-seed search --torrent-clients rtorrent:http://user:pass@localhost:8080/RPC2 qbittorrent:http://user:pass@localhost:8080
cross-seed search --torrent-clients rtorrent:readonly:http://user:pass@localhost:8080/RPC2 qbittorrent:http://user:pass@localhost:8080
torrentClients
Examples (Config file)
torrentClients
"deluge:http://:pass@localhost:8112/json"
torrentClients
"qbittorrent:http://user:pass@localhost:8080"
"deluge:http://:pass@localhost:8112/json"
"transmission:readonly:http://user:pass@localhost:9091/transmission/rpc"
"rtorrent:http://user:pass@localhost:8080/RPC2"
notificationWebhookUrls
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
notificationWebhookUrls
N/A
--notification-webhook-urls
URL[]
[]
[]
cross-seed
will send a POST request to these URLs with the following payload:
POST notificationWebhookUrl
Content-Type
application/json
"title"
"string"
"body"
"string"
"extra"
"event"
"RESULTS | TEST"
"name"
"string"
"infoHashes"
"string"
"trackers"
"string"
"source"
"announce | inject | rss | search | webhook"
"result"
"SAVED | INJECTED | FAILURE"
"paused"
false
"decisions"
"string"
"searchee"
"category"
"string"
"tags"
"string"
"trackers"
"string"
"length"
123
"clientHost"
"string"
"infoHash"
"string"
"path"
"string"
"source"
"torrentClient | torrentFile | dataDir | virtual"
Currently,
cross-seed
only sends the "RESULTS" and "TEST" events. In the
future it may send more. This payload supports both
apprise
and
Notifiarr
notificationWebhookUrls
Examples (CLI)
cross-seed daemon --notification-webhook-urls http://apprise:8000/notify http://apprise:8001/notify
notificationWebhookUrls
Examples (Config file)
notificationWebhookUrls
"http://apprise:8000/notify"
"http://apprise:8001/notify"
host
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
host
N/A
--host
host/ip
0.0.0.0
0.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.
Unless you have an address on your interface you wish
NOT
to listen on, or
have a special set of networking requirements, you likely
DO NOT
need to
change the host from
"0.0.0.0"
host
Examples (CLI)
cross-seed daemon --host 192.168.1.100
host
Examples (Config file)
host
"1.3.3.7"
port
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
port
-p
--port
number
2468
2468
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
rssCadence
N/A
--rss-cadence
string
in the
ms
format
30 minutes
undefined
tip
How to cross seed new releases as soon as they are uploaded?
How to trigger ahead of schedule?
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
searchCadence
--search-cadence
string
in the
ms
format
1 day
undefined
tip
How to trigger a search on download completion?
How to trigger ahead of schedule?
warning
There is no reason to increase this value above the minimum of
1 day
. This
will negatively affect
searchLimit
, delay your searches, and
cause them to be bunched up rather than spread out. If you wish to control the
frequency in which torrents are searched, use the
excludeOlder
and
excludeRecentSearch
options instead.
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
apiKey
--api-key
string
undefined
undefined
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 # will require auth on requests
apiKey
Examples (Config file)
apiKey
undefined
apiKey
"abcdefghijklmn0pqrstuvwxyz"
snatchTimeout
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
snatchTimeout
--snatch-timeout
string
in the
ms
format
30 seconds
30 seconds
warning
A single search (for which there could be thousands) could require multiple
snatches which happens sequentially. Similarly, a single rss event could have
thousands of candidates to parse through. Setting this value too high or to
undefined
could indenfintely delay how quickly
cross-seed
can process
candidates for no real benefit.
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
searchTimeout
--search-timeout
string
in the
ms
format
2 minutes
2 minutes
warning
cross-seed
may need to perform thousands of searches in a single run. Setting
this value too high or to
undefined
could indenfintely delay how quickly
cross-seed
can process candidates for no real benefit.
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
searchLimit
--search-limit
number
400
undefined
Stop searching after the number of search queries meets the number specified.
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 Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
flatLinking
N/A
--flat-linking
boolean
false
false
Be Advised
qBittorrent users using an external program or script, such as qbit_manage, will
need extra considerations for
flatLinking: false
Read more about specific usage
With
false
cross-seed
will link any matches to a tracker-specific folder
inside of
linkDirs
(if set). This prevents cross seeds from conflicting with
each other. The tracker subfolder names will correspond to the ones set in
Prowlarr/Jackett and autobrr, ensure they match to prevent multiple folders for
a single tracker. Set this to
true
to use the flat-folder style linking
previously used in v5.
With
flatLinking: false
(default):
linkDir/
├─ TrackerA/
│ ├─ Movie.mkv
├─ TrackerB/
│ ├─ Movie.mkv
│ ├─ Show S01/
│ | ├─ Show S01E01.mkv
With
flatLinking: true
linkDir/
├─ Movie.mkv <--- Both TrackerA and TrackerB cross seeds share the same file
├─ Show S01/
│ ├─ Show S01E01.mkv
flatLinking
Examples (CLI)
cross-seed search --flat-linking
flatLinking
Examples (Config file)
flatLinking
true
flatLinking
false
blockList
Config File Name
CLI Short Form
CLI Long Form
Format
Config Default
Fallback
blockList
N/A
--block-list
string(s)
[]
[]
tip
Use the blocklist on categories, tags, or trackers on torrents you do not want
to cross seed from your torrent client.
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:
A substring of the name inside the .torrent file or parsed name from
path if data based.
nameRegex:
Similar to name but uses your own custom regex.
folder:
A substring of any parent folder in the path. Only applies to
dataDirs
searchees, not ones from your torrent client.
folderRegex:
Similar to folder but uses your own custom regex on the entire
parent path.
category:
Deluge labels are considered categories.
"category:"
blocklists
torrents without a category.
tag:
Transmission and rTorrent labels are considered tags.
"tag:"
blocklists torrents without a tag.
tracker:
If the announce url (from client/.torrent) is
you must use host
tracker.example.com:8080
infoHash:
Blocklist the torrent that matches this infohash
(case-insensitive).
sizeBelow:
Blocklist searchees with a size in bytes below this number.
sizeAbove:
Blocklist searchees with a size in bytes above this number.
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.
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"
"category:"
"tag:everybody"
"tag:"
"tracker:tracker.example.com:8080"
"infoHash:3317e6485454354751555555366a8308c1e92093"
"sizeBelow:12345"
"sizeAbove:98765"
Options on the command line
Options in the config file
All options
delay
torznab
sonarr
radarr
useClientTorrents
torrentDir
outputDir
dataDirs
maxDataDepth
linkCategory
duplicateCategories
linkDirs
linkType
matchMode
skipRecheck
includeSingleEpisodes
seasonFromEpisodes
autoResumeMaxDownload
ignoreNonRelevantFilesToResume
includeNonVideos
fuzzySizeThreshold
excludeOlder
excludeRecentSearch
action
torrentClients
notificationWebhookUrls
host
port
rssCadence
searchCadence
apiKey
snatchTimeout
searchTimeout
searchLimit
flatLinking
blockList