| name | qbittorrent |
| description | This skill should be used when the user asks about torrents, downloading, seeding, or the qBittorrent client. Triggers include: "what's downloading", "list torrents", "add a torrent", "pause/resume/delete torrent", "torrent speed", "download queue", "qbit", "qBittorrent stats", "check download status", or any mention of managing a torrent client. |
qBittorrent WebUI API
Manage torrents via qBittorrent's WebUI API (v4.1+).
Purpose
This skill provides read and write access to your qBittorrent torrent client:
- Monitor active, seeding, and completed torrents
- Add torrents by magnet link, URL, or file upload
- Control torrent state (pause, resume, delete)
- Manage categories and tags
- Adjust global and per-torrent speed limits
- View torrent files, trackers, and properties
- Recheck torrent data integrity
Operations include both read and write actions. Always confirm before deleting torrents with file deletion.
Setup
Credentials are configured in the arrs plugin settings (userConfig). A SessionStart hook writes them to ~/.config/lab-arrs/config.env, which the scripts load automatically โ no manual file editing. Variables used:
QBITTORRENT_URL="http://localhost:8080"
QBITTORRENT_USERNAME="admin"
QBITTORRENT_PASSWORD="adminadmin"
Quick Reference
List Torrents
./scripts/qbit-api.sh list
./scripts/qbit-api.sh list --filter downloading
./scripts/qbit-api.sh list --filter seeding
./scripts/qbit-api.sh list --filter paused
./scripts/qbit-api.sh list --category movies
Filters: all, downloading, seeding, completed, paused, active, inactive, stalled, errored
Get Torrent Info
./scripts/qbit-api.sh info <hash>
./scripts/qbit-api.sh files <hash>
./scripts/qbit-api.sh trackers <hash>
Add Torrent
./scripts/qbit-api.sh add "magnet:?xt=..." --category movies
./scripts/qbit-api.sh add-file /path/to/file.torrent --paused
Control Torrents
./scripts/qbit-api.sh pause <hash>
./scripts/qbit-api.sh resume <hash>
./scripts/qbit-api.sh delete <hash>
./scripts/qbit-api.sh delete <hash> --files
./scripts/qbit-api.sh recheck <hash>
Categories & Tags
./scripts/qbit-api.sh categories
./scripts/qbit-api.sh tags
./scripts/qbit-api.sh set-category <hash> movies
./scripts/qbit-api.sh add-tags <hash> "important,archive"
Transfer Info
./scripts/qbit-api.sh transfer
./scripts/qbit-api.sh speedlimit
./scripts/qbit-api.sh set-speedlimit --down 5M --up 1M
App Info
./scripts/qbit-api.sh version
./scripts/qbit-api.sh preferences
Response Format
Torrent object includes:
hash, name, state, progress
dlspeed, upspeed, eta
size, downloaded, uploaded
category, tags, save_path
States: downloading, stalledDL, uploading, stalledUP, pausedDL, pausedUP, queuedDL, queuedUP, checkingDL, checkingUP, error, missingFiles
Workflow
When the user asks about torrents:
- "What's downloading?" โ Run
list --filter downloading
- "Add this magnet link" โ Run
add "<magnet>" with appropriate category
- "Pause all torrents" โ Run
pause all
- "Resume seeding" โ Run
resume all or filter by hash
- "Show torrent details" โ Run
info <hash> and files <hash>
- "List by category" โ Run
list --category movies
- "Set speed limits" โ Run
set-speedlimit --down 5M --up 1M
Notes
- Requires network access to your qBittorrent server
- Uses qBittorrent WebUI API v4.1+
- All data operations return JSON
- Delete operations with --files are permanent - always confirm before deleting downloaded files
- Speed limits support units: K (KB/s), M (MB/s), or raw bytes
- Magnet links and torrent URLs are added without local file upload
- Categories must exist before assignment (create via WebUI or API)