- Python 84.4%
- JavaScript 5.8%
- Batchfile 4.4%
- HTML 4.1%
- CSS 0.7%
- Other 0.6%
| .github/workflows | ||
| .grok | ||
| hooks | ||
| tests | ||
| tools | ||
| web_static | ||
| .gitattributes | ||
| .gitignore | ||
| agents.md | ||
| app_paths.py | ||
| app_version.py | ||
| BUILD.md | ||
| build_exe.bat | ||
| clients.py | ||
| config.example.json | ||
| config_manager.py | ||
| libcrypto-1_1-x64.dll | ||
| libcrypto-1_1.dll | ||
| libcrypto-3-x64.dll | ||
| libssl-1_1-x64.dll | ||
| libssl-1_1.dll | ||
| libssl-3-x64.dll | ||
| libtorrent_env.py | ||
| list_torrents.py | ||
| main.py | ||
| pytest.ini | ||
| README.md | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| rss_manager.py | ||
| search_dialog.py | ||
| SerrebiTorrent.spec | ||
| session_manager.py | ||
| torrent_creator.py | ||
| torrent_parsing.py | ||
| torrent_search.py | ||
| update_helper.bat | ||
| updater.py | ||
| web_server.py | ||
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.
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
- Download the latest ZIP.
- Extract the entire
SerrebiTorrentfolder somewhere (example:C:\Portable\SerrebiTorrent\). - 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)
- Install Python 3.14.
git clone https://github.com/serrebidev/SerrebiTorrentpython -m pip install -r requirements.txt- Ensure the Python 3.14 Windows
libtorrentextension and its DLLs are installed or available onPATH— it isn't published on PyPI. - 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 logincompleted) - 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:
- Downloads the release ZIP using the update manifest asset (
SerrebiTorrent-update.json). - Verifies the ZIP's SHA-256 against the manifest.
- Verifies the Authenticode signature on the new
SerrebiTorrent.exe. - 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=0to delete the backup right after a successful update. - Multiple — set
SERREBITORRENT_KEEP_BACKUPS=Nto 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 ManagerCtrl+O/Ctrl+U— Add torrent file / Add URL or magnetCtrl+S/Ctrl+P— Start / Stop selected torrentsDelete/Shift+Delete— Remove / Remove with dataCtrl+A— Select allCtrl+N— Create a torrentCtrl+F— Search for torrentsTab— 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.