About linroid/Ketch
linroid/Ketch is an open-source project on GitHub, mainly written in Kotlin. A fast, open-source download manager for every device you own. It currently holds 247 stars and 20 forks with 7 open issues, and was last pushed on 2026-10-08 (repository created 2026-02-07).
Project Overview
Git Homed tracks it on the Today's Trending board, currently at rank #61 with 54 new stars today.
GitHub Repository Details
README
Ketch
English · 简体中文 · Español · 日本語 · Deutsch · Français
A fast, open-source download manager for every device you own.
macOS · Windows · Linux · Android · iOS · Web · Command line
A Kotlin Multiplatform library you can embed in your own application.
Download · Watch demo · Features · Getting started · For developers
Ketch splits every download across parallel connections, and shows each one as a live lane. It takes web links, FTP servers, torrents and magnet links in one place. Pair your laptop, phone and home server, and you can watch and control the downloads on all of them from any one of them.
Building your own app? Embed the same download engine that powers Ketch's apps, with parallel downloads, pause and resume, queues and speed limits. The Kotlin Multiplatform library is available on Maven Central. Start integrating Ketch →
[!WARNING]
🚧 Ketch is in active development and only has release candidates so far. Expect rough edges,
and please report what you find.
Download
| Platform | Get it |
|---|---|
| macOS (Apple silicon, Intel) | .dmg from the [latest release][release] |
| Windows (x64, ARM64) | .msi, or the portable .zip that runs without installing, from the [latest release][release] (about the portable app) |
| Linux (x64, ARM64) | .deb from the [latest release][release] |
| Android 8.0+ | .apk from the [latest release][release] |
| iOS 18+ | Build from source with Xcode (app/ios) |
| Web | linroid.github.io/Ketch, to control Ketch running on another device |
| Browser extension | Chrome, Edge, Brave, Firefox and others: .zip from the [latest release][release] (how to install) |
| Command line and server | macOS, Linux and Windows: install script or the [latest release][release] |
The desktop apps bring their own runtime, and the command line is a single native binary: neither
needs Java. Both update themselves from the releases here: the desktop app from Settings → About,
the command line with ketch update (how updates work).
[release]: https://github.com/linroid/Ketch/releases/latest
Features
Faster downloads
- Parallel connections — Ketch splits a file into ranges and downloads them at once. The
- Several networks at once — Spread one download over Wi-Fi, Ethernet and, on Android,
- Pause and resume, even after a restart — Ketch checks that the file on the server has not
Every kind of link
- HTTP and HTTPS, with the cookies and referrer of the page when the browser extension sends
- FTP and FTPS, with parallel connections and resume.
- BitTorrent and magnet links — v1, v2 and hybrid torrents, with a choice of files, in an
- HLS (
.m3u8) and DASH (.mpd) — Save finite, unencrypted streams as one media file.
- Ketch can open magnet links and
.torrentfiles for your system, so a click in the browser or
All your devices in one app
- Pair by QR code — On the device to share, open Settings → Sharing and choose
- Every device in the sidebar with its live speed and health. Switch between them with a
- Send downloads where they belong — Add a link to any device, drop it on a device in the
- Headless on a NAS or server —
ketch serverruns the same engine with a REST API and the
In control of your bandwidth
- Speed modes — Full speed, Slow lane to leave room for a video call, or Auto, which
- Per-download control — Speed limits, connection counts and priorities you can change while
- A queue that behaves — Limit how many downloads run at once and per site, and start a
Built for how you work
- Browser extension for Chrome, Edge, Brave, Firefox and other browsers: it takes over
- Paste to download — Paste a link to add it, with Undo, or let Ketch suggest the links you
- Keyboard first on the desktop:
⌘K(Ctrl+Kon Windows and Linux) opens the command
- Finished means openable — Open a file, show it in its folder or drag it out, straight from
- At home on each platform — The menu bar or tray, notifications, Dock and taskbar progress
- Your look, your language — Light and dark themes with four accent colors, in English,
Find downloads with AI (preview)
- Discover — Describe what you want, such as "the latest Ubuntu Server ISO", and an AI agent
ketch ai-discover (setup).
- MCP server —
ketch mcplets AI assistants start, watch and manage your downloads through
Getting started
1. Install Ketch from Download and open it. On phones, a few welcome screens ask
where downloads go.
2. Add a download: paste a link (⌘V, or Ctrl+V), drop a link or a .torrent file on the
window, or choose Add.
3. To control this computer from your phone, open Settings → Sharing, choose
Allow another device and scan the QR code with the phone's camera.
4. Install the browser extension to send the browser's
downloads to Ketch.
Run Ketch on a server
Install the command line on macOS or Linux (on Windows, take the .zip from the
[latest release][release]):
curl -fsSL https://raw.githubusercontent.com/linroid/Ketch/main/install.sh | bash
Start the server, with its REST API and web app on port 8642:
ketch server
Then add it in the apps under Devices → Add device, or open http://:8642 in
a browser. The command line also downloads on its own:
ketch https://example.com/file.zip
Set an access code, the port and other options in a config file; the CLI documentation lists every command.
Roadmap
- Distribution before v1.0.0 — Signed Windows releases, signed and notarized macOS releases,
- Metalink — Downloads from several mirrors at once, with checksums
- WebDAV — Download from WebDAV servers, with resume
- More HLS and DASH formats — Choose quality, merge separate audio/video tracks, and handle
- Media extraction — Save the media of web pages
- Resource sniffer — Find the downloadable files on a web page
- Checksums — Check a download against a hash you provide, or one the server publishes
- Proxy — Download through an HTTP or SOCKS5 proxy or the system proxy, with a bypass list
- Faster segmented downloads — Connections that finish early take over the rest of the slower
- Stall detection and retry settings — Reconnect when a connection stops sending data, and
- Unfinished files look unfinished — Downloads are written under a temporary name and get
- Category folders — Save videos, music, documents and archives to folders of their own, by
- Torrent files, chosen any time — Pick the files of a magnet link once its details arrive,
- Keep awake — Keep the computer from sleeping while downloads run, and optionally sleep or
- Automation hooks — Run a command or call a webhook when a download finishes or fails
- Command line for running devices —
ketchand AI agents add, list, pause and watch the
- Docker image — An official image for NAS and home servers on x64 and ARM, with a health
- Transfers between devices — Send to and Move to carry what is already downloaded, so the
- Helper devices — Let your other devices download parts of the same file over their own
For developers
Embed Ketch in your application. Its Kotlin Multiplatform library gives you the same download
engine used by the Ketch apps, with your own UI and application logic. Add the modules you need
from Maven Central under com.linroid.ketch.
Run the engine inside your Android, iOS or JVM app with core and ktor; Node.js and WASI can
use core with a custom HTTP engine. Or use remote to control a Ketch server from Android,
iOS, the JVM or the browser through the same KetchApi.
- Developer guide — Modules, a quick start, the REST API and extending Ketch
- API reference — Installation, configuration, priorities, errors and logging
- Architecture — The download pipeline and how the apps are put together
Documentation
- Command line — Downloads, the server, MCP, AI discovery and the config file
- Browser extension — Setup, capturing, permissions and
- BitTorrent — Torrent and magnet support and its limits
- Multiple networks — Spreading downloads across network interfaces
- AI discovery — Providers, keys, web search, page access, chats and history
- Logging — Where the logs are, and what to attach to a bug report
Contributing
Contributions are welcome! Please open an issue to discuss your idea before submitting a PR. See the code style rules, testing rules and localization guide for development guidelines; translations come in by pull request.
Coding agents should start with AGENTS.md, the shared instructions for all agents
and editors. If your tool does not load it automatically, ask it to read AGENTS.md and its linked
rules before making changes. Keep shared instructions in these files; tool-specific entry points
should only reference them.
License
Apache-2.0