{
  "id": "qbittorrent-cli",
  "name": "qBittorrent CLI",
  "homepage": "https://github.com/ludviglundgren/qbittorrent-cli",
  "description": "Command-line interface to manage qBittorrent.",
  "executables": [
    "qbt"
  ],
  "dotfiles": {
    "paths": [
      "[configHome]/qbt/.qbt.toml"
    ],
    "exclude": [],
    "secret": [],
    "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
    },
    "subcommand": [
      {
        "path": [
          "torrent",
          "add"
        ],
        "label": "Add torrents",
        "description": "Add torrent files or magnet links. Glob patterns work for files.",
        "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\nqbt torrent add [flags]\n  qbt torrent add my-file.torrent --category test --tags tag1\n  qbt torrent add ./files/*.torrent --paused --skip-hash-check\n  qbt torrent add magnet:?xt=urn:btih:5dee65101db281ac9c46344cd6b175cdcad53426&dn=download\n      --category string         Add torrent to the specified category\n      --dry-run                 Run without doing anything\n      --first-last-piece        Prioritize first and last pieces for preview\n      --paused                  Add torrent in paused state\n      --recheck                 Force recheck after adding (useful when using --paused)\n      --save-path string        Add torrent to the specified path\n      --sequential              Download torrent pieces in sequential order\n      --skip-hash-check         Skip hash check\n      --tags stringArray        Add tags to torrent\n  -q, --quiet           suppress output\n"
          }
        ],
        "field": [
          {
            "id": "sources",
            "label": "Torrent files or magnet links",
            "type": "string",
            "position": 0,
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "category",
            "label": "Category",
            "type": "string",
            "option": [
              "--category"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "tags",
            "label": "Tags",
            "type": "string",
            "option": [
              "--tags"
            ],
            "multiple": true,
            "sources": [
              "help"
            ]
          },
          {
            "id": "save_path",
            "label": "Save path",
            "type": "path",
            "option": [
              "--save-path"
            ],
            "path": {
              "kind": "directory",
              "role": "output",
              "must_exist": false
            },
            "sources": [
              "help"
            ]
          },
          {
            "id": "paused",
            "label": "Add paused",
            "type": "boolean",
            "option": [
              "--paused"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "skip_hash_check",
            "label": "Skip hash check",
            "type": "boolean",
            "option": [
              "--skip-hash-check"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "sequential",
            "label": "Sequential download",
            "type": "boolean",
            "option": [
              "--sequential"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "dry_run",
            "label": "Dry run",
            "type": "boolean",
            "option": [
              "--dry-run"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "quiet",
            "label": "Quiet",
            "type": "boolean",
            "option": [
              "--quiet",
              "-q"
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "add",
            "label": "Add torrents",
            "fields": [
              "sources",
              "category",
              "tags",
              "save_path",
              "paused"
            ],
            "required": [
              "sources"
            ]
          },
          {
            "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"
            ]
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "sources",
              "category",
              "tags",
              "save_path",
              "paused"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "skip_hash_check",
              "sequential",
              "dry_run",
              "quiet"
            ]
          }
        ]
      },
      {
        "path": [
          "torrent",
          "list"
        ],
        "label": "List torrents",
        "description": "List torrents, filtered by state, category, tag or hashes.",
        "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]\nqbt torrent list --filter=downloading --category=linux-iso\n  -c, --category string   Filter by category. All categories by default.\n  -f, --filter string     Filter by state. Available filters: all, downloading, seeding, completed, paused, active, inactive, resumed,\n                          stalled, stalled_uploading, stalled_downloading, errored (default \"all\")\n      --hashes strings    Filter by hashes. Separated by comma: \"hash1,hash2\".\n      --output string     Print as [formatted text (default), json]\n  -t, --tag string        Filter by tag. Single tag: tag1\n"
          }
        ],
        "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"
            ]
          },
          {
            "id": "category",
            "label": "Category",
            "type": "string",
            "option": [
              "--category",
              "-c"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "tag",
            "label": "Tag",
            "type": "string",
            "option": [
              "--tag",
              "-t"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "hashes",
            "label": "Hashes",
            "description": "Comma-separated: hash1,hash2.",
            "type": "string",
            "option": [
              "--hashes"
            ],
            "sources": [
              "help"
            ]
          },
          {
            "id": "output",
            "label": "Output format",
            "type": "enum",
            "option": [
              "--output"
            ],
            "choices": [
              {
                "value": "json",
                "label": "JSON"
              }
            ],
            "sources": [
              "help"
            ]
          }
        ],
        "task": [
          {
            "id": "list",
            "label": "List by state",
            "fields": [
              "filter",
              "category",
              "tag"
            ],
            "required": []
          },
          {
            "id": "json",
            "label": "List as JSON",
            "set": {
              "output": [
                "json"
              ]
            },
            "lock": [
              "output"
            ],
            "fields": [
              "filter",
              "category",
              "tag",
              "hashes",
              "output"
            ],
            "required": []
          }
        ],
        "group": [
          {
            "id": "basic",
            "label": "Basic",
            "fields": [
              "filter",
              "category",
              "tag"
            ]
          },
          {
            "id": "advanced",
            "label": "Advanced",
            "fields": [
              "hashes",
              "output"
            ]
          }
        ]
      }
    ]
  }
}
