A modern, lightweight, and versatile downloader written in Rust for fast and reliable file downloads via command line (CLI) and graphical user interface (GUI).
✅ Simple CLI and GUI tool for downloading files via HTTP/HTTPS.
✅ Support for downloads via FTP and SFTP.
✅ Support for Torrent downloads (magnet links) via Transmission integration.
✅ Progress bar with real-time speed and ETA tracking (CLI).
✅ Custom output names (-O flag to rename downloaded files).
✅ MIME type detection and proper file handling.
✅ Cross-platform (Linux, macOS, Windows).
✅ Silent mode for scripts.
✅ Automatic space checking before download.
✅ Automatic retry on connection failure.
✅ File name validation.
✅ Detailed download information display.
✅ Advanced download mode with parallel chunks and resume capability (HTTP/HTTPS).
✅ Proxy support (HTTP, HTTPS, SOCKS5).
✅ Automatic compression and caching (for KelpsGet-specific optimizations).
✅ Speed limiting and connection control.
You will need Rust installed. If you don't have it, install it from rustup.rs.
To compile with all features, including the GUI, you might need some development dependencies. For Debian/Ubuntu based systems:
For Fedora:
Clone the repository and compile the project:
The executable will be in target/release/kelpsget. You can copy it to a directory in your PATH:
If you encounter issues with the GUI when installing via cargo install, compiling from source is more reliable.
Check the Releases section for the latest binaries for your OS.
Run the .exe file directly.
KelpsGet uses the transmission-daemon to manage torrent downloads.
1. Install Transmission Daemon:
- Debian/Ubuntu:
sudo apt update sudo apt install transmission-daemon
- Fedora:
sudo dnf install transmission-daemon
- Arch Linux:
sudo pacman -S transmission-cli
2. Stop the Daemon for Configuration:
3. Configure Transmission: Edit the settings.json file. Common locations:
- /var/lib/transmission-daemon/info/settings.json (Debian/Ubuntu, if installed as a service)
- /var/lib/transmission/.config/transmission-daemon/settings.json (Another common path, check your system)
- ~/.config/transmission-daemon/settings.json (if run as a user)
Use sudo nano /var/lib/transmission-daemon/info/settings.json (or the correct path for your system).
Find and modify these lines:
Important: After saving and starting transmission-daemon, it will replace the plain text rpc-password with a hashed version.
4. (Optional) Adjust Daemon User Permissions: If transmission-daemon runs as a specific user (e.g., debian-transmission or transmission), ensure this user has write permissions in the download directories you intend to use with KelpsGet or Transmission itself. You can add your user to the Transmission daemon's group:
5. Start the Transmission Daemon:
Access http://localhost:9091 in your browser. You should see the Transmission web interface and be prompted to log in with the rpc-username and rpc-password you configured.
Examples:
-
HTTP/HTTPS Download:
kelpsget https://example.com/file.txt -
Rename Output File:
kelpsget -O new_name.txt https://example.com/file.txt kelpsget -O ~/MyDownloads/ https://example.com/video.mp4 # Saves as ~/MyDownloads/video.mp4 -
FTP Download:
kelpsget ftp://user:[email protected]/archive.zip kelpsget --ftp ftp://ftp.example.com/pub/file.txt -
SFTP Download: (Requires SSH key setup or password if the server allows it)
kelpsget sftp://[email protected]/path/file.dat kelpsget --sftp sftp://[email protected]/path/file.dat -O local.dat -
Torrent Download (Magnet Link): (Requires transmission-daemon configured and running)
kelpsget "magnet:?xt=urn:btih:YOUR_HASH_HERE&dn=TorrentName" kelpsget --torrent "magnet:?xt=urn:btih:YOUR_HASH_HERE" -O ~/MyTorrents/KelpsGet will add the torrent to Transmission and attempt to open the web interface (http://localhost:9091) for management.
-
Silent Mode:
kelpsget -q https://example.com/file.txt -
Advanced Download Mode (HTTP/HTTPS):
kelpsget -a https://example.com/large_file.zip -
Use Proxy:
kelpsget -p http://proxy:8080 https://example.com/file.txt -
Proxy with Authentication:
kelpsget -p http://proxy:8080 --proxy-user user --proxy-pass pass https://example.com/file.txt -
Speed Limit:
kelpsget -l 1048576 https://example.com/file.txt # Limit to 1MB/s -
Disable Compression (KelpsGet-specific, not HTTP):
kelpsget --no-compress https://example.com/file.txt -
Disable Cache (KelpsGet-specific):
kelpsget --no-cache https://example.com/file.txt
To start the GUI:
The GUI allows you to enter the URL, output path, and start downloads. Status and progress are displayed in the interface.
KelpsGet uses a configuration file at:
- Windows: %APPDATA%\kelpsget\config.json
- Linux/macOS: ~/.config/kelpsget/config.json
Example config.json for KelpsGet:
Note on cache_dir and key_path: If using ~, ensure your program correctly expands the tilde to the user's home directory, or use absolute paths.
- Progress Bar (CLI): Shows speed, ETA, and transferred bytes.
- Smart File Naming:
- Uses the filename from the URL.
- Defaults to index.html if the URL ends with /.
- Error Handling: Exits with code 1 on HTTP errors (e.g., 404).
- Space Check: Verifies available disk space.
- Automatic Retry: Retries download on network failure.
- Advanced Download Mode (HTTP/HTTPS): Downloads in parallel chunks, supports resume.
- Proxy Support: HTTP, HTTPS, SOCKS5 with authentication.
- Optimization Features: Compression (for cache), file caching, speed limiting.
- Torrent Downloads: Adds magnet links to transmission-daemon for download.
- FTP/SFTP Downloads: Connects to FTP/SFTP servers to transfer files.
- Space Check: Ensures sufficient disk space.
- Filename Validation: Prevents path injection.
- Secure URL Handling.
- Secure Proxy Support.
Found a bug or want to add a feature? Open an issue or send a PR!
🚀 Download files effortlessly with the speed and reliability of Rust. 🚀
- 📚 Documentation (Update if necessary)
- 📦 crates.io
- 💻 GitHub
- 📝 Changelog
- FTP/SFTP download support
- Torrent download support
- Desktop GUI Interface
- Web interface for download monitoring
- Integration with cloud storage services
- Custom plugin system
- Improvements in adaptive compression
- Optimization of the caching system
- Support for additional proxy protocols
- Multilingual documentation (in progress)
Want to contribute? Check out our contribution guide!
This project is licensed under the MIT License - see the LICENSE file for details.