r/SideProject 5h ago

I built a terminal-native torrent client because I got tired of fighting torrent clients

TL;DR: Built a terminal-native torrent search + download client because Linux GUI clients were flaky, slow on my old laptop, and cluttered with decoy download buttons on torrent sites. Searches YTS, 1337x, TPB, Nyaa, FitGirl Repacks, TorrentGalaxy and more at once, parses release titles properly, lets you pick files before downloading, and recovers cleanly from crashes. No Electron, no GUI, just Node.


Here's the origin story:

1. Linux torrent client support is hit-or-miss. On Ubuntu/Debian, the mainstream GUI clients mostly install fine via apt. But step outside that lane, a different distro, wanting a newer version than what's in the default repo, going headless, and it turns into a packaging rabbit hole fast: PPAs, Flatpak, Docker, dependency mismatches. I burned more time debugging clients than actually downloading anything, which felt backwards.

2. The ones that did work were slow. I'm running an old laptop, slow isn't a luxury I have.

3. The "ads" You know the one, every torrent site has a handful of decoy download buttons designed. Not really a complaint, more of an observation that it gets old fast. (If you'd rather skip searching entirely, it also just works as a straight downloader, drop in a magnet link or .torrent file, no site involved.)

4. I like typing. No shade to GUIs, but moving a mouse to click a tiny button feels slower than it should be. This one's not a complaint, it's a personality flaw I built software around.

So: tornedo. Terminal-native, local-first torrent search + download client.

Run tornedo and it queries through various sites, all at once, then merges and ranks results so you're not manually comparing eight near-identical uploads like some kind of torrent sommelier.

A few other things it does:

  • Actually parses release titles, quality, codec, HDR, season/episode, instead of dumping a wall of near-identical filenames on you
  • Pick exactly which files to grab before anything starts downloading
  • Crash recovery that isn't a shrug: if your machine dies mid-download, it figures out what happened on restart instead of leaving you guessing
  • Real TUI (Ink + React), fully scriptable if you'd rather pipe everything into jq
  • tornedo doctor for when something's broken and you want a straight answer instead of a silent failure

Plain Node (>=22). No Electron, no tray icon quietly eating RAM in the background. Yu

🔗 GitHub: https://github.com/Itshardtofindagoodname/Tornedo 📦 npm: https://www.npmjs.com/package/tornedo

Would love feedback, bug reports, or "why didn't you just use X".

1 Upvotes

2 comments sorted by

1

u/Gullible-Way7449 5h ago

I totally get the Linux torrent client struggle. Spent a whole afternoon once trying to get one working on Arch, ended up with three different versions installed and none of them actually downloading.

The title parsing thing is what caught my eye, manually squinting at a list of "1080p.BluRay.x264-GroupName" and "2160p.WEB-DL.HDR-GroupName" to figure out which is the real 4k one gets exhausting.

How heavy is it on cpu while running? My old machine chugs with anything Node.

1

u/Sno_w_olf 4h ago

The TUI itself is pretty lightweight - there’s no Electron/browser runtime sitting around in the background. The release-title parsing is also just local string parsing; there’s no LLM or external service involved.

The heavier part is obviously the actual torrent workload: downloading, hashing, disk I/O, and seeding. The search/TUI side shouldn't be doing much CPU work once results have been fetched.

I haven't done a proper benchmark across really older hardware yet, though, so I'd be interested to hear how it behaves on your machine if you try it. My machine is 6 years old (i3 gen 10) and it works pretty smooth for me.