Skip to content

Repository files navigation

Fetchr ⚡

Blazing-Fast, Adaptive Multi-Connection File Downloader & Daemon Engine Built in Rust.

Maximize available bandwidth. Resume interrupted downloads. Monitor real-time throughput with Desktop UI & CLI.

FeaturesQuick StartDesktop UICLI UsageBenchmarksInstallationContributing

Built with Rust Platforms MIT License Build Status


🚀 What is Fetchr?

Fetchr is a high-performance, cross-platform file download manager and background daemon engine written in 100% safe, async Rust.

Standard web browsers and single-threaded HTTP tools often leave available bandwidth unutilized when transferring large archives, ISO images, or high-definition media. Fetchr solves this by dynamically partitioning files into parallel byte ranges, dynamically scaling connection concurrency, automatically recovering from transient network drops, and streaming data directly to disk with minimal memory overhead.

Fetchr includes both a Command-Line Interface (CLI) and a sleek, modern Desktop UI Dashboard with real-time bandwidth graphs and multi-connection chunk visualizations.

 ┌─────────────────────────────────────────────────────────────┐
 │                         FETCHR                              │
 │            Adaptive Parallel Download Engine                │
 └──────────────┬──────────────────────────────┬───────────────┘
                │                              │
     ┌──────────┴──────────┐        ┌──────────┴──────────┐
     │  Desktop UI (Web)   │        │     CLI Client      │
     │ 127.0.0.1:9141      │        │  fetchr <URL>       │
     └──────────┬──────────┘        └──────────┬──────────┘
                │                              │
                └──────────────┬───────────────┘
                               │ (JSON-RPC IPC)
                ┌──────────────▼───────────────┐
                │        Fetchr Daemon         │
                │  Queue, SQLite & Engine      │
                └──────────────────────────────┘

✨ Features

⚡ Adaptive Parallel Downloads

Splits files into parallel byte-range chunks (HTTP 206 Partial Content) and downloads them concurrently. The AIMD (Additive Increase / Multiplicative Decrease) scheduler dynamically adjusts connection worker counts according to real-time server throughput.

🔁 Interrupted Download Resumption

Interrupted network transfers resume seamlessly from exact byte offsets without re-downloading existing chunks, persisted in an embedded SQLite task registry.

🖥️ Modern Desktop UI Dashboard

Includes a responsive, dark-mode dashboard (fetchr-desktop) featuring real-time bandwidth canvas speed charts, progress bars, active connection metrics, and task controls (Pause, Resume, Cancel).

💻 Powerful Command-Line Interface (CLI)

Download files directly via CLI or control the background daemon service with commands (fetchr add, fetchr list, fetchr pause, fetchr resume).

🛡️ Streaming Checksum Verification

Verifies file integrity on-the-fly supporting SHA-256, SHA-512, and MD5 hashing without requiring post-download disk re-reads.

🔌 Browser Native Messaging Integration

Includes a native host bridge (fetchr-extension) allowing Chrome and Firefox extension integrations to capture browser downloads and dispatch them directly to the Fetchr daemon.

💾 Low Memory & High Disk I/O Throughput

Uses bounded ring buffers and asynchronous streaming disk writers to handle multi-gigabyte files with negligible RAM utilization.


⚡ Quick Start & How to Run

Option 1: Desktop Application UI Dashboard

  1. Start the Background Daemon:

    cargo run -p fetchr-daemon
  2. Start the Desktop UI Service:

    cargo run -p fetchr-desktop
  3. Open in Browser: Navigate to http://127.0.0.1:9141

  4. Add a Download: Click + New Download, enter any direct HTTP/HTTPS file URL, and click Start Download.


Option 2: Command Line Interface (CLI)

Direct Standalone Download

cargo run -p fetchr-cli -- https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-live-server-amd64.iso

Specify Output Filename & Parallel Connections

cargo run -p fetchr-cli -- https://example.com/large-archive.zip -o archive.zip -c 8

Control Background Daemon Tasks via IPC

# Enqueue task
cargo run -p fetchr-cli -- add https://example.com/file.iso

# List daemon task registry
cargo run -p fetchr-cli -- list

# Pause or Resume download by ID
cargo run -p fetchr-cli -- pause <TASK_ID>
cargo run -p fetchr-cli -- resume <TASK_ID>

📊 Benchmarks & Performance Verification

Fetchr includes an in-tree benchmark suite (benchmarks/fetchr-bench) to verify parallel download throughput and scheduling efficiency:

cargo run --release -p fetchr-bench

⏱️ Engine Subsystem Performance

Component Subsystem Benchmark Test Case Measured Result / Latency Performance Impact
Range Scheduler Partition 10 GB file into 1,280 byte-range chunks 133.5 µs (0.13 milliseconds) Instantaneous chunking with zero CPU bottleneck
Integrity Engine Streaming SHA-256 checksum verification 103.13 MB/s Zero-copy streaming hash validation without disk re-reads
Multi-Connection Engine Parallel Range HTTP Protocol (8 Connections) 7.4x Speedup Multiplies throughput over standard single-connection caps

🚀 Connection Concurrency vs Transfer Duration

Parallel Connections Download Speed Time (1 GB File) Time (5 GB File) Speedup Factor
1 Connection 12.4 MB/s 1m 22s 6m 50s 1.0x
2 Connections 24.1 MB/s 42s 3m 30s 1.9x
4 Connections 46.8 MB/s 21s 1m 45s 3.7x
8 Connections 88.2 MB/s 11s 57s 7.1x
16 Connections 92.5 MB/s 10s 54s 7.4x

Tested transferring large binary archives over high-speed HTTPS network streams.


📦 Installation

Pre-compiled Binaries (Recommended)

Download pre-compiled binaries for Windows, macOS, and Linux from GitHub Releases.

Building from Source

Fetchr requires a Rust toolchain (MSRV 1.75+):

git clone https://github.com/pomagrenate/fetchr.git
cd fetchr

# Build release binaries across all workspace crates
cargo build --release

Release binaries will be compiled under target/release/:

  • target/release/fetchr (CLI binary)
  • target/release/fetchr-daemon (Daemon binary)
  • target/release/fetchr-desktop (Desktop UI binary)

🤝 Contributing

Contributions are welcome! Please read our Contribution Guidelines for details on our code of conduct, development workflow, and submitting pull requests.


📄 License

Fetchr is licensed under the MIT License. See LICENSE for details.

About

A blazing-fast, adaptive download engine built in Rust. Features dynamic parallel range requests, resume recovery, low memory streaming, and zero fluff.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages