Apache-2.0 · macOS, Windows & Linux · Rust and Tauri
A modern torrent client that weighs almost nothing.
Everything the established clients do, in an interface built this decade. A Rust engine in a native window rather than a bundled browser: the Windows installer is under 6 MB, the macOS app is 23 MB on disk, and it is the same client on all three.
Top contributors
qBittorrent 5.22.9 MB/sTransmission 4.11.8 MB/slibtorrent 2.01.1 MB/sLive, at the rate the app itself updates. Not a screenshot.
Why another client
The protocol was solved twenty years ago. The experience wasn't.
The clients most people run were written when BitTorrent was new, and it shows — in interfaces that predate the retina display, in settings panels with eleven tabs, and in defaults that assume you already know what a bitfield is. They are dependable, and they earned that reputation honestly.
Flume's bet is that the engine is the solved part. librqbit already handles DHT, the peer protocol and piece management well, so all of the effort goes into the part nobody finished: making the thing legible while it runs.
The part that is new
A progress bar tells you where you are. It does not tell you whether you will arrive.
Forty peers who all stopped at the same 6% will never finish your download. Six peers who between them hold every piece will. A peer count cannot tell those apart, and neither can an ETA extrapolated from the last thirty seconds.
Flume asks each connected peer for its bitfield and works out the rarest piece in the swarm — the minimum, not the average. Two peers holding 500 pieces each might overlap completely or not at all. Only one of those torrents can finish.
- Healthy
Every piece is held by several connected peers. This will finish.
- Thin swarm
Every piece is held, but only just. Losing one peer could strand it.
- No seeds
No connected peer holds some piece. As it stands, this cannot finish.
And when there is nothing to judge from — peers connected, but no bitfields received yet — it says Connected rather than picking a verdict. A confident wrong answer is worse than an honest blank.
The piece map
Progress hides shape.
Sixty percent with a solid head and an empty tail is downloading in order. Sixty percent scattered evenly is pulling rarest-first. The upper strip shows which is happening.
The lower strip is the one that warns you. It counts how many connected peers hold each region, and a tail that thins toward the right is a torrent heading for a stall. A region no peer holds is drawn full height in red — taller than anything else on the strip, so a glance cannot miss it.
It does not count you, because the question it answers is whether the swarm can finish your download. Once a torrent completes the strip disappears: the question has been answered.
What is limiting this download
- Your download cap6.6 / 6.6 MB/sBinding — raising it in Settings will help
- Peer upload11.2 MB/s
- Piece availability1 copy min
- Disk write queueNot measured
At most one constraint is marked as binding, with a sentence saying whether changing a setting would help. If nothing is binding, nothing is marked.
Switching
Bring your library with you.
On first run Flume looks for Transmission, qBittorrent and Deluge on your machine and offers to take their torrents over — including where each one was saving to.
Nothing is downloaded twice. The engine is handed the original save path, hashes what is already on disk, and keeps every piece that verifies. A library that took a week to build transfers in the time it takes to check it.
It does not pretend to bring across what it cannot. Categories and seeding rules are left behind rather than silently dropped, because Flume has nowhere to put them.
- Transmission47 torrentsTake over
- qBittorrent12 torrentsTake over
- DelugeNot found
Parity
Everything you'd expect, and nothing you wouldn't.
A modern interface is not worth much if it costs you the features you actually use. Every line below is in the shipping build.
- DHT, magnet links, and peer exchange
- Torrent v2 and hybrid torrents
- Selective file download before you start
- Global download and upload limits
- UPnP automatic port forwarding
- SOCKS5 proxy for peer connections
- Resume across restarts, without re-hashing
- System tray, notifications, and a menu bar
- Magnet protocol handler and drag-and-drop
- Full keyboard control and screen-reader support
Sequential download is not in that list. It is not implementable against librqbit v9, whose file-priority type is private, and it is tracked in the open rather than implied. Flume also has no RSS automation, no chat, and no bundled search — those are omissions by choice.
The craft
Modern is a set of decisions, not a coat of paint.
A native binary, not a browser
A Tauri shell around a Rust engine, drawing in the system WebView. The macOS build is one universal download of roughly 17 MB. There is no bundled Chromium, and no 400 MB install directory.
Torrent data never reaches the interface
librqbit writes pieces straight to disk; the UI only ever receives small JSON payloads at about 1 Hz. A bug in the frontend cannot corrupt a download, because the frontend never touches one.
Light and dark that were both designed
Not an inverted palette. Both themes are stepped independently in OKLCH, and every text-on-surface pairing is asserted against WCAG contrast in the test suite rather than eyeballed.
Numbers that hold still
Every figure is set in tabular monospace. Without it, columns jitter on every telemetry tick as digit widths change — which is why the window above does not move while its rates do.
It admits what it cannot measure
Connection slots, disk write queue and hash-checking load are shown as absent rather than estimated. The engine does not report them, and a plausible number would be worse than none.
No crypto, no ads, no paid tier
Apache-2.0, and deliberately without RSS automation, chat, a bundled toolbar, or a Pro upsell. There is no account to make and nothing reporting back. It is a torrent client, and that is the whole product.
No account, no ads, no upsell.
Free and Apache-2.0, on macOS, Windows and Linux. Flume talks to trackers, peers and the DHT. It does not talk to us.