An accessible torrent client for myself.
  • Python 84.4%
  • JavaScript 5.8%
  • Batchfile 4.4%
  • HTML 4.1%
  • CSS 0.7%
  • Other 0.6%
Find a file
2026-08-08 17:20:09 -07:00
.github/workflows fix ci dependency setup 2026-06-27 07:42:59 -07:00
.grok Redesigned the torrent list view so it doesn't suck 2025-12-15 22:33:24 -08:00
hooks fix(build): clean release notes and pyinstaller hooks 2026-04-29 08:57:50 -07:00
tests feat: verify self-contained Windows releases 2026-08-08 17:18:46 -07:00
tools feat: verify self-contained Windows releases 2026-08-08 17:18:46 -07:00
web_static fix updater visibility and qbit removal 2026-06-26 20:08:19 -07:00
.gitattributes Initial commit 2025-11-26 12:27:57 -08:00
.gitignore chore: gitignore local Claude settings, torrent state, and pytest cache 2026-05-04 21:42:17 -07:00
agents.md feat: adopt blindDL's indexers when it is on the same machine 2026-08-08 16:17:00 -07:00
app_paths.py Many new features! 2025-12-13 21:49:39 -08:00
app_version.py chore(release): v1.10.0 2026-08-08 17:20:09 -07:00
BUILD.md feat: verify self-contained Windows releases 2026-08-08 17:18:46 -07:00
build_exe.bat feat: verify self-contained Windows releases 2026-08-08 17:18:46 -07:00
clients.py fix: tolerate delayed qBittorrent removal 2026-07-09 19:12:16 -07:00
config.example.json feat: add announce IP override reported to trackers 2026-05-22 13:46:43 -07:00
config_manager.py feat: search torrent indexers from the Tools menu 2026-08-08 15:51:03 -07:00
libcrypto-1_1-x64.dll Initial project import with core app and dependencies 2025-11-26 12:33:20 -08:00
libcrypto-1_1.dll Initial project import with core app and dependencies 2025-11-26 12:33:20 -08:00
libcrypto-3-x64.dll feat: search torrent indexers from the Tools menu 2026-08-08 15:51:03 -07:00
libssl-1_1-x64.dll Initial project import with core app and dependencies 2025-11-26 12:33:20 -08:00
libssl-1_1.dll Initial project import with core app and dependencies 2025-11-26 12:33:20 -08:00
libssl-3-x64.dll feat: search torrent indexers from the Tools menu 2026-08-08 15:51:03 -07:00
libtorrent_env.py fix release and runtime edge cases 2026-06-27 07:40:39 -07:00
list_torrents.py fix: harden remote clients, updater, and web safety; pre-release bug fixes 2026-06-21 08:41:28 -07:00
main.py feat: verify self-contained Windows releases 2026-08-08 17:18:46 -07:00
pytest.ini Add update pipeline, tests, and refactor hash handling 2025-12-28 12:24:34 -08:00
README.md docs: update latest release version 2026-08-08 17:19:19 -07:00
requirements-dev.txt fix: address lint/type issues and harden defaults 2026-01-03 22:00:50 -08:00
requirements.txt fix ci dependency setup 2026-06-27 07:42:59 -07:00
rss_manager.py fix: harden torrent client stability and release safety 2026-06-20 10:08:53 -07:00
search_dialog.py feat: adopt blindDL's indexers when it is on the same machine 2026-08-08 16:17:00 -07:00
SerrebiTorrent.spec feat: verify self-contained Windows releases 2026-08-08 17:18:46 -07:00
session_manager.py feat: search torrent indexers from the Tools menu 2026-08-08 15:51:03 -07:00
torrent_creator.py fix: harden remote clients, updater, and web safety; pre-release bug fixes 2026-06-21 08:41:28 -07:00
torrent_parsing.py fix: harden remote clients, updater, and web safety; pre-release bug fixes 2026-06-21 08:41:28 -07:00
torrent_search.py feat: adopt blindDL's indexers when it is on the same machine 2026-08-08 16:17:00 -07:00
update_helper.bat fix release and runtime edge cases 2026-06-27 07:40:39 -07:00
updater.py fix release and runtime edge cases 2026-06-27 07:40:39 -07:00
web_server.py fix updater visibility and qbit removal 2026-06-26 20:08:19 -07:00

SerrebiTorrent

A vibe-coded, keyboard-first, screen-reader-friendly torrent manager for Windows. Manage torrents locally with built-in libtorrent, or drive a remote client — qBittorrent, Transmission, or rTorrent — from the same interface.

Join SerrebiProjects on Telegram

Have a question, hit a bug, or want early word on new releases? Join the SerrebiProjects Telegram group — the community hub for SerrebiTorrent and my other projects, and the fastest place to get help.

Features

  • Connects to local libtorrent, or a remote qBittorrent, Transmission, or rTorrent (SCGI/XML-RPC) client, all from one interface.
  • Live download/upload speeds, progress, ratio, tracker host, and status messages for each torrent.
  • Searches torrent indexers and adds what you pick, without leaving the app.
  • Creates torrents.
  • Responsive UI: remote operations run in the background so the app never freezes.
  • Quick filters (All, Downloading, Complete, Active) plus a tracker tree in the sidebar.
  • Full keyboard workflow and tray support, built and tested with NVDA.
  • Built-in updater that verifies SHA-256 and Authenticode before applying an update, with automatic backup and rollback.

Download and install

Grab the latest build from the Releases page. Latest: v1.10.0.

Windows portable

  1. Download the latest ZIP.
  2. Extract the entire SerrebiTorrent folder somewhere (example: C:\Portable\SerrebiTorrent\).
  3. Run SerrebiTorrent.exe — don't move the EXE out of its folder.

