#sftp #ftp #download #http #api-bindings

bin+lib Kget

A powerful and versatile download manager and library

4 stable releases

Uses new Rust 2024

new 1.5.3 Dec 23, 2025
1.5.2 Dec 22, 2025
1.5.1 Dec 18, 2025
1.5.0 May 27, 2025

#1218 in Network programming

MIT license

365KB
2K SLoC

image

KGet! v1.5.3 (Latest Release)

A modern, lightweight, and versatile downloader written in Rust for fast and reliable file downloads via command line (CLI) and graphical user interface (GUI).

English | Português | Español

Screenshots

  • GUI:
  • Torrent on localhost:9091/transmission/web/:
  • CLI:
  • Interactive:

How It Works (Summary)

  1. Progress Bar (CLI): Shows speed, ETA, and transferred bytes.
  2. Smart File Naming:
    • Uses the filename from the URL.
    • Defaults to index.html if the URL ends with /.
  3. Error Handling: Exits with code 1 on HTTP errors (e.g., 404).
  4. Space Check: Verifies available disk space.
  5. Automatic Retry: Retries download on network failure.
  6. ISO Smart Detection: Detects .iso files to ensure raw binary transfer and prevent corruption.
  7. Integrity Check: Optional SHA256 verification for disk images after download.
  8. Memory Efficient: Parallel downloads use streaming buffers to maintain a low RAM footprint regardless of file size.
  9. Disk Optimization: Uses buffered I/O to prevent high disk active time and system freezes during fast transfers.
  10. Advanced Download Mode (HTTP/HTTPS): Downloads in parallel chunks, supports resume.
  11. Proxy Support: HTTP, HTTPS, SOCKS5 with authentication.
  12. Optimization Features: Compression (for cache), file caching, speed limiting.
  13. Torrent Downloads (Magnet Links):
    • Default: opens the magnet link using your system's default BitTorrent client (qBittorrent/Transmission/etc).
    • Optional (feature): can download via Transmission RPC (torrent-transmission feature).
  14. FTP/SFTP Downloads: Connects to FTP/SFTP servers to transfer files.

Features

See the full list of features and recent changes in the CHANGELOG.

KGet now is a Library too!

If you want to use KGet as a library you can click here.

Optional Cargo features

GUI (gui)

Build/run with GUI support:

cargo build --features gui
cargo run --features gui -- --gui

Transmission RPC torrent backend (torrent-transmission)

If you want KGet to add magnet links to a Transmission daemon (RPC), build with:

cargo build --features torrent-transmission
# or with GUI:
cargo build --features "gui torrent-transmission"

Select the backend at runtime:

  • Default (no env var): uses the system torrent client (xdg-open/open/start)
  • Transmission RPC:
# Linux/macOS
export KGET_TORRENT_BACKEND=transmission

# Windows PowerShell (current session)
$env:KGET_TORRENT_BACKEND="transmission"

Transmission settings (env vars):

  • KGET_TRANSMISSION_HOST (default: localhost)
  • KGET_TRANSMISSION_PORT (default: 9091)
  • KGET_TRANSMISSION_RPC_PATH (default: /transmission/rpc)
  • KGET_TRANSMISSION_WEB_PATH (default: /transmission/web/)
  • Optional auth: KGET_TRANSMISSION_USER, KGET_TRANSMISSION_PASS

Compatibility:

  • You can also use KGET_TRANSMISSION_URL and KGET_TRANSMISSION_WEB (full URLs).

Installation

Option 1: Compile from source

You will need Rust installed. If you don't have it, install it from rustup.rs.

Install some dependencies: For Debian/Ubuntu based systems:

sudo apt update
sudo apt install -y libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev pkg-config

For Fedora:

sudo dnf install -y libxcb-devel libxkbcommon-devel openssl-devel pkg-config

Clone the repository and compile the project:

git clone https://github.com/davimf721/KGet.git
cd KGet
cargo build --release

The executable will be in target/release/kget. You can copy it to a directory in your PATH:

sudo cp target/release/kget /usr/local/bin/

Option 2: Install via Cargo

You can install the published binary from crates.io (the GUI and Transmission backend are opt-in via features):

# Install the binary without GUI (default)
cargo install Kget

# Install with GUI support
cargo install Kget --features gui

# Install with Transmission RPC backend (optional)
cargo install Kget --features torrent-transmission

# Install with both
cargo install Kget --features "gui torrent-transmission"

If you encounter issues with the GUI when installing via cargo install, compiling from source is more reliable.

Option 3: Download Pre-compiled Binaries

Check the Releases section for the latest binaries for your OS.

Linux/macOS:

chmod +x ksget  # Make executable
./kelpsget [URL]    # Run directly

Windows:

Run the .exe file directly.

Usage

Command Line (CLI)

kget [OPTIONS] <URL>

Examples:

  • HTTP/HTTPS Download:

    kget https://example.com/file.txt
    
  • Rename Output File:

    kget -O new_name.txt https://example.com/file.txt
    kget -O ~/MyDownloads/ https://example.com/video.mp4 # Saves as ~/MyDownloads/video.mp4
    
  • FTP Download:

    kget ftp://user:password@ftp.example.com/archive.zip
    kget --ftp ftp://ftp.example.com/pub/file.txt
    
  • SFTP Download: (Requires SSH key setup or password if the server allows it)

    kget sftp://user@sftp.example.com/path/file.dat
    kget --sftp sftp://user@sftp.example.com/path/file.dat -O local.dat
    
  • Torrent Download (Magnet Link): (Requires transmission-daemon configured and running)

    kget "magnet:?xt=urn:btih:YOUR_HASH_HERE&dn=TorrentName"
    kget --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:

    kget -q https://example.com/file.txt
    
  • Advanced Download Mode (HTTP/HTTPS):

    kget -a https://example.com/large_file.zip
    
    • ISO Download with Verification: KGet will automatically detect the ISO and ask if you want to verify the SHA256 hash once finished.
  • Use Proxy:

    kget -p http://proxy:8080 https://example.com/file.txt
    
  • Proxy with Authentication:

    kget -p http://proxy:8080 --proxy-user user --proxy-pass pass https://example.com/file.txt
    
  • Speed Limit:

    kget -l 1048576 https://example.com/file.txt  # Limit to 1MB/s
    
  • Disable Compression (KGet-specific, not HTTP):

    kget --no-compress https://example.com/file.txt
    
  • Disable Cache (KGet-specific):

    kget --no-cache https://example.com/file.txt
    

You can see posts about the project in others communities:

Contributing

Want to contribute? Check out our contribution guide!

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

License

This project is licensed under the MIT License - see the LICENSE file for details.

Dependencies

~35–87MB
~1.5M SLoC