termtorrent
Terminal torrent client · version 0.1 · MIT

A terminal torrent client with a toolbar, not a command list

termtorrent is a terminal torrent client for rtorrent: add, start, stop, inspect and limit torrents from one screen, with the common actions on a clickable toolbar around a live list.

7.1 KB download · Python 3.6+ · rtorrent 0.9.x · no account
Advertisement

termtorrent is a terminal torrent client for rtorrent. rtorrent itself is an excellent client with a famously terse interface: you type commands, or you edit a config file and remember what you mapped. termtorrent keeps rtorrent underneath and gives you the parts of a desktop client that actually matter: a toolbar, a list you can read, and dialogs for the jobs you do every day.

It is one Python script built on ncurses. It talks to rtorrent over the SCGI socket that rtorrent already exposes, using XML-RPC, so nothing else has to run: no web server, no daemon, no database and no browser tab. Start rtorrent, start termtorrent, and the list appears.

The rtorrent actions you stop having to type

01

Add from anywhere

Press a and paste a URL, a magnet link or the path to a local .torrent file. termtorrent hands it to rtorrent and the job appears in the list.

02

Start and stop without syntax

Select a torrent and press s or S. No d.start= and no command prompt; the state column tells you what happened.

03

Remove, with or without data

Remove an entry from the list, or remove it and delete the downloaded files. Deletion is limited to the download directory, which is a deliberate safety boundary.

04

A details dialog that answers questions

Hash, directory, total and completed size, ratio, current rates and state — the facts you normally dig out of rtorrent’s own views.

05

Global limits in KB/s

Set download and upload limits from one dialog. Zero means unlimited. Useful when a large torrent is saturating a home connection or a small VPS.

06

Refresh that stays out of the way

The list refreshes every two seconds, so rates and progress move while you watch. Press r when you do not want to wait.

Advertisement

What it is — and what it deliberately is not

It is

  • A front-end for rtorrent, not a second torrent engine
  • A single readable Python script under the MIT license
  • Comfortable over SSH, in tmux and on a headless server
  • Happy with the rtorrent you already run
  • Keyboard-first, with mouse support where the terminal offers it

It is not

  • A web UI you reach in a browser
  • A replacement for rtorrent’s scheduler or watch directories
  • A search engine, RSS reader or remote service
  • A GUI toolkit dependency or an Electron app
  • A way to run torrents without rtorrent

That division is intentional. rtorrent already handles the hard parts — the protocol, the disk layout, the scheduling — and does it well. termtorrent is the layer that makes the daily actions visible, without hiding the client you already trust or locking your data into a new service.

Why a terminal torrent client instead of a web UI

A terminal torrent client keeps the work where the files are. There is no web server to expose, no PHP stack to patch and no dashboard login to protect. You open a shell, run termtorrent, and you are looking at the same rtorrent session that is already downloading.

Web front-ends such as ruTorrent and Flood are the right tool when several people need a browser dashboard. A terminal torrent client is the right tool when one person administers one machine over SSH. That is the case termtorrent is built for, and it is why the program has no port, no account and no database of its own.

Built for the machines that actually run torrents

  • Seedboxes and home servers. Run it over SSH and leave rtorrent running as usual; the front-end is disposable.
  • Small VPSes. A few hundred kilobytes of Python and ncurses, not a browser engine competing for RAM.
  • tmux and screen. Keep the interface in a pane and detach; the torrents keep going because rtorrent does the work.
  • Slow links and metered connections. The interface sends XML-RPC calls over a local socket; it does not stream a dashboard.
  • Terminal-first workflows. No context switch to a web UI just to pause one torrent.

Install in four lines

sudo apt install python3 rtorrent
# add: network.scgi.open_local = ~/.rtorrent-scgi.sock to ~/.rtorrent.rc
mkdir termtorrent-0.1 && tar xzf termtorrent-0.1.tar.gz -C termtorrent-0.1
cd termtorrent-0.1 && sudo ./install.sh

Then run termtorrent. The full SCGI setup, checksum and uninstall steps are on the download page; every key and the troubleshooting list live in the guide.

Quick answers

Is termtorrent a terminal torrent client?

Yes. It is a terminal torrent client in the sense that it controls rtorrent from a text interface; rtorrent itself does the downloading. termtorrent adds the toolbar, list and dialogs.

Does termtorrent replace rtorrent?

No. rtorrent must be running; termtorrent is only the front-end. It connects to rtorrent’s SCGI socket and sends XML-RPC calls.

Can I use it on a remote seedbox?

Yes, if you can reach the socket: run termtorrent on the same machine over SSH, or point RTORRENT_SCGI at a TCP socket that rtorrent exposes. A TCP socket should be firewalled or tunnelled.

Does it delete files when I remove a torrent?

Only when you choose the remove-and-delete action, and only inside the download directory (~/downloads by default, or RTORRENT_DOWNLOAD). Plain remove leaves the data alone.

Does it need a web server or a browser?

No. termtorrent is an ncurses program. There is no web interface, no port to open and no login page.