The ZIP contains SerrebiTorrent's private Python runtime, libtorrent, OpenSSL, web interface, and update helper. A regular Windows 11 64-bit computer does not need Python, pip, Visual C++ build tools, or a separate torrent client.

Portable data (profiles, preferences, resume data, logs) lives next to the app in SerrebiTorrent_Data\. Updating in place keeps this data untouched.

First-time setup

  • Open Connection Manager: Ctrl+Shift+C (or tray icon -> Switch Profile -> Connection Manager...).
  • Add a profile and connect:
    • Local — manages torrents via libtorrent on this PC (default profile on first run).
    • Remote — point at qBittorrent, Transmission, or rTorrent and enter credentials if needed.

Searching for torrents

Tools -> Search for Torrents... (Ctrl+F) searches Knaben, The Pirate Bay, EZTV, Nyaa, Torrents-CSV, LimeTorrents and BitSearch at once, filling the list as each answers. Sort by seeders, best match, size, newest or name; Enter adds the selected rows to the connected client, and Ctrl+C copies their magnet links.

Search sites... switches individual indexers off, and indexers added in a later release are searched by default. My indexers... adds your own Torznab or Newznab endpoint — a whole Prowlarr or Jackett instance counts as one. That is how private trackers are searched: those tools already hold the login and the passkey, so SerrebiTorrent never stores a tracker password. A private tracker's authenticated .torrent is fetched with your own credentials at the moment you add it, rather than being turned into a magnet that its swarm would refuse.

SerrebiTorrent ships with no indexers of its own configured — only the public ones above. If blindDL is installed on the same computer and has indexers set up, the search picks them up the first time it opens, since both use the same feed format. It only ever adds: an indexer you have edited here is never overwritten.

Settings

  • Local session + app settings: Tools -> Local Session Settings... (Ctrl+,) (or tray icon -> Settings -> Local Session Settings...).
  • Remote client settings (enabled only when connected): Tools -> qBittorrent/Transmission/rTorrent Remote Settings... (or tray icon -> Settings -> ...).

Run from source (developers)

  1. Install Python 3.14.
  2. git clone https://github.com/serrebidev/SerrebiTorrent
  3. python -m pip install -r requirements.txt
  4. Ensure the Python 3.14 Windows libtorrent extension and its DLLs are installed or available on PATH — it isn't published on PyPI.
  5. Launch it: python main.py

Building

build_exe.bat drives the whole release pipeline: PyInstaller packaging, Authenticode signing, and GitHub release publishing.

Prereqs:

  • Python 3.14 + dependencies from requirements.txt
  • Git + GitHub CLI (gh auth login completed)
  • Code signing cert installed
  • SignTool available (default path used, or set SIGNTOOL_PATH)

Commands:

  • build_exe.bat build — builds, signs, and zips locally.
  • build_exe.bat release — auto-bumps version, builds, signs, zips, tags, pushes, creates the GitHub release, and uploads the update manifest.
  • build_exe.bat dry-run — shows what it would do without modifying anything.

Versioning uses the latest vMAJOR.MINOR.PATCH tag as the base. If none exists, it starts at v1.0.0. Commits with BREAKING CHANGE or !: bump major; commits starting with feat (or containing feature) bump minor; otherwise it bumps patch.

Build output lands in dist\SerrebiTorrent\. For distribution, zip the entire SerrebiTorrent folder, not just the EXE.

Auto-updater

The app checks GitHub Releases for updates. Enable or disable the startup check in Local Session Settings, or run Tools -> Check for Updates at any time.

Update flow:

  1. Downloads the release ZIP using the update manifest asset (SerrebiTorrent-update.json).
  2. Verifies the ZIP's SHA-256 against the manifest.
  3. Verifies the Authenticode signature on the new SerrebiTorrent.exe.
  4. Runs a hidden helper script that waits for the app to exit, backs up the current install to <install_dir>_backup_<timestamp>, swaps in the new files, and restarts the app.

Backup cleanup runs automatically:

  • Default — keeps 1 backup (newest); cleanup starts after a 5-minute grace period.
  • Immediate — set SERREBITORRENT_KEEP_BACKUPS=0 to delete the backup right after a successful update.
  • Multiple — set SERREBITORRENT_KEEP_BACKUPS=N to keep N most recent backups.

Other environment variables:

  • SERREBITORRENT_TRUSTED_SIGNING_THUMBPRINTS — comma-separated list of trusted certificate thumbprints.

If an update fails, the backup is restored automatically. Check the updater log in %TEMP%\SerrebiTorrent_update_*.log if something goes wrong. The update process runs completely hidden — no console windows appear, and user data in SerrebiTorrent_Data is preserved throughout.

Accessibility and shortcuts

Everything stays reachable by keyboard:

  • Ctrl+Shift+C — Connection Manager
  • Ctrl+O / Ctrl+U — Add torrent file / Add URL or magnet
  • Ctrl+S / Ctrl+P — Start / Stop selected torrents
  • Delete / Shift+Delete — Remove / Remove with data
  • Ctrl+A — Select all
  • Ctrl+N — Create a torrent
  • Ctrl+F — Search for torrents
  • Tab — Toggle focus between the sidebar and torrent list; double-clicking the tray icon restores the window.

Logs live under SerrebiTorrent_Data\logs, next to the EXE/script in portable mode (or in per-user app data in installed mode).

Contributing

Pull requests are welcome. If SerrebiTorrent has been useful to you, open a PR with a fix or feature and I'll review it.

Community and support

Report bugs and request features in Issues. For questions, feedback, and release news, join the SerrebiProjects Telegram group.