CLI Examples
Practical examples for common Risuko CLI workflows.
Basic Downloads
HTTP/HTTPS file
risuko download https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso \
-t 16 \
-d ~/DownloadsWith custom filename
risuko download https://example.com/archive.tar.gz -o my-archive.tar.gzBehind a proxy
risuko download https://example.com/file.zip --proxy http://proxy.corp.com:8080With DNS over HTTPS
risuko config set doh-enable true
risuko config set doh-url https://cloudflare-dns.com/dns-query
risuko config set doh-bootstrap "1.1.1.1,1.0.0.1"DoH is engine-wide configuration, not a per-download flag. The engine reads
the doh-* keys (doh-enable, doh-url, doh-bootstrap, doh-fallback)
at startup, so restart a running risuko serve for changes to take effect.
With authentication
risuko download https://example.com/private/file.zip \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."With cookies
risuko download https://example.com/session-file.zip \
--cookie "session_id=abc123; user=john"BitTorrent
Magnet link
risuko download "magnet:?xt=urn:btih:abc123...".torrent file with seeding control
risuko download ./linux-distro.torrent \
--seed-ratio 2.0 \
--seed-time 120Media (yt-dlp)
URLs on known media hosts (YouTube, Twitch, Vimeo, bilibili, TikTok, X, and others) are routed through the yt-dlp media engine automatically. Media downloads accept only one URL.
Video with a format selector
risuko download "https://www.youtube.com/watch?v=dQw4w9WgXcQ" \
--media-format "bestvideo+bestaudio"Force a URL through yt-dlp
# For hosts not in the built-in allowlist
risuko download https://example.com/watch/12345 --ytdlpRunning as a Server
Start a headless server
# Default port 16800
risuko serve
# Custom port
risuko serve --rpc-port 6800Remote downloads with a running server
# In another terminal
risuko download https://example.com/file.zip --rpc-port 6800
risuko status --rpc-port 6800There is no host flag: the CLI always dials the host from the rpc-host
config key (default 127.0.0.1), and serve binds to it. To reach a server
from another machine, set rpc-host in the config on both ends.
With an RPC secret
risuko config set rpc-secret mysecret
# `serve` has no --rpc-secret flag; it reads the secret from config
risuko serve
# Clients pass --rpc-secret (or read it from the same config file)
risuko status --rpc-secret mysecretGraceful shutdown
risuko shutdown --rpc-port 6800RSS Feeds
Subscribe to a feed
risuko rss add "https://nyaa.si/?page=rss"List subscriptions
risuko rss listForce refresh
risuko rss refreshRemove a feed
# Get the feed ID from `rss list`
risuko rss remove feed_abc123Configuration
View all settings
risuko config listChange download directory
risuko config set dir '"/home/user/downloads"'Set max concurrent downloads
risuko config set max-concurrent-downloads 5Check a specific setting
risuko config get dirScripting
JSON output for automation
# Get active downloads as JSON
risuko status --json | jq '.[] | select(.status == "active")'
# Get download speed
risuko global-stat --json | jq '.downloadSpeed'Download and wait
# The download command blocks until complete (with progress bar)
risuko download https://example.com/file.zip && echo "Done!"Batch downloads from a file
# urls.txt contains one URL per line
while IFS= read -r url; do
risuko download "$url" -d ~/Downloads &
done < urls.txt
waitRun risuko serve (or the desktop app) first. With no engine running, each
invocation starts its own temporary engine, and parallel invocations race for
the RPC port.