| Crates.io | superseedr |
| lib.rs | superseedr |
| version | 0.9.35 |
| created_at | 2025-10-22 00:52:58.275463+00 |
| updated_at | 2026-01-26 00:56:39.685632+00 |
| description | A BitTorrent Client in your Terminal. |
| homepage | |
| repository | https://github.com/Jagalite/superseedr |
| max_upload_size | |
| id | 1894720 |
| size | 2,557,585 |
Superseedr is a modern Rust BitTorrent client featuring a high-performance terminal UI, real-time swarm observability, secure VPN-aware Docker setups, and zero manual network configuration. It is fast, privacy-oriented, and built for both desktop users and homelab/server workflows.

| Experience | Networking | Engineering |
|---|---|---|
| ๐จ 60 FPS TUI Fluid, animated interface with heatmaps. |
๐ณ Docker + VPN Gluetun integration out of the box. |
๐งฌ BitTorrent v2 Hybrid swarms & Merkle tree verification. |
| ๐ Deep Analytics Real-time bandwidth graphs & peer metrics. |
โ Auto-Bind Dynamic port reloading without restarts. |
๐ง Self-Tuning Adaptive limits control for max speed and I/O Stability. |
| ๐งฒ Magnet Links Native OS-level handler support. |
๐ป Private Mode Optional builds disabling DHT/PEX. |
โ
Verified Core Pure Rust, fuzz-tested for correctness. |
Download platform-specific installers from the releases page (includes browser magnet link support):
.msi installer.pkg installer.deb packagecargo install superseedrbrew install superseedryay -S superseedr (via AUR)Open a terminal
superseedr
| Key | Action |
|---|---|
m |
Open full manual / help |
q |
Quit |
โ โ โ โ |
Navigate |
c |
Configure Settings |
[!TIP]
Add torrents by clicking magnet links in your browser or opening .torrent files. Copying and pasting (ctrl + v) magnet links or paths to torrent files will also work.
Connection or Disk issues?
ulimit -n 65536Slow downloads?
More help: See the FAQ or open an issue
Superseedr offers a fully secured Docker setup using Gluetun. All BitTorrent traffic is routed through a VPN tunnel with dynamic port forwarding and zero manual network configuration.
If you want privacy and simplicity, Docker is the recommended way to run Superseedr.
Follow steps below to create .env and .gluetun.env files to configure OpenVPN or WireGuard.
# Docker (No VPN):
# Uses internal container storage. Data persists until the container is removed.
docker run -it jagatranvo/superseedr:latest
# Docker Compose (Gluetun with your VPN):
# Requires .env and .gluetun.env configuration (see below).
docker compose up -d && docker compose attach superseedr
Get the Docker configuration files: You only need the Docker-related files to run the pre-built image, not the full source code.
Option A: Clone the repository (Simple) This gets you everything, including the source code.
git clone https://github.com/Jagalite/superseedr.git
cd superseedr
Option B: Download only the necessary files (Minimal) This is ideal if you just want to run the Docker image.
mkdir superseedr
cd superseedr
# Download all compose and example config files
curl -sL \
-O https://raw.githubusercontent.com/Jagalite/superseedr/main/docker-compose.yml \
-O https://raw.githubusercontent.com/Jagalite/superseedr/main/docker-compose.common.yml \
-O https://raw.githubusercontent.com/Jagalite/superseedr/main/docker-compose.standalone.yml \
-O https://raw.githubusercontent.com/Jagalite/superseedr/main/.env.example \
-O https://raw.githubusercontent.com/Jagalite/superseedr/main/.gluetun.env.example
# Note the example files might be hidden run the commands below to make a copy.
cp .env.example .env
cp .gluetun.env.example .gluetun.env
Recommended: Create your environment files:
App Paths & Build Choice: Edit your .env file from the example. This file controls your data paths and which build to use.
cp .env.example .env
Edit .env to set your absolute host paths (e.g., HOST_SUPERSEEDR_DATA_PATH=/my/path/data). This is important: it maps the container's internal folders (like /superseedr-data) to real folders on your computer. This ensures your downloads and config files are saved safely on your host machine, so no data is lost when the container stops or is updated.
VPN Config: Edit your .gluetun.env file from the example.
cp .gluetun.env.example .gluetun.env
Edit .gluetun.env with your VPN provider, credentials, and server region.
Gluetun provides:
Many VPN providers frequently assign new inbound ports. Most BitTorrent clients must be restarted when this port changes, breaking connectability and slowing downloads. Superseedr can detect Gluetunโs updated port and reload the listener live, without a restart, preserving swarm performance.
.gluetun.env file.docker-compose.yml file:docker compose up -d && docker compose attach superseedr
To detach from the TUI without stopping the container, use the Docker key sequence:
Ctrl+Pfollowed byCtrl+Q. Optional: press[z]first to enter power-saving mode.
This runs the client directly, exposing its port to your host. It's simpler but provides no VPN protection.
docker-compose.standalone.yml file:docker compose -f docker-compose.standalone.yml up -d && docker compose attach superseedr
To detach from the TUI without stopping the container, use the Docker key sequence:
Ctrl+Pfollowed byCtrl+Q. Optional: press[z]first to enter power-saving mode.
Superseedr includes several integration points designed for automation, headless operation, and easy pairing with VPN containers like Gluetun.
Check out the Superseedr Plugins Repository for plugins (beta testing).
The application automatically watches configured directories for new content. You can drop files into your watch folder to trigger actions immediately.
| File Type | Action |
|---|---|
.torrent |
Automatically adds the torrent and begins downloading. |
.magnet |
A text file containing a magnet link. Adds the magnet download. |
.path |
A text file containing a local absolute path to a .torrent file. |
shutdown.cmd |
If a file named shutdown.cmd appears, the client will initiate a graceful shutdown. |
You can control the running daemon using the built-in CLI commands. These commands write to the watch folder, allowing you to control the app from scripts or other containers.
# Add a magnet link
superseedr add "magnet:?xt=urn:btih:..."
# Add a torrent file by path
superseedr add "/path/to/linux.iso.torrent"
# Stop the client gracefully
superseedr stop-client
For external monitoring dashboards or health checks, Superseedr periodically dumps its full internal state to a JSON file.
status_files/app_state.json (inside your data directory).You can control how often this file is updated using the output_status_interval setting.
Environment Variable: Set this variable in your Docker config to change the update frequency (in seconds).
# Update the status file every 5 seconds
SUPERSEEDR_OUTPUT_STATUS_INTERVAL=5
Superseedr is built on a Reactive Actor architecture verified by model-based fuzzing, ensuring stability under chaos. It features a Self-Tuning Resource Allocator that adapts to your hardware in real-time and a hybrid BitTorrent v2 engine, all powered by asynchronous Tokio streams for maximum throughput.
This section is designed for developers, contributors, and AI agents seeking to understand the internal design decisions that drive Superseedr's performance.
Superseedr is built on the Tokio runtime, leveraging asynchronous I/O for maximum concurrency.
tokio::io::split). This allows the client to saturate download and upload bandwidth simultaneously without thread blocking or lock contention, ensuring the UI remains responsive even with thousands of active connections.mpsc channels, meaning a slow or misbehaving peer cannot block the main event loop or affect other connections.notify) on the VPN configuration volume. When Gluetun rotates the forwarded port, Superseedr detects the file change and instantly rebinds the TCP listener to the new port without dropping the swarm state or restarting the process.--no-default-features, the DHT and Peer Exchange (PEX) modules are completely excluded from the binary, guaranteeing zero leakage of private swarms.The application logic abandons traditional mutex-heavy threading in favor of a Functional Reactive architecture.
TorrentManager operates as a Finite State Machine (FSM). External events (Network I/O, Timer Ticks) are transmuted into Action enums, processed purely in memory, and result in a list of Effects.Instead of static ulimit values, Superseedr runs a Stochastic Hill Climbing optimizer in the background.
Superseedr calculates granular metrics in real-time to drive optimization and observability:
Sum(|Offset - PrevOffset|) / Ops. This detects random I/O bottlenecks that raw speed metrics miss.TotalSeekDistance / TotalBytes), serving as the primary penalty factor for the self-tuner.Superseedr implements optimized versions of the core BitTorrent exchange strategies:
Superseedr includes specialized TUI components (src/tui/view.rs) to visualize data usually hidden by other clients:
.torrent file contents and internal directory structures before the download begins.Superseedr implements the full Merkle Tree verification stack required for BitTorrent v2.
VerifyPieceV2 effects to simultaneously handshake with legacy v1 peers (SHA-1) and modern v2 peers (SHA-256).PeerSession uses a dynamic sliding window (AIMD-like algorithm) that expands or shrinks the request queue based on the peer's real-time response rate (blocks_received_interval), maximizing link saturation.Superseedr implements the following BitTorrent Enhancement Proposals (BEPs):