Kget 1.6.3

A powerful and versatile download manager and library
Documentation

KGet v1.6.3

A fast, modern download manager written in Rust. Supports HTTP/HTTPS, FTP/SFTP, and magnet links with a built-in torrent client.

English | Português | Español

Features

  • Multi-protocol: HTTP, HTTPS, FTP, SFTP, Magnet links, and Metalink (.meta4/.metalink)
  • Native Torrent Client: Downloads torrents directly — no external apps needed
  • Turbo Mode: Parallel connections for faster downloads
  • Metalink: Multi-mirror downloads with automatic mirror fallback and SHA-256 verification (RFC 5854)
  • Download History: Every download is recorded; browse with --history, clear with --history-clear
  • Interactive REPL: Full kget --interactive mode with history, all protocols, and live config editing
  • GUI & CLI: Use whichever you prefer
  • Cross-platform: macOS, Linux, Windows
  • ISO Verification: Optional SHA256 checksum for disk images
  • JSONL Events: Experimental machine-readable progress for scripts and agents
  • Native Notifications: Completion/error notifications in the Rust GUI on Linux/Windows

Screenshots

GUI CLI

Installation

From Source

# Install Rust from https://rustup.rs if needed

# Linux dependencies (Debian/Ubuntu)
sudo apt install -y libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev pkg-config

# Clone and build
git clone https://github.com/davimf721/KGet.git
cd KGet
cargo build --release --features gui

# Run
./target/release/kget --gui

From crates.io

cargo install Kget --features gui

Pre-built Binaries for macOS/Linux/Windows GUI

Download from Releases.

Usage

GUI Mode

kget --gui

CLI Mode

# Basic download
kget https://example.com/file.zip

# Turbo mode (parallel connections, resumable)
kget -a https://example.com/large.iso

# Save to specific location
kget -O ~/Downloads/myfile.zip https://example.com/file.zip

# Torrent download (auto-detected)
kget "magnet:?xt=urn:btih:HASH..."

# FTP – anonymous (no credentials needed)
kget --ftp ftp://ftp.gnu.org/gnu/emacs/emacs-28.2.tar.gz

# FTP – authenticated
kget --ftp ftp://user:pass@server/file.zip

# SFTP – password in URL
kget --sftp sftp://user:pass@server/path/to/file.dat

# SFTP – key-based (SSH agent or ~/.ssh/id_*)
kget --sftp sftp://user@server/path/to/file.dat

Interactive Mode

kget --interactive

Launches a REPL with an ASCII art banner, command history, and full protocol support:

kget> download -a -o ~/Downloads/ubuntu.iso https://releases.ubuntu.com/...
kget> download --sftp sftp://user@server/backups/db.sql.gz
kget> download magnet:?xt=urn:btih:...
kget> config set connections 8
kget> config set speed-limit 1048576
kget> help

Metalink downloads

# From a local manifest
kget --metalink ubuntu-24.04.meta4

# From a remote manifest (auto-detected by extension)
kget https://releases.ubuntu.com/ubuntu.meta4

# Tries each mirror in priority order; verifies SHA-256 automatically

Download History

kget --history                    # list last 50 downloads
kget --history-clear              # remove all entries
kget --history-clear completed    # remove only completed/cancelled

Interactive mode:

kget> history
kget> history clear completed

Options

Flag Description
-a, --advanced Turbo mode with parallel connections (resumable)
-O <path> Output file or directory
-q, --quiet Minimal output
-p <proxy> Use HTTP/SOCKS5 proxy
-l <bytes> Speed limit in bytes/sec
--sha256 <hash> Verify the completed file against an expected SHA256 hash
--metalink Download from a Metalink manifest (.meta4 / .metalink)
--history Show download history (last 50 entries)
--history-clear [completed] Clear history (all, or only completed/cancelled)
--jsonl Emit experimental JSON Lines events for scripts and agents
--ftp Use FTP protocol
--sftp Use SFTP protocol (password or key-based auth)
--gui Launch graphical interface
-i, --interactive Interactive REPL mode

Library Usage

KGet can be used as a Rust library. See LIB.md for details.

use kget::{download, DownloadOptions, Optimizer, ProxyConfig};

let options = DownloadOptions::default();
download(
    "https://example.com/file.zip",
    ProxyConfig::default(),
    Optimizer::new(),
    options,
    None,
)?;

Building

# CLI only
cargo build --release

# With GUI
cargo build --release --features gui

# Cross-compile for Linux/Windows (from macOS)
./build-cross.sh

Testing

cargo test              # All tests
./run-tests.sh          # Full test suite with linting

Links

You can see posts about the project in others communities:

License

MIT License - see LICENSE