torrnado¶
A terminal BitTorrent client: a vim-like TUI on top of a torrent engine that runs as a background daemon.
┌──────────────────┐┌────────────────────────────────────────────────────────────────────┐
│ torrnado ││ Name Progress Size Status │
│ ││ > archlinux-2026.08.01… ━━━━━━━────── 42% 1.5GiB downloading │
│ Status ││ Fedora-KDE-Desktop-L… ━━━━━━━━━━━━ 100% 3.1GiB seeding │
│ All ││ * ubuntu-26.04-desktop… ━━────────── 11% 6.1GiB paused │
│ Downloading ││ │
│ Seeding │└────────────────────────────────────────────────────────────────────┘
│ Completed │┌────────────────────────────────────────────────────────────────────┐
│ Stopped ││ ─ [Pieces] Peers Files │
│ ││ 1950/24208 pieces verified × 256.0KiB │
└──────────────────┘└────────────────────────────────────────────────────────────────────┘
↓ 21.4MiB/s ↑ 0B/s │ 3 torrents added 1 torrent(s)
The idea¶
The daemon keeps running after the TUI exits. Start a download, close the terminal, come back tomorrow — it is still going, and the interface reattaches to it.
That is the one design decision everything else follows from. The TUI and the CLI are both thin clients that talk to the engine over a local Unix socket, so neither of them owns the torrents; quitting either one is not an event the daemon notices.
-
Start here
Build it, add a torrent, learn six keys.
-
Drive it
The three panes, the command palette, and every key.
-
Leave it running
A headless box that downloads things, under systemd or Docker.
The daemon · systemd · Docker
-
Make it yours
Config, keybinds, eight built-in themes and your own.
What it does¶
- Runs detached. One daemon; the TUI and CLI attach and detach freely.
- Survives restarts. The torrent list, paused state, save paths, rate limits and per-file priorities are written to disk and restored.
- Streams while downloading. Press V on a video and it opens in your player at once, seeking included — the read position drives which pieces are fetched.
- Scripts. Every action is a subcommand, so
torrnado add,torrnado listand friends work in a shell script or a cron job. - Stays out of the way. Vim-like keys, no mouse, no configuration required to start.
What it does not do¶
No remote control protocol, no web UI, no Windows. The socket is local by construction and SSH already solves the remote problem properly — see non-goals for the full list and the reasoning.
Requirements¶
Go 1.25+ to build, a POSIX system to run (Linux and macOS are tested), and a media player if you want the streaming preview.