Skip to content

CLI

Most people will run Coldarr as the Docker web GUI - see the quick start for that. This is for running it as a binary or scripting it (cron, systemd, docker compose run) instead.

Building from source

go build -o coldarr ./cmd/coldarr

Go 1.26+. No other build-time dependencies - see the development guide for details.

Setting up connections

./coldarr connections set radarr --url http://localhost:7878 --api-key <key>
./coldarr connections set sonarr --url http://localhost:8989 --api-key <key>
cp coldarr.example.yaml coldarr.yaml   # or add tiers via `coldarr serve`

Radarr/Sonarr API keys are under Settings > General in each app. Jellyfin is optional and set up the same way, with jellyfin as the app name. So is Lidarr (lidarr), for download tiering, along with qBittorrent, which takes an API key (qBittorrent 5.2+), a WebUI login, or just the URL if its WebUI skips authentication for Coldarr's address:

./coldarr connections set qbittorrent --url http://localhost:8080 --username admin --password <password>

See Connections for how connections are stored and env-var overrides.

Commands

coldarr report   # tier usage + scored inventory, read-only
coldarr plan     # builds and prints a move plan, makes no changes
coldarr apply    # builds a plan, prompts, then executes it
coldarr apply -y # skip the confirmation prompt (e.g. for cron/systemd)
coldarr connections list|set|test|delete <radarr|sonarr|lidarr|jellyfin|qbittorrent>
coldarr serve    # run the web GUI, default port 8478
coldarr version  # print the Coldarr version

Download tiering has no commands of its own yet: it runs from the web interface's Downloads page and the scheduler.

All commands take --config path/to/coldarr.yaml (or -c; default ./coldarr.yaml, overridable via the COLDARR_CONFIG env var).

serve also takes --listen, --tls-cert-file, --tls-key-file, and --trusted-reverse-proxies-cidr, each defaulting to its environment variable.

Running the CLI in Docker

The image's default command is serve; override it to run one-shot CLI commands against the same /config volume instead:

docker compose run --rm coldarr report
docker compose run --rm coldarr plan
docker compose run --rm coldarr apply --yes
# /etc/cron.d/coldarr - rebalance every night at 4am
0 4 * * * root docker compose -f /path/to/docker-compose.yml run --rm coldarr apply --yes