Transfarr is a modern, decentralized peer-to-peer (P2P) file-sharing application built on .NET and SignalR. It enables users to discover peers, share directories, and perform high-speed direct transfers through a unified web interface.
The project is designed with a "Shared Core" architecture, allowing the same UI and business logic to be hosted across multiple platforms, including WebAssembly and potentially future desktop or mobile shells.
- TTH Swarm Fetching: Download files from multiple peers simultaneously to maximize your bandwidth. The node automatically discovers new sources for your queue.
- Robust Resuming: Interrupted downloads? No problem. Transfarr uses bitfield-based segment tracking (20MB chunks) to resume exactly where it left off.
- Persistent Download Queues: Automatic restoration of pending transfers across daemon restarts.
- Signaling Hub Reconnection: Automatic connection management and retry logic for the global discovery network.
- Configurable Node Identity: Dynamic management of node display names and connectivity settings via a centralized Settings interface.
- Advanced Connectivity: Direct TCP-based P2P transfers with configurable ports.
- Modern UI: High-performance, obsidian-themed interface with integrated global chat and real-time monitoring.
The easiest way to run Transfarr is via Docker:
docker run -d \
--name transfarr \
-p 5150:5150 \
-p 5151:5151 \
-v transfarr-data:/app/data \
-v /path/to/downloads:/app/downloads \
atbesa/transfarr-node:latest- .NET 10.0 SDK or later.
To enable node discovery, first start the signaling service:
cd Transfarr.Signaling
dotnet runBy default, the signaling hub listens on http://localhost:5135/signaling.
After the signaling hub is operational, start your local node:
cd Transfarr.Node
dotnet runThe node will launch its web interface at http://localhost:5150.
- Transfarr.Signaling: The central hub service used for node discovery, peer-to-peer signalling, and global chat message relay.
- Transfarr.Node: The local daemon that handles the actual P2P file transfers and hosts the Blazor-based user interface.
- Transfarr.Client.Core: A Razor Class Library containing the entire application logic, UI components, and state management.
- Transfarr.Client.Web: The Blazor WebAssembly host that runs the application in the browser.
- Transfarr.Shared: Common models, contracts, and utility classes shared across all components.
This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for the full text.
