zurg

zurg is a Go daemon that presents a debrid account or a directory of NZBs as a virtual filesystem. Six debrid services are supported and so is Usenet. It stores no media and it accepts no uploads. Nothing is fetched before a player asks for it. A read on a debrid account becomes a ranged HTTP GET against that service's CDN. A read on the Usenet backend becomes the articles that cover those bytes. A 60 GB remux costs 60 GB of disk nowhere.

Four views onto the same library:

Endpoint For
/dav/ WebDAV, what rclone mounts
/http/ HTML directory browser
/infuse/ WebDAV variant with Infuse's quirks accommodated
/strm/ Signed URLs inside .strm files, for players that want a URL not a mount

Setup

Getting zurg running on your machine.

  • Linux — FUSE 3 and a systemd service created by the binary
  • Docker — containers, FUSE propagation, and what breaks a host-visible mount
  • macOS — macFUSE and launchd auto-start created by the binary
  • Windows — WinFsp and an interactive drive-letter task created by the binary

Providers

Pointing zurg at an account. Each page covers the credential and the config.yml entry and what that service does differently. All of them assume the Docker install.

Page What is different about it
Real-Debrid Per-file selection, __downloads__, CDN host choice, a separate .strm token
TorBox One request per library refresh, and an active-slot ceiling rather than a bandwidth one
AllDebrid File lists arrive from their own endpoint, so a first scan fills in gradually
Premiumize Completed transfers plus the cloud files left behind, with their folders intact
Debrid-Link The seedbox listing carries every file, and there is no cache check
Offcloud Sizes checked against the delivery server, folder paths from cached metadata
Usenet The nzb type as a provider entry. No token, a watch directory instead
TorBox limits The measured figures behind TorBox throttling, and how zurg paces against them
TorBox news server · ElfHosted news server What the bundled Usenet accounts are, on the wire

The shared page has the three ways to add an account in Docker and the rules the config loader enforces.

Guides

Working with the library.

  • Usenet — the nzb backend end to end: news accounts, NZBs, the mount, Plex
  • Sonarr & Radarr for Usenet — the *arrs search and zurg answers as a SABnzbd, so imports are a rename not a download
  • Sonarr & Radarr for torrents — the same, with zurg answering as a qBittorrent; Prowlarr too
  • zurg searches for Sonarr & Radarr. Radarr and Sonarr keep the list and zurg finds and places the release. No indexers or download client in either.
  • __magic__ — the one directory whose layout is stored, and therefore yours to arrange
  • Renaming — rename a release or a file anywhere in the library. A move is refused and the page says why
  • Plex — what zurg does with a Plex token, and what it deliberately does not
  • Jellyfin — the same, for Jellyfin
  • rex — a Plex server that zurg fills, set up from scratch
  • rex with your own app — the same server filled by any app that serves files over HTTP and speaks rex's feed API
  • The Stremio addon — Stremio searching your own indexers, playing straight out of the Usenet backend
  • Watchlist and Seerr fetches what you ask for through your own indexers
  • Plex watchlist is the Plex side of that
  • Local libraries plays a shared list of releases through your own account
  • Android and Google TV runs the whole library on a phone or a TV box

Migrating

Moving an existing library onto zurg without a re-download or a re-scan.

Reference

  • Configuration — every option in config.yml
  • Command line lists every command and flag the binary takes
  • Outbound identity says what zurg tells the services it calls about itself
  • MCP server lets an AI agent drive zurg over the Model Context Protocol
  • Tags — what gets applied to a torrent, and why
  • Changelog — what changed when

Internals

How zurg is built, what it was measured at, and the design notes behind the awkward parts.


zurg is distributed to sponsors: GitHub Releases · Patreon · Discord