{"id":34530655,"url":"https://github.com/jagalite/superseedr","last_synced_at":"2026-03-13T04:05:45.882Z","repository":{"id":319710492,"uuid":"1079005883","full_name":"Jagalite/superseedr","owner":"Jagalite","description":"A BitTorrent Client in your Terminal","archived":false,"fork":false,"pushed_at":"2026-03-10T02:15:45.000Z","size":8872,"stargazers_count":524,"open_issues_count":20,"forks_count":15,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-03-10T08:16:20.399Z","etag":null,"topics":["bittorrent","docker","rust","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jagalite.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-18T22:09:46.000Z","updated_at":"2026-03-06T09:18:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"0c951744-2c91-42ce-8ee8-89b0e6b82d94","html_url":"https://github.com/Jagalite/superseedr","commit_stats":null,"previous_names":["jagalite/superseedr"],"tags_count":71,"template":false,"template_full_name":null,"purl":"pkg:github/Jagalite/superseedr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jagalite%2Fsuperseedr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jagalite%2Fsuperseedr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jagalite%2Fsuperseedr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jagalite%2Fsuperseedr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jagalite","download_url":"https://codeload.github.com/Jagalite/superseedr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jagalite%2Fsuperseedr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30457987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T03:55:51.346Z","status":"ssl_error","status_checked_at":"2026-03-13T03:55:33.055Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bittorrent","docker","rust","tui"],"created_at":"2025-12-24T05:35:50.718Z","updated_at":"2026-03-13T04:05:45.876Z","avatar_url":"https://github.com/Jagalite.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/Jagalite/superseedr-assets/main/superseedr_logo_transparent.gif\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/Jagalite/superseedr-assets/main/superseedr_logo.gif\"\u003e\n  \u003cimg alt=\"Superseedr Logo\" src=\"https://raw.githubusercontent.com/Jagalite/superseedr-assets/main/superseedr_logo.gif\"\u003e\n\u003c/picture\u003e\n\n# A BitTorrent Client in your Terminal\n\n[![Rust](https://github.com/Jagalite/superseedr/actions/workflows/rust.yml/badge.svg)](https://github.com/Jagalite/superseedr/actions/workflows/rust.yml) [![Nightly Fuzzing](https://github.com/Jagalite/superseedr/actions/workflows/nightly.yml/badge.svg)](https://github.com/Jagalite/superseedr/actions/workflows/nightly.yml) ![GitHub release](https://img.shields.io/github/v/release/Jagalite/superseedr) [![crates.io](https://img.shields.io/crates/d/superseedr)](https://crates.io/crates/superseedr) [![Built With Ratatui](https://ratatui.rs/built-with-ratatui/badge.svg)](https://ratatui.rs/) \u003ca title=\"This tool is Tool of The Week on Terminal Trove, The $HOME of all things in the terminal\" href=\"https://terminaltrove.com/\"\u003e\u003cimg src=\"https://cdn.terminaltrove.com/media/badges/tool_of_the_week/png/terminal_trove_tool_of_the_week_gold_transparent.png\" alt=\"Terminal Trove Tool of The Week\" /\u003e\u003c/a\u003e\n\nSuperseedr 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.\n\n![Feature Demo](https://github.com/Jagalite/superseedr-assets/blob/main/superseedr_landing.webp)\n\n## 🚀 Features at a Glance\n\n| **Experience** | **Networking** | **Engineering** |\n| :--- | :--- | :--- |\n| 🎨 **60 FPS TUI + Themes**\u003cbr\u003eFluid, animated interface with heatmaps and 40 live-switchable built-in themes. | 🐳 **Docker + VPN**\u003cbr\u003eGluetun integration with dynamic port reloading. | 🧬 **BitTorrent v2**\u003cbr\u003eHybrid swarms \u0026 Merkle tree verification. |\n| 📊 **Deep Analytics**\u003cbr\u003eReal-time bandwidth graphs \u0026 peer metrics. | 📰 **RSS Feeds**\u003cbr\u003eIn-app feed tracking, filtering, and ingest. | 🧠 **Self-Tuning**\u003cbr\u003eAdaptive limits control for max speed and I/O Stability. |\n| 🧲 **Magnet Links**\u003cbr\u003eNative OS-level handler support. | 👻 **Private Mode**\u003cbr\u003eOptional builds disabling DHT/PEX. | 📡 **Integrity Prober**\u003cbr\u003eContinuous lightweight background integrity checks with fast recovery reprobes. |\n\n### Terminal Torrenting With Superseedr\n\n* **Pushing TUI Boundaries:** Experience a fluid, 60 FPS interface that feels like a native GUI, featuring smooth animations, high-density visualizations, and 40 built-in themes rarely seen in terminal apps.\n* **See What's Happening:** Diagnose slow downloads instantly with deep swarm analytics, heatmaps, and live bandwidth graphs.\n* **Set It and Forget It:** Automatic port forwarding and dynamic listener reloading in Docker ensure your connection stays alive, even if your VPN resets.\n* **Crash-Proof Design:** Leverages Rust's memory safety guarantees to run indefinitely on low-resource servers without leaks or instability.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/Jagalite/superseedr-assets/blob/main/superseedr_theme.webp\"/\u003e\n\u003c/p\u003e\n\n## Installation\n\nDownload platform-specific installers from the [releases page](https://github.com/Jagalite/superseedr/releases) **(includes browser magnet link support)**:\n- Windows: `.msi` installer\n- macOS: `.pkg` installer  \n- Debian/Ubuntu: `.deb` package\n\n### Package Managers\n- **Cargo:** `cargo install superseedr`\n- **Brew:** `brew install superseedr`\n- **Arch Linux:** `yay -S superseedr` (via AUR)\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/superseedr.svg)](https://repology.org/project/superseedr/versions)\n\n## Usage\nOpen a terminal\n```bash\nsuperseedr\n```\n### ⌨️ Key Controls\n| Key | Action |\n| :--- | :--- |\n| `m` | **Open full manual / help** |\n| `Q` | Quit |\n| `↑` `↓` `←` `→` | Navigate |\n| `c` | Configure Settings |\n\n\u003e [!TIP]  \n\u003e Add torrents by clicking magnet links in your browser or opening .torrent files.\n\u003e Copying and pasting (ctrl + v) magnet links or paths to torrent files will also work.\n\n## Troubleshooting\n\n**Connection or Disk issues?**\n- Check your firewall allows outbound connections\n- Increase file descriptor limit: `ulimit -n 65536`\n- For VPN users: Verify Gluetun is running and connected\n\n**Slow downloads?**\n- Enable port forwarding in your VPN settings\n- Check the swarm health in the TUI's analytics view\n\n**More help:** See the [FAQ](FAQ.md) or [open an issue](https://github.com/Jagalite/superseedr/issues)\n\n## More Info\n- 🤝[Contributing](CONTRIBUTING.md): How you can contribute to the project (technical and non-technical).\n- ❓[FAQ](FAQ.md): Find answers to common questions about Superseedr.\n- 📜[Changelog](CHANGELOG.md): See what's new in recent versions of Superseedr.\n- 🗺️[Roadmap](ROADMAP.md): Discover upcoming features and future plans for Superseedr.\n- 🧑‍🤝‍🧑[Code of Conduct](CODE_OF_CONDUCT.md): Understand the community standards and expectations.\n\n## 🐳 Running with Docker\n\nSuperseedr 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.\n\nIf you want privacy and simplicity, Docker is the recommended way to run Superseedr.\n\nFollow steps below to create .env and .gluetun.env files to configure OpenVPN or WireGuard.\n\n```bash\n# Docker (No VPN):\n# Uses internal container storage. Data persists until the container is removed.\ndocker run -it jagatranvo/superseedr:latest\n\n# Docker Compose (Gluetun with your VPN):\n# Requires .env and .gluetun.env configuration (see below).\ndocker compose up -d \u0026\u0026 docker compose attach superseedr\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to expand Docker Setup\u003c/strong\u003e\u003c/summary\u003e\n\n### Setup\n\n1.  **Get the Docker configuration files:**\n    You only need the Docker-related files to run the pre-built image, not the full source code.\n\n    **Option A: Clone the repository (Simple)**\n    This gets you everything, including the source code.\n    ```bash\n    git clone https://github.com/Jagalite/superseedr.git\n    cd superseedr\n    ```\n    \n    **Option B: Download only the necessary files (Minimal)**\n    This is ideal if you just want to run the Docker image.\n    ```bash\n    mkdir superseedr\n    cd superseedr\n\n    # Download all compose and example config files\n    curl -sL \\\n      -O https://raw.githubusercontent.com/Jagalite/superseedr/main/docker-compose.yml \\\n      -O https://raw.githubusercontent.com/Jagalite/superseedr/main/docker-compose.common.yml \\\n      -O https://raw.githubusercontent.com/Jagalite/superseedr/main/docker-compose.standalone.yml \\\n      -O https://raw.githubusercontent.com/Jagalite/superseedr/main/.env.example \\\n      -O https://raw.githubusercontent.com/Jagalite/superseedr/main/.gluetun.env.example\n\n    # Note the example files might be hidden run the commands below to make a copy.\n    cp .env.example .env\n    cp .gluetun.env.example .gluetun.env\n    ```\n\n2.  **Recommended: Create your environment files:**\n    * **App Paths \u0026 Build Choice:** Edit your `.env` file from the example. This file controls your data paths and which build to use.\n        ```bash\n        cp .env.example .env\n        ```\n        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.\n\n    * **VPN Config:** Edit your `.gluetun.env` file from the example.\n        ```bash\n        cp .gluetun.env.example .gluetun.env\n        ```\n        Edit `.gluetun.env` with your VPN provider, credentials, and server region.\n\n#### Option 1: VPN with Gluetun (Recommended)\n\nGluetun provides:\n- A VPN kill-switch\n- Automatic port forwarding\n- Dynamic port changes from your VPN provider\n\nMany VPN providers frequently assign new inbound ports. Most BitTorrent clients must be restarted when this port changes, breaking connectability and slowing downloads.\nSuperseedr can detect Gluetun’s updated port and reload the listener **live**, without a restart, preserving swarm performance.\n\n1.  Make sure you have created and configured your `.gluetun.env` file.\n2.  Run the stack using the default `docker-compose.yml` file:\n\n```bash\ndocker compose up -d \u0026\u0026 docker compose attach superseedr\n```\n\u003e To detach from the TUI without stopping the container, use the Docker key sequence: `Ctrl+P` followed by `Ctrl+Q`.\n\u003e **Optional:** press `[z]` first to enter power-saving mode.\n\n---\n\n#### Option 2: Standalone\n\nThis runs the client directly, exposing its port to your host. It's simpler but provides no VPN protection.\n\n1.  Run using the `docker-compose.standalone.yml` file:\n\n```bash\ndocker compose -f docker-compose.standalone.yml up -d \u0026\u0026 docker compose attach superseedr\n```\n\u003e To detach from the TUI without stopping the container, use the Docker key sequence: `Ctrl+P` followed by `Ctrl+Q`.\n\u003e **Optional:** press `[z]` first to enter power-saving mode.\n\n\u003c/details\u003e\n\n## 🔗 Integrations \u0026 Automation\n\nSuperseedr includes several integration points designed for automation, headless operation, and easy pairing with VPN containers like Gluetun.\nFor dockerized interoperability tests, see `docs/integration-harness.md`.\n\nCheck out the [Superseedr Plugins Repository](https://github.com/Jagalite/superseedr-plugins) for plugins (beta testing).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to expand automation details\u003c/strong\u003e\u003c/summary\u003e\n\n### 1. File Watcher \u0026 Auto-Ingest\nThe application automatically watches configured directories for new content. You can drop files into your watch folder to trigger actions immediately.\n\n| File Type | Action |\n| :--- | :--- |\n| **`.torrent`** | Automatically adds the torrent and begins downloading. |\n| **`.magnet`** | A text file containing a magnet link. Adds the magnet download. |\n| **`.path`** | A text file containing a local absolute path to a `.torrent` file. |\n| **`shutdown.cmd`** | If a file named `shutdown.cmd` appears, the client will initiate a graceful shutdown. |\n\n### 2. CLI Control\nYou 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.\n\n```bash\n# Add a magnet link\nsuperseedr add \"magnet:?xt=urn:btih:...\"\n\n# Add a torrent file by path\nsuperseedr add \"/path/to/linux.iso.torrent\"\n\n# Stop the client gracefully\nsuperseedr stop-client\n```\n\n### 3. Status API \u0026 Monitoring\nFor external monitoring dashboards or health checks, Superseedr periodically dumps its full internal state to a JSON file.\n\n* **Output Location:** `status_files/app_state.json` (inside your data directory).\n* **Content:** Contains CPU/RAM usage, total transfer stats, and detailed metrics for every active torrent.\n\n#### Configuration\nYou can control how often this file is updated using the `output_status_interval` setting.\n\n**Environment Variable:**\nSet this variable in your Docker config to change the update frequency (in seconds).\n```bash\n# Update the status file every 5 seconds\nSUPERSEEDR_OUTPUT_STATUS_INTERVAL=5\n```\n\n### 4. RSS History Retention\nRSS download history is persisted for deduplication and UI metadata, but it is capped at **1000 entries**.\n\n* When the history grows past 1000, the **oldest entries are pruned** first.\n* This limit applies to persisted runtime history in `persistence/rss.toml`.\n\u003c/details\u003e\n\n## 🧠 Advanced: Architecture \u0026 Engineering\n\nSuperseedr 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.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eClick to expand technical internals\u003c/strong\u003e\u003c/summary\u003e\n\nThis section is designed for developers, contributors, and AI agents seeking to understand the internal design decisions that drive Superseedr's performance.\n\n### ⚡ Async Networking Core\nSuperseedr is built on the **Tokio** runtime, leveraging asynchronous I/O for maximum concurrency.\n* **Full-Duplex Streams:** Every peer connection is split into independent **Reader** and **Writer** tasks (`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.\n* **Actor-Based Session Management:** Each peer operates as an isolated Actor. Communication between the network socket and the core logic happens exclusively via `mpsc` channels, meaning a slow or misbehaving peer cannot block the main event loop or affect other connections.\n* **Hot-Swappable Listeners:** The application runs an async file watcher (`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.\n\n### 🔒 Security \u0026 Privacy Engineering\n* **VPN Isolation (Kill-Switch):** In the Docker Compose setup, Superseedr's network stack is fully routed through **Gluetun**. This guarantees that 100% of BitTorrent traffic traverses the VPN tunnel. If the tunnel drops, connectivity is cut immediately, preventing any IP leakage over the host connection.\n* **Binary-Level Private Mode:** Private tracker compliance is enforced at compile time, not just runtime. By building with `--no-default-features`, the DHT and Peer Exchange (PEX) modules are completely excluded from the binary, guaranteeing zero leakage of private swarms.\n\n### 🏗️ Reactive Actor Model \u0026 Verification\nThe application logic abandons traditional mutex-heavy threading in favor of a **Functional Reactive** architecture.\n* **Deterministic State Machine:** The `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`.\n* **Chaos Engineering:** We validate this core logic using **Model-Based Fuzzing** (via Proptest). Our test suite injects deterministic faults to verify correctness under hostile conditions:\n* **Network Chaos:** Simulates **Packet Loss** (dropped actions), **High Latency** (reordered actions), and **Duplication** (ghost packets).\n* **Malicious Peers:** Fuzzers act as \"Bad Actors\" that send protocol violations, infinite byte-streams, and out-of-bounds requests to ensure the engine punishes them without crashing.\n\n### 🤖 Self-Tuning Resource Allocator\nInstead of static `ulimit` values, Superseedr runs a **Stochastic Hill Climbing** optimizer in the background.\n* **The Loop:** Every 90 seconds, it randomly reallocates internal permits between competing resources—**Peer Sockets**, **Disk Read Slots**, and **Disk Write Slots**—to find the local maximum for performance.\n* **Universal Optimization:** This algorithm dynamically discovers the optimal configuration for *any* combination of hardware (SSD vs HDD) and network environment (Home Fiber vs Datacenter), automatically scaling concurrency to match capacity.\n\n### 📡 Integrity Prober\nSuperseedr automatically and continuously checks completed torrents in the background without falling back to blunt full-library rescans.\n* **Designed for Scale:** Integrity work is split into small bounded batches, keeping checks cheap even across very large collections.\n* **Fast Fault Detection:** Foreground disk-read failures immediately trigger targeted recovery reprobes, surfacing missing or damaged data quickly.\n* **No-Config Recovery:** Healthy torrents are monitored automatically, while unavailable torrents are prioritized for fast recovery detection without extra setup.\n\n### 🧮 Statistical Engine\nSuperseedr calculates granular metrics in real-time to drive optimization and observability:\n* **IOPS \u0026 Latency:** Tracks instantaneous Input/Output Operations Per Second and uses an Exponential Moving Average (EMA) to calculate precise Read/Write latency (ms). This helps distinguish between bandwidth limits and disk saturation.\n* **Disk Thrash Score:** Measures physical disk head movement using `Sum(|Offset - PrevOffset|) / Ops`. This detects random I/O bottlenecks that raw speed metrics miss.\n* **Seek Cost per Byte (SCPB):** Calculates the \"expense\" of I/O relative to throughput (`TotalSeekDistance / TotalBytes`), serving as the primary penalty factor for the self-tuner.\n\n### ♟️ Protocol Algorithms\nSuperseedr implements optimized versions of the core BitTorrent exchange strategies:\n* **Selective \u0026 Priority Downloading:** Support for file-level priority (Skip, Normal, High). The engine maps file boundaries to pieces, prioritizing high-value data while ensuring shared boundary pieces are handled correctly to prevent corruption.\n* **Rarest-First Piece Selection:** The client continuously tracks piece availability across the swarm, prioritizing rare pieces to prevent \"swarm starvation\" and ensure redundant availability.\n* **Tit-for-Tat Choking:** The choking algorithm uses a robust Tit-for-Tat strategy (reciprocation), rewarding peers who provide the highest bandwidth while optimistically unchoking new peers to discover better connections.\n\n### 🔬 Unique Visualizations \u0026 UX\nSuperseedr includes specialized TUI components (`src/tui/view.rs`) to visualize data usually hidden by other clients:\n* **Integrated File Explorer:** A custom, navigable filesystem browser that provides instant previewing of `.torrent` file contents and internal directory structures before the download begins.\n* **Block Particle Stream:** A vertical \"Matrix-style\" flow visualizing individual 16KB data blocks entering (Blue) or leaving (Green).\n* **Peer Lifecycle Scatterplot:** Tracks the exact moment peers are Discovered, Connected, and Disconnected to visually diagnose swarm \"churn.\"\n* **Backpressure Markers:** The network graph overlays red \"Backpressure Events\" whenever the self-tuner detects a system limit (e.g., file descriptors), proving the engine is actively managing load.\n\n### 🧬 Hybrid BitTorrent v2 (BEP 52)\nSuperseedr implements the full **Merkle Tree** verification stack required for BitTorrent v2.\n* **Block-Level Validation:** Incoming data is hashed and verified at the 16KiB block level using Merkle Proofs, allowing for the immediate rejection of corrupt data before it is written to disk.\n* **Hybrid Swarms:** The client handles `VerifyPieceV2` effects to simultaneously handshake with legacy v1 peers (SHA-1) and modern v2 peers (SHA-256).\n\n### 🛡️ Backpressure \u0026 Flow Control\n* **Persistent Retries with Backoff:** Critical I/O operations (like disk writes) are protected by an exponential backoff retry mechanism (jittered), ensuring transient system locks or busy disks don't crash the download session.\n* **Adaptive Pipelining:** The `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.\n* **Token Buckets:** Global bandwidth is shaped via a hierarchical Token Bucket algorithm that enforces rate limits without blocking async executors.\n\n### 📜 Key Standards Compliance\nSuperseedr implements the following BitTorrent Enhancement Proposals (BEPs):\n* **BEP 3:** The BitTorrent Protocol Specification\n* **BEP 5:** DHT Protocol (Mainline)\n* **BEP 9:** Extension for Peers to Send Metadata Files (Magnet Links)\n* **BEP 10:** Extension Protocol\n* **BEP 11:** Peer Exchange (PEX)\n* **BEP 19:** WebSeed - HTTP/FTP Seeding\n* **BEP 52:** The BitTorrent Protocol v2\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjagalite%2Fsuperseedr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjagalite%2Fsuperseedr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjagalite%2Fsuperseedr/lists"}