ODM — Oryn Download Manager
odm is a CLI download manager written in Go, inspired by aria2c. It ships as a single static binary with no runtime dependencies.
Its core differentiator is the Connection Balancer — automatic allocation of parallel connections that adapts between single-file and many-files (batch) modes, so you set one connection budget and the tool splits it sensibly across files instead of you computing connections-per-file by hand.
It also has a pacman/CachyOS-style (ILoveCandy) progress bar, and a JSON-RPC 2.0 + WebSocket RPC server so other programs (CLIs, GUIs, scripts) can drive it — the same relationship aria2c has with AriaNg.
---
Install
From source (requires Go 1.26+):
git clone <this repo> && cd odm
go build -o odm ./cmd/odm
# optional: install to PATH
install -Dm755 odm /usr/local/bin/odmSystem-wide default config (root-owned, 0644, per the security guidance):
install -Dm644 configs/odm.conf.example /etc/odm/config.confPer-user overrides go in ~/.config/odm/config.conf.
---
Quick start
The three canonical invocations (from the spec):
# 1. Single file, 16 parallel connections to one server for one file.
odm -c 16 https://files.test.xyz/file.tar.gz
# 2. Batch (no -sf): 16 URLs, 1 connection per file, 16 files run in parallel.
# RECOMMENDED: space-separated positional args (comma-safe).
odm -c 16 https://files.test.xyz/file1.tar.gz url2 url3 ... # 16 urls
# 3. Batch with -sf 4: 16 connections split 4 per file → 4 files run in parallel
# (the rest queue automatically as slots free).
odm -c 16 -sf 4 https://files.test.xyz/file1.tar.gz url2 url3 ...For large batches (10 URLs) prefer an input file:
odm -i file-list.txt # one URL per line, '#' comments and blanks skipped---