amigo-downloader Install
Release v0.x · Rust 2024 MIT · self-hosted

The download manager power users actually want.

Multi-chunk HTTP. Native Usenet with PAR2 repair. HLS, DASH, YouTube. A sandboxed TypeScript plugin system. All in a single Rust binary — with a Web UI, CLI, and Tauri desktop app.

  • 8 parallel chunks
  • · NZB + PAR2
  • · TS plugin sandbox
  • · Click'n'Load 9666
amigo-downloader mascot
amigo-dl — zsh
$amigo-dl
parallel chunks
per download
<50 MB
single binary
ships with UI
6
neon palettes
5 intensity levels
0
external services
SQLite embedded

Every protocol that matters.

Built-in backends for the protocols that power modern downloads. No more stitching together tools for Usenet, streaming, or tricky hoster flows.

http
HTTP/S
Multi-chunk · resume · cookie jar · redirect-safe
hls
HLS
m3u8 variants · track pick · segment downloads
dash
DASH
MPD parsing · adaptive segments
usenet
Usenet
NNTP/NNTPS · yEnc · PAR2 repair · multi-server
youtube
YouTube
Built-in InnerTube · N-challenge · format auto-select

Everything you expect — done properly.

Feature-complete out of the box, with the performance and sandboxing you'd write yourself.

Multi-chunk HTTP

Up to 8 parallel chunks per file, adaptive sizing, connection pooling, resume on drop.

Usenet with PAR2

Native NNTP/NNTPS, multi-server with priorities, yEnc decode, PAR2 verify/repair.

HLS & DASH

m3u8 and MPD parsing, variant/track pick, segment download with retries.

YouTube built-in

InnerTube API client, N-parameter via QuickJS, format-quality selection.

TypeScript plugins

Sandboxed QuickJS VM, SWC transpilation, 30 s / 64 MB / 20 req / 1 MB limits.

DLC import & export

Read and write AES-128 DLC containers — compatible with the JDownloader ecosystem.

Click'n'Load on 9666

Drop-in Browser-Extension support — same port, same protocol, zero config.

NZBGet JSON-RPC

Wire Sonarr, Radarr, SABnzbd-era tools into amigo without changing a single line.

RSS · Webhooks · i18n

Watch RSS feeds, fire outbound webhooks, shipping with EN + DE out of the box.

Plugins in TypeScript. Sandboxed.

Write hoster and extractor plugins in plain TypeScript. SWC transpiles them, a QuickJS VM runs them — no Node, no network shims, no file-system access. Hot-reload while you hack.

30 s
exec timeout
64 MB
memory
20 req
HTTP budget
1 MB
storage
Read the plugin API →
plugins/hosters/my-hoster/plugin.ts
/// <reference path="../types/amigo.d.ts" />

module.exports = {
  id: "my-hoster",
  name: "My Hoster",
  version: "1.0.0",
  urlPattern: "https?://my-hoster\\.com/.+",

  resolve(url) {
    const page = amigo.httpGet(url);
    const link = amigo.htmlQueryAttr(page.body, "a.download-btn", "href");
    return {
      name: amigo.htmlExtractTitle(page.body) ?? "Download",
      downloads: [{
        url: amigo.urlResolve(url, link),
        filename: null,
        filesize: null,
        chunks_supported: true,
        max_chunks: null,
        headers: null,
        cookies: null,
        wait_seconds: null,
        mirrors: [],
      }],
    };
  },
} satisfies AmigoPlugin;

One command. Any platform.

Ship it as a Docker container, a single binary, or a native desktop app. Pick whichever fits your setup — the server, plugins and Web UI come bundled.

  • Docker: recommended — single compose file, persistent volumes, built-in update checks.
  • Shell: install script auto-detects OS + arch, drops a systemd unit when available.
  • Cargo: build from source for bleeding-edge features.
  • Desktop: native Tauri builds for macOS, Windows, Linux.
Recommended for self-hosting
curl -O https://raw.githubusercontent.com/amigo-labs/amigo-downloader/main/docker/docker-compose.yml
docker compose up -d