Risuko
CLI

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 ~/Downloads

With custom filename

risuko download https://example.com/archive.tar.gz -o my-archive.tar.gz

Behind a proxy

risuko download https://example.com/file.zip --proxy http://proxy.corp.com:8080

With 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

risuko download "magnet:?xt=urn:btih:abc123..."

.torrent file with seeding control

risuko download ./linux-distro.torrent \
  --seed-ratio 2.0 \
  --seed-time 120

Media (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 --ytdlp

Running as a Server

Start a headless server

# Default port 16800
risuko serve

# Custom port
risuko serve --rpc-port 6800

Remote downloads with a running server

# In another terminal
risuko download https://example.com/file.zip --rpc-port 6800
risuko status --rpc-port 6800

There 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 mysecret

Graceful shutdown

risuko shutdown --rpc-port 6800

RSS Feeds

Subscribe to a feed

risuko rss add "https://nyaa.si/?page=rss"

List subscriptions

risuko rss list

Force refresh

risuko rss refresh

Remove a feed

# Get the feed ID from `rss list`
risuko rss remove feed_abc123

Configuration

View all settings

risuko config list

Change download directory

risuko config set dir '"/home/user/downloads"'

Set max concurrent downloads

risuko config set max-concurrent-downloads 5

Check a specific setting

risuko config get dir

Scripting

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
wait

Run 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.

On this page