Architecture¶
InfiniDysk sits between download clients / search and Usenet providers, exposing a virtual filesystem and SAB-compatible API.
flowchart TB
subgraph clients [Clients]
Arr[Sonarr_Radarr]
Browser[Admin_UI]
Player[Plex_Jellyfin_rclone]
Stremio[Stremio_AIOStreams]
end
subgraph nzbdav [InfiniDysk]
SAB[SAB_API]
Queue[Queue_processor]
WebDAV[WebDAV_store]
UI[Frontend_proxy]
end
subgraph usenet [Usenet]
NNTP[NNTP_providers]
end
Arr -->|addfile_addurl| SAB
SAB --> Queue
Queue --> WebDAV
Browser --> UI
UI --> SAB
UI --> WebDAV
Player -->|HTTP_range| WebDAV
WebDAV --> NNTP
Stremio -->|API_WebDAV| UI
Two common flows¶
Automation (*Arr + media server)¶
- Radarr/Sonarr sends an NZB to InfiniDysk as a SABnzbd download client.
- InfiniDysk mounts the release on WebDAV without downloading the full file.
- Import artifact:
- Symlinks — entries under
completed-symlinks; rclone turns them into filesystem links into.ids. - STRM — small
.strmfiles with authenticated streaming URLs. - *Arr imports into the library; the media server reads through the link/URL → InfiniDysk → Usenet.
On-demand (Stremio)¶
There are two Stremio paths:
Direct Search Profile preset since 1.3.0
- InfiniDysk searches the profile's Newznab indexers and returns playable stream objects.
- AIOStreams or Stremio lists those streams. The dedicated InfiniDysk preset can report the final order back to
/failover_order. - Playback hits
/play/{token}.mkv, which resolves/queues the NZB and redirects to/view.
AIOStreams-managed search
- AIOStreams finds a release via its own Newznab addons.
- The NZB is mounted through InfiniDysk's service/API.
- Playback URL (often proxied by AIOStreams) streams from WebDAV.
Processes and ports¶
| Process | Default | Role |
|---|---|---|
| Frontend | :3000 |
Admin UI, auth, proxy for WebDAV + /api + /ws |
| Backend | :8080 (internal) |
WebDAV, queue, SAB API, SQLite under CONFIG_PATH |
Backend services such as rclone should connect directly to WebDAV on port 8080
whenever the backend is reachable. The frontend WebDAV proxy is a fallback for
clients without network access to the backend and adds avoidable streaming overhead.
Persistent state lives under /config (DB, settings, blobs, backups).
Related¶
Import strategies · Features overview · Environment variables · Code boundaries