Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 20 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,32 +16,29 @@ A full-featured Kotlin Multiplatform download manager β€” run locally, remotely,
- **Control it remotely** β€” Manage a daemon from any client (mobile app, web UI, CLI, or AI agent)
- **Extend it** β€” Pluggable architecture for custom protocols (FTP, BitTorrent, HLS, and more on the roadmap)

> **WIP:** This project is under active development. APIs may change. Contributions and feedback are welcome!
> [!WARNING]
> 🚧 **Work in Progress** β€” This project is under active development. APIs may change. Contributions and feedback are welcome!

## Features

- **Multi-platform** `βœ…` -- Android, iOS, JVM/Desktop, and WebAssembly (WasmJs)
- **Segmented downloads** `βœ…` -- Split files into N concurrent segments using HTTP Range requests
- **Pause / Resume** `βœ…` -- True resume using byte ranges, with ETag/Last-Modified validation
- **Queue management** `βœ…` -- Priority-based queue with configurable concurrency limits and per-host throttling
- **Speed limiting** `βœ…` -- Global and per-task bandwidth throttling via token-bucket algorithm
- **Scheduling** `βœ…` -- Start downloads at a specific time, after a delay, or when conditions are met
- **Download conditions** `βœ…` -- User-defined conditions (e.g., WiFi-only) that gate download start
- **Pluggable sources** `βœ…` -- Extensible `DownloadSource` interface for custom protocols (HTTP built-in)
- **Persistent resume** `βœ…` -- Task metadata survives app restarts via pluggable `TaskStore`
- **Progress tracking** `βœ…` -- Aggregated progress across segments via `StateFlow`, with download speed
- **Retry with backoff** `βœ…` -- Configurable exponential backoff for transient errors
- **Daemon server** `βœ…` -- Run KDown as a background service with REST API and SSE events
- **Remote control** `βœ…` -- Control a daemon server from any client via `RemoteKDown`
- **Pluggable HTTP engine** `βœ…` -- Ships with Ktor; bring your own `HttpEngine` if needed
- **FTP/FTPS** `πŸ”œ` -- FTP/FTPS protocol as a pluggable download source
- **BitTorrent** `πŸ”œ` -- Segmented piece downloading and peer-to-peer transfers
- **Magnet links** `πŸ”œ` -- Magnet URI scheme with DHT/tracker-based metadata resolution
- **HLS streaming** `πŸ”œ` -- Download and merge `.m3u8` playlist segments
- **Resource sniffer** `πŸ”œ` -- Detect downloadable resources from web pages
- **Media downloads** `πŸ”œ` -- Web media extraction (like yt-dlp) with pluggable extractors
- **Browser extension** `πŸ”œ` -- Intercept and manage downloads via the daemon server
- **AI integration** `πŸ”œ` -- MCP server for AI agent tool access and skill-based automation
- **Multi-platform** `βœ…` -- Works on Android, iOS, Desktop, and Web
- **Segmented downloads** `βœ…` -- Accelerate downloads by splitting files into multiple parallel connections
- **Pause / Resume** `βœ…` -- Pause and pick up where you left off, even after restarting your app
- **Queue management** `βœ…` -- Manage multiple downloads with priorities and concurrency limits
- **Speed limiting** `βœ…` -- Control bandwidth usage per task or globally
- **Scheduling** `βœ…` -- Schedule downloads for a specific time, after a delay, or based on conditions
- **Automatic retry** `βœ…` -- Automatically retry failed downloads with smart backoff
- **Daemon server** `βœ…` -- Run as a background service with REST API and real-time events
- **Remote control** `βœ…` -- Manage a remote server from any client (mobile, desktop, web, or CLI)
- **Pluggable architecture** `βœ…` -- Swap out HTTP engines, storage backends, and download sources
- **FTP/FTPS** `πŸ”œ` -- Download from FTP servers
- **BitTorrent** `πŸ”œ` -- Peer-to-peer file sharing
- **Magnet links** `πŸ”œ` -- Start BitTorrent downloads from magnet links
- **HLS streaming** `πŸ”œ` -- Download and save HTTP Live Streaming videos
- **Resource sniffer** `πŸ”œ` -- Detect downloadable files from web pages
- **Media downloads** `πŸ”œ` -- Extract and download media from websites (like yt-dlp)
- **Browser extension** `πŸ”œ` -- Intercept and manage downloads directly from your browser
- **AI integration** `πŸ”œ` -- Control downloads via AI agents using MCP

## Quick Start

Expand Down
Loading