id = "qbittorrent-cli" name = "qBittorrent CLI" homepage = "https://github.com/ludviglundgren/qbittorrent-cli" description = "Command-line interface to manage qBittorrent." executables = ["qbt"] [dotfiles] # The upstream README documents ~/.config/qbt/.qbt.toml as the configuration # file for the qbt command. # https://github.com/ludviglundgren/qbittorrent-cli#configuration paths = ["[configHome]/qbt/.qbt.toml"] exclude = [] secret = [] # The documented TOML config stores the Web API key and password under the # [qbittorrent] table; preserve other settings while redacting credentials. [[dotfiles.secret_paths]] file = "[configHome]/qbt/.qbt.toml" format = "toml" match = { key_path = ["qbittorrent.apikey", "qbittorrent.password"] } [commands] format = 1 label = "qBittorrent CLI" description = "Add torrents and list torrents in a running qBittorrent. Connection settings come from the config file." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.subcommand]] path = ["torrent", "add"] label = "Add torrents" description = "Add torrent files or magnet links. Glob patterns work for files." [[commands.subcommand.source]] id = "help" kind = "help" url = "https://ludviglundgren.github.io/qbittorrent-cli/commands/qbt_torrent_add/" revision = "2026-10-27" evidence = """ Add new torrent(s) to qBittorrent from file or magnet. Supports glob pattern for files like: ./files/*.torrent qbt torrent add [flags] qbt torrent add my-file.torrent --category test --tags tag1 qbt torrent add ./files/*.torrent --paused --skip-hash-check qbt torrent add magnet:?xt=urn:btih:5dee65101db281ac9c46344cd6b175cdcad53426&dn=download --category string Add torrent to the specified category --dry-run Run without doing anything --first-last-piece Prioritize first and last pieces for preview --paused Add torrent in paused state --recheck Force recheck after adding (useful when using --paused) --save-path string Add torrent to the specified path --sequential Download torrent pieces in sequential order --skip-hash-check Skip hash check --tags stringArray Add tags to torrent -q, --quiet suppress output """ [[commands.subcommand.field]] id = "sources" label = "Torrent files or magnet links" type = "string" position = 0 multiple = true sources = ["help"] [[commands.subcommand.field]] id = "category" label = "Category" type = "string" option = ["--category"] sources = ["help"] [[commands.subcommand.field]] id = "tags" label = "Tags" type = "string" option = ["--tags"] multiple = true sources = ["help"] [[commands.subcommand.field]] id = "save_path" label = "Save path" type = "path" option = ["--save-path"] path = { kind = "directory", role = "output", must_exist = false } sources = ["help"] [[commands.subcommand.field]] id = "paused" label = "Add paused" type = "boolean" option = ["--paused"] sources = ["help"] [[commands.subcommand.field]] id = "skip_hash_check" label = "Skip hash check" type = "boolean" option = ["--skip-hash-check"] sources = ["help"] [[commands.subcommand.field]] id = "sequential" label = "Sequential download" type = "boolean" option = ["--sequential"] sources = ["help"] [[commands.subcommand.field]] id = "dry_run" label = "Dry run" type = "boolean" option = ["--dry-run"] sources = ["help"] [[commands.subcommand.field]] id = "quiet" label = "Quiet" type = "boolean" option = ["--quiet", "-q"] sources = ["help"] [[commands.subcommand.task]] id = "add" label = "Add torrents" fields = ["sources", "category", "tags", "save_path", "paused"] required = ["sources"] [[commands.subcommand.task]] id = "add-paused" label = "Add paused, skip hash check" set = { paused = [true], skip_hash_check = [true] } fields = ["sources", "paused", "skip_hash_check", "category"] required = ["sources"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["sources", "category", "tags", "save_path", "paused"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["skip_hash_check", "sequential", "dry_run", "quiet"] [[commands.subcommand]] path = ["torrent", "list"] label = "List torrents" description = "List torrents, filtered by state, category, tag or hashes." [[commands.subcommand.source]] id = "help" kind = "help" url = "https://ludviglundgren.github.io/qbittorrent-cli/commands/qbt_torrent_list/" revision = "2026-10-27" evidence = """ qbt torrent list [flags] qbt torrent list --filter=downloading --category=linux-iso -c, --category string Filter by category. All categories by default. -f, --filter string Filter by state. Available filters: all, downloading, seeding, completed, paused, active, inactive, resumed, stalled, stalled_uploading, stalled_downloading, errored (default "all") --hashes strings Filter by hashes. Separated by comma: "hash1,hash2". --output string Print as [formatted text (default), json] -t, --tag string Filter by tag. Single tag: tag1 """ [[commands.subcommand.field]] id = "filter" label = "State filter" type = "enum" option = ["--filter", "-f"] choices = [ { value = "all", label = "All" }, { value = "downloading", label = "Downloading" }, { value = "seeding", label = "Seeding" }, { value = "completed", label = "Completed" }, { value = "paused", label = "Paused" }, { value = "active", label = "Active" }, { value = "inactive", label = "Inactive" }, { value = "resumed", label = "Resumed" }, { value = "stalled", label = "Stalled" }, { value = "stalled_uploading", label = "Stalled uploading" }, { value = "stalled_downloading", label = "Stalled downloading" }, { value = "errored", label = "Errored" }, ] sources = ["help"] [[commands.subcommand.field]] id = "category" label = "Category" type = "string" option = ["--category", "-c"] sources = ["help"] [[commands.subcommand.field]] id = "tag" label = "Tag" type = "string" option = ["--tag", "-t"] sources = ["help"] [[commands.subcommand.field]] id = "hashes" label = "Hashes" description = "Comma-separated: hash1,hash2." type = "string" option = ["--hashes"] sources = ["help"] [[commands.subcommand.field]] id = "output" label = "Output format" type = "enum" option = ["--output"] choices = [{ value = "json", label = "JSON" }] sources = ["help"] [[commands.subcommand.task]] id = "list" label = "List by state" fields = ["filter", "category", "tag"] required = [] [[commands.subcommand.task]] id = "json" label = "List as JSON" set = { output = ["json"] } lock = ["output"] fields = ["filter", "category", "tag", "hashes", "output"] required = [] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["filter", "category", "tag"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["hashes", "output"]