<img width="1000" height="500" alt="KGet Banner" src="https://github.com/user-attachments/assets/d0888e3f-90a2-42d6-a9aa-b216dc36f1f4" />
# KGet v1.6.0
A fast, modern download manager written in Rust. Supports HTTP/HTTPS, FTP/SFTP, and **magnet links** with a built-in torrent client.
## Features
- **Multi-protocol:** HTTP, HTTPS, FTP, SFTP, and Magnet links
- **Native Torrent Client:** Downloads torrents directly — no external apps needed
- **Turbo Mode:** Parallel connections for faster downloads
- **GUI & CLI:** Use whichever you prefer
- **Cross-platform:** macOS, Linux, Windows
- **ISO Verification:** Optional SHA256 checksum for disk images
## Screenshots
| <img src="https://github.com/user-attachments/assets/6da6dbd4-b3ae-4669-b64b-ffe3b961beb2" width="400"/> | <img src="https://github.com/user-attachments/assets/a835c4df-5424-4aaa-b687-2445a99ba067" width="400"/> |
## Installation
### From Source
```bash
# 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
```bash
cargo install Kget --features gui
```
### Pre-built Binaries for macOS/Linux/Windows GUI
Download from [Releases](https://github.com/davimf721/KGet/releases).
## Usage
### GUI Mode
```bash
kget --gui
```
### CLI Mode
```bash
# Basic download
kget https://example.com/file.zip
# Turbo mode (parallel connections)
kget -a https://example.com/large.iso
# Save to specific location
kget -O ~/Downloads/myfile.zip https://example.com/file.zip
# Torrent download
kget "magnet:?xt=urn:btih:HASH..."
# FTP/SFTP
kget ftp://user:pass@server/file.zip
kget sftp://user@server/file.dat
```
### Options
| `-a, --advanced` | Turbo mode with parallel connections |
| `-O <path>` | Output file or directory |
| `-q, --quiet` | Minimal output |
| `-p <proxy>` | Use HTTP/SOCKS5 proxy |
| `-l <bytes>` | Speed limit in bytes/sec |
| `--gui` | Launch graphical interface |
| `--interactive` | Interactive REPL mode |
## Library Usage
KGet can be used as a Rust library. See [LIB.md](LIB.md) for details.
```rust
use kget::{download, DownloadOptions};
let options = DownloadOptions::default();
download("https://example.com/file.zip", options)?;
```
## Building
```bash
# CLI only
cargo build --release
# With GUI
cargo build --release --features gui
# Cross-compile for Linux/Windows (from macOS)
./build-cross.sh
```
## Testing
```bash
cargo test # All tests
./run-tests.sh # Full test suite with linting
```
## Links
- [Documentation](https://davimf721.github.io/KGet/)
- [Changelog](CHANGELOG.md)
- [crates.io](https://crates.io/crates/Kget)
- [Contributing](CONTRIBUTING.md)
## You can see posts about the project in others communities:
- [Dev.to](https://dev.to/davimf7221/kelpsget-v014-modern-download-manager-in-rust-4b9f)
- [r/rust](https://www.reddit.com/r/rust/comments/1kt69vh/after_5_months_of_development_i_finally_released/)
- [PitchHut](https://www.pitchhut.com/project/kelpsget)
- [Hacker News](https://hn.algolia.com/?query=Show%20HN%3A%20KelpsGet%20%E2%80%93%20Modern%20download%20manager%20built%20in%20Rust&type=story&dateRange=all&sort=byDate&storyText=false&prefix&page=0)
## License
MIT License - see [LICENSE](LICENSE)