[Habeas]
A self-hosted torrent client built from scratch on libtorrent.
scroll
18 Themes
Dark and light. Live preview before applying. Accessible from the command palette.
click a swatch
light
[hb] torrents search Ledger
Severance.S02E03.Who.Is.Alive.2160p.ATVP.WEB-DL.DV.HDR.mkv
dl 14.2 MB/s ul 1.8 MB/s
40%
The.Brutalist.2024.2160p.WEB-DL.DDP5.1.DV.HDR.mkv
ul 420 KB/s
100%
Severance.S01.Complete.2160p.ATVP.WEB-DL.DV.HDR
100%
name-first rows with progress and speeds inline
Workspace
Every panel runs inside a tiling window manager. Drag handles to resize, pop out panels, snap them back. Layouts persist across sessions.
filter...
all downloading seeding paused
3Severance.S02E03.Who.Is.Alive.2160p.ATVP.WEB-DL.DV.HDR.mkv
dl 14.2 MB/sul 1.8 MB/s
67%
The.Brutalist.2024.2160p.WEB-DL.DDP5.1.Atmos.DV.HDR.mkv
ul 420 KB/s
100%
Severance.S01.Complete.2160p.ATVP.WEB-DL.DV.HDR
100%
search
name size s/l
Severance.S02E03.2160p.ATVP.WEB-DL.DV.HDR.mkv 14.2 GB 847/62
Severance.S02E03.1080p.AMZN.WEB-DL.DDP5.1.mkv 5.1 GB 423/31
Severance.S02E03.720p.WEB-DL.AAC2.0.H.264 2.3 GB 156/12
Severance.S02E03.480p.WEB-DL.x264 890 MB 41/8
file manager
/media/storage/TV Shows/Severance (2022)
name size modified
Season 1 — Jan 12
S02E01.Good.News.About.Hell.mkv 4.91 GB Mar 14
S02E02.Hello.Ms.Casey.mkv 4.71 GB Mar 21
S02E03.Who.Is.Alive.mkv 4.82 GB 2h ago
drag handles to resize · pop out panels · reopen from status bar
tilebinary tree splits with drag handles
floatdrag, resize, snap to edges and corners
persistlayout saves to server, restores on reload
keyboardvim bindings, ctrl+alt arrows to move panels
Under the hood
window manager Tile, float, snap, resize. Layouts persist across sessions. Vim and arrow-key navigation.
layouts Flow, telemetry, digest, classic. Each presents torrent rows differently for the task at hand.
deployment Three modes: Gluetun sidecar, host VPN interface binding, or direct bridge. All docker-compose.
live updates Single WebSocket path pushes torrent state, progress, rates, and peer counts. Nothing polls.
qbittorrent api Implements enough of the qBittorrent WebUI API that Sonarr, Radarr, and other *arr tools just work.
passkeys WebAuthn login with recovery codes, CSRF tokens, and origin validation. No password database.
sift Matches torrents against TMDB, groups by title, builds destination folders before anything downloads.
file browser Browse mounted storage, inspect directories, rename, move, create folders. Runs inside the WM.
diagnostics Structured activity log, network diagnostics, per-process CPU/memory, copyable status reports.
pwa Installable as a web app. Push notifications, theme persistence, layout state across contexts.
network hardening SSRF validation, tracker normalization, HTTPS certificate handling, VPN kill-switch awareness.
torrent management Force-start, auto-managed queuing, stalled detection, share ratio limits, seeding time limits.
Get running
Two containers, one image, three network modes. Pick gluetun, host VPN, or direct bridge.
1
git clone https://github.com/palaV/Habeas && cd Habeas2
cp .env.example .env && $EDITOR .env set VPN mode, storage path, ports3
docker compose up -d engine on :54323, web on :54322