Skip to content

torrnado

A terminal BitTorrent client with a vim-like TUI.
The engine runs as a daemon, so closing the terminal doesn't stop the download.

A recording of torrnado: torrnado list showing one torrent downloading,
          then the TUI attaching to the same daemon - a sidebar filtering by status,
          the torrent at 72%, and the detail pane cycling through the piece map, the
          connected peers and the keybind reference - then quitting back to a shell
          where the daemon is still going.
macOS Linux MIT License Go 1.26+ v0.8.2

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.

// features

runs detached

One daemon; the TUI and the CLI attach and detach freely. Quitting a client is not something the engine notices.

survives restarts

The torrent list, paused state, save paths, rate limits and per-file priorities are written to disk and restored on start.

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.

three panes, vim keys

A status sidebar, the torrent list and a docked Pieces/Peers/Files pane. : opens a command palette; H or ? lists every key and every command.

fully scriptable

Every action is a subcommand, so torrnado add, torrnado list and friends work in a shell script or a cron job.

waits for your VPN

Optionally holds every transfer until the system's traffic leaves through a tunnel, and lets them go again when it reconnects.

$ install torrnado

brew install lestex/tap/torrnado

The cask is written by the release itself, from the same archives that tag publishes. More.

curl -fsSL https://torrnado.dev/install.sh | sh

Picks the archive for your platform, checks it against the release's checksums.txt, and installs it. What it does.

tar xzf torrnado_0.8.2_linux_amd64.tar.gz
./torrnado version

Archives for Linux and macOS on both architectures, plus checksums.txt, are on the releases page.

go build -o torrnado ./cmd/torrnado

Requires Go 1.26+. make build instead stamps the version, commit and date in, so torrnado version says more than "dev".

docker pull ghcr.io/lestex/torrnado
docker run --rm ghcr.io/lestex/torrnado version

Published per release for amd64 and arm64. For leaving it running on a box - see Docker.

then run torrnado to start - quick start →

Where to go next

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.