BitTorrent client and library in Go. Running in production at put.io.
- Core protocol
- Fast extension
- Magnet links
- Multiple trackers
- UDP trackers
- Message stream encryption
- Fast resuming
- IP blocklist
- RPC server & client
- Console UI
- Tool for creating & reading .torrent files
If you are on MacOS you can install from brew:
brew tap cenkalti/rain brew install rain
Otherwise, get the latest binary from releases page.
Rain is distributed as single binary file.
The main use case is running
rain server command and operating the server with
rain client <subcommand> commands.
Server consists of a BitTorrent client and a RPC server.
rain client is used to give commands to the server.
There is also
rain client console command which opens up a text based UI that you can manage the torrents on the server.
rain help to see other commands.
Difference from other clients
Rain is the main BitTorrent client used at put.io.
It is designed to handle hundreds of torrents while using low system resources.
The main difference from other clients is that Rain uses a different port for each torrent.
This allows Rain to download same torrent from same private tracker for multiple users and keep reporting their ratio correctly.
Subscribe to Golang Example
Get the latest posts delivered right to your inbox