๐ TDM (Terminal Download Manager)
TDM is a cross-platform, multi protocol fast and lightweight download manager that runs directly in your terminal. Designed for efficiency and ease of use, TDM provides a powerful solution for downloading files with advanced capabilities.
Multi Protocol
Download Management
Priority based download queueing system
Pause, resume, cancel, and delete for all downloads
Comprehensive download status tracking
๐ ๏ธ Installation
Homebrew (macOS / Linux)
brew install NamanBalaji/tap/tdm
AUR (Arch Linux) โ coming soon
yay -S tdm-bin
Scoop (Windows)
scoop bucket add tdm https://github.com/NamanBalaji/scoop-bucket
scoop install tdm
deb / rpm / apk
Download the package for your platform from the releases page , then e.g.:
sudo dpkg -i tdm_*_linux_amd64.deb # Debian/Ubuntu
sudo rpm -i tdm_*_linux_amd64.rpm # Fedora/RHEL
Go
go install github.com/NamanBalaji/tdm@latest
Pre-built Binaries
Download the archive for your platform from the releases page , extract it, and move the binary onto your PATH:
tar xzf tdm_*_linux_amd64.tar.gz
sudo mv tdm /usr/local/bin/tdm
Install from Source
git clone https://github.com/NamanBalaji/tdm.git
cd tdm
go build
./tdm
๐ง Configuration
TDM offers extensive configuration options via a YAML file or CLI flags.
Config File
Create a config file at ~/.config/tdm (on Linux/macOS) or %LOCALAPPDATA%/tdm (on Windows).
Here is an example configuration with default values:
maxConcurrentDownloads: 3
http:
dir: "/User/Downloads" # Default: User's download directory
tempDir: "/tmp/tdm" # Default: System temp dir/tdm
connections: 8 # Connections per download
maxChunks: 32 # Split download into chunks
maxRetries: 3 # Retries per chunk failure
retryDelay: 2s # Delay between retries
torrent:
dir: "/User/Downloads" # Default: User's download directory
seed: true # Enable seeding
establishedConnectionsPerTorrent: 50 # Max established peers per torrent
halfOpenConnectionsPerTorrent: 25 # Max half-open connections
totalHalfOpenConnections: 100 # Global max half-open connections
disableDht: false # Enable/Disable DHT
disablePex: false # Enable/Disable Peer Exchange
disableTrackers: false # Enable/Disable Trackers
disableIPv6: false # Enable/Disable IPv6
metainfoTimeout: 60s # Timeout for fetching metadata
CLI Flags
CLI flags override config file values.
Flag
Description
-urls
Path to a file containing URLs separated by space
-mcd
Max number of concurrent downloads
-dd
Path to the directory for storing new downloads
-td
Path to temporary directory for storing HTTP chunks
-conn
Number of parallel connections for HTTP downloads
-c
Number of chunks a HTTP download will be split into
-mr
Maximum number of retries before a chunk fails
-ns
Disable seeding for torrents
-np
Disable Peer Exchange (PEX) for torrents
-nd
Disable DHT for torrents
๐๏ธ Upcoming Features
yt-dlp integration
FTP protocol support
SFTP protocol support
TUI improvements
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull RequestMsg.
Development Setup
Clone the repository
Install dependencies: go mod download
Run tests: go test ./...
Build: go build