rqbit: A Rust Torrent Client That Does More Than You'd Expect
You know the drill: you need to grab a torrent, but the client you're using is either a resource hog, lacks a decent interface, or makes you jump through hoops just to stream a video to your TV. What if one tool could handle downloads, serve a web UI, stream files to VLC, and even advertise itself on your LAN—all while sipping just a few tens of megabytes of RAM?
That's exactly what rqbit offers. It's a bittorrent client written in Rust, but it's really more of a Swiss Army knife for torrents. You can use it as a CLI tool, run it as a background server with a web interface, or even embed it in your own application as a library. It's at github.com/ikatson/rqbit, and once you see what it packs in, you'll wonder why more clients don't do this.
What It Does
At its core, rqbit is a straightforward torrent client. You point it at a magnet link, a remote .torrent URL, or a local file, and it downloads to your chosen directory. Nothing revolutionary there—but the architecture is where things get interesting.
The project splits into two main crates: rqbit (the CLI and server) and librqbit (the reusable library). The server mode starts a persistent process that manages your downloads and exposes an HTTP API. On top of that API sits a web UI, accessible at http://localhost:3030/web/. There's also a desktop app built with Tauri, which is essentially a thin wrapper around that same web frontend—so you get a native-feeling application without maintaining a separate UI codebase.
Under the hood, it's written in Rust, which explains the modest memory footprint. The README notes that the server typically stays within a few tens of megabytes, making it a solid fit for low-powered hardware like a Raspberry Pi.
Why It's Cool
Here's where rqbit separates itself from the pack. It's not just a downloader—it's a media-friendly, network-aware tool.
Streaming is a first-class feature. rqbit can stream torrent files while they're still downloading. It prioritizes the pieces you're currently watching, so you can seek and live-stream videos without waiting for the full download. You can even point VLC or another player at an HTTP URL like http://IP:3030/torrents/<torrent_id>/stream/<file_id>, and range headers handle seeking for you.
It advertises your torrents to your LAN. Flip on the UPnP media server flag, and rqbit makes your managed torrents visible to devices like smart TVs. You can then stream videos directly to them—again, with seeking support—without any transcoding in between. That's a genuinely useful feature for anyone with a media-centric home setup.
It's discoverable on your network. With mDNS/DNS-SD enabled, rqbit advertises its HTTP API as rqbit.local. That means from your phone or laptop, you can just type http://rqbit.local:3030/web/ and land on the web UI without hunting for an IP address.
It handles the boring but necessary stuff. IPv6 works out of the box in dualstack mode. Socks proxy support is there for when you need it. You can watch a folder for new .torrent files and have them picked up automatically. There are shell completions for bash and others. It even supports systemd socket activation, so the service starts on-demand rather than sitting idle.
It's fast, apparently. The README is careful here—it cites anecdotal reports of rqbit being faster than other clients with default settings, and one claim of saturating a 20Gbps link (which the author admits they can't personally verify). Take that with a grain of salt, but the performance ceiling seems high.
How to Try It
Getting started is quick. First, grab a pre-built binary from the Releases page, or if you're on Linux and want the desktop app, build it with cargo tauri build.
If you want the full server experience, start it with:
rqbit server start ~/Downloads
Then point your browser at http://localhost:3030/web/. To add a download, you can use the UI or the CLI:
rqbit download [-o ~/Downloads] 'magnet:?....' [https?://url/to/.torrent] [/path/to/local/file.torrent]
Want streaming to your TV? Add the UPnP flag:
rqbit --enable-upnp-server server start ...
For mDNS discovery across your network, specify a non-loopback address:
rqbit --enable-mdns --http-api-listen-addr 0.0.0.0:3030 server start ...
And if you're a developer, you can pull in librqbit from crates.io to embed torrent functionality directly into your own Rust projects.
Final Thoughts
rqbit is one of those tools that quietly does a lot. It's not trying to be the flashiest torrent client—it's trying to be the most practical one. The combination of a web UI, streaming, LAN advertising, and a usable library API makes it unusually versatile. If you run a home server, tinker with Rust, or just want a torrent client that doesn't eat your RAM, it's worth a serious look. The project is actively maintained, and the feature list suggests the author is building the tool they actually wanted to use. Chances are, you'll find something in it you didn't know you needed.
Follow @githubprojects for more developer tools and open source projects.