Skip to content
linroidPublic

About

A fast, open-source download manager for every device you own.

Topics

Resources

Stars

320 stars

Watchers

2 watching

Forks

Latest commit

 

History

438 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ketch

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.

Latest release Maven Central Web app Android iOS Desktop License

Download · Watch demo · Features · Getting started · For developers

Ketch on the desktop, Android, iOS and the command line: the downloads table with each download split into live connection lanes, the devices on Android, a download's connections on iOS, and ketch in a terminal

▶ Watch Ketch in action

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
Windows (x64, ARM64) .msi, or the portable .zip that runs without installing, from the latest release (about the portable app)
Linux (x64, ARM64) .deb from the latest release
Android 8.0+ .apk from the latest 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 (how to install)
Command line and server macOS, Linux and Windows: install script or the latest release
Docker NAS and home servers on x64 and ARM64: ghcr.io/linroid/ketch (guide, with TrueNAS and fnOS)

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).

Features

Faster downloads

  • Parallel connections — Ketch splits a file into ranges and downloads them at once. The Connections tab shows every connection as a lane with its own speed, and you can add or remove connections while the download runs.
  • Several networks at once — Spread one download over Wi-Fi, Ethernet and, on Android, cellular data (how it works).
  • Proxies — Download through the system's proxy, an HTTP or SOCKS5 proxy with a username and password, or none, skipping the hosts you list; for one download too (details).
  • Pause and resume, even after a restart — Ketch checks that the file on the server has not changed before it continues, and retries failed connections on its own. Until a download finishes it is saved as name.ketch, so an unfinished file never looks complete.

Every kind of link

  • HTTP and HTTPS, with the cookies and referrer of the page when the browser extension sends the download.
  • FTP and FTPS, with parallel connections and resume.
  • BitTorrent and magnet links — v1, v2 and hybrid torrents, with a choice of files and optional seeding, in an engine written in pure Kotlin (details).
  • Torrent files, chosen any time — Choose a torrent's files before or while it downloads and change them without starting over; a magnet link added before its details arrive waits for your choice. Stop or restart seeding a finished torrent; the ones you keep sharing seed again after Ketch restarts.
  • HLS (.m3u8) and DASH (.mpd) — Save finite, unencrypted streams as one media file. HLS master playlists use the highest-bandwidth variant (support and limits).
  • Ketch can open magnet links and .torrent files for your system, so a click in the browser or the file manager lands in Ketch.

All your devices in one app

  • Pair by QR code — On the device to share, open Settings → Sharing and choose Allow another device; scan the code with your phone, or copy the pairing link. Or pick the device under Find on network and allow it there, once both show the same four digits.
  • Every device in the sidebar with its live speed and health. Switch between them with a keystroke, or open All devices to list every download in one table.
  • Send downloads where they belong — Add a link to any device, drop it on a device in the sidebar, or send or move a download to another device, without switching.
  • Headless on a NAS or server — ketch server, also as a Docker image, runs the same engine with a REST API and the web app built in, and the apps find it on your network.
  • From a terminal — ketch add, list, pause, resume and watch control the downloads of the Ketch app or a server from a terminal or a script; watch prints JSON lines (CLI).
  • Automation hooks — Run a command or call a signed webhook when a download is added, finishes or fails, from ketch server or the desktop app (hooks).

In control of your bandwidth

  • Speed modes — Full speed, Slow lane to leave room for a video call, or Auto, which switches between them on a weekly schedule.
  • Per-download control — Speed limits, connection counts and priorities you can change while a download runs. Urgent pauses a less important download to start right away.
  • A queue that behaves — Limit how many downloads run at once and per site, and start a download later, at a time you pick.

Built for how you work

  • Browser extension for Chrome, Edge, Brave, Firefox and other browsers: it takes over downloads and magnet links and adds Download with Ketch to the context menu, for this computer or another device (details).
  • Paste to download — Paste a link to add it, with Undo, or let Ketch suggest the links you copy.
  • Keyboard first on the desktop: ⌘K (Ctrl+K on Windows and Linux) opens the command palette, and the shortcut sheet lists every key.
  • Category folders — Videos, music, documents and archives go to folders of their own inside the download folder, by file type or website: start from the suggested ones under Settings → Downloads, or set your own rules.
  • Finished means openable — Open a file, show it in its folder or drag it out, straight from the list.
  • At home on each platform — The menu bar or tray, notifications, Dock and taskbar progress on the desktop; downloads that keep running in the background on Android and on iOS 26.
  • Awake while it downloads — The desktop and Android apps keep the system from going to sleep on its own while downloads run; the screen can still turn off (Settings → General).
  • Your look, your language — Light and dark themes with seven accent colors, in English, 简体中文, 繁體中文, 日本語, 한국어, Español, Português (Brasil), Deutsch and Français (translating).
  • Verified downloads — Give a download a SHA-256, SHA-512, SHA-1 or MD5 checksum, and Ketch checks the finished file against it, or against the checksum the server publishes.

Find downloads with AI (preview)

  • Discover — Describe what you want, such as "the latest Ubuntu Server ISO", and an AI agent searches the web, checks the links and ranks the downloads it finds; a failed download can Find another source the same way. Narrow a search down with follow-up messages, discard what you don't want and pick up past searches from the history. Discover asks before it opens a website, unless you let it. Bring your own model: OpenAI, Anthropic, Gemini, Ollama or any OpenAI-compatible service. In the desktop and Android apps, and with ketch ai-discover (setup).
  • MCP server — ketch mcp lets AI assistants start, watch and manage the downloads of the Ketch app or a server through the Model Context Protocol.

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):

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://<server address>: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.

On a NAS, or anywhere Docker runs, start the image instead. The Docker guide covers its settings and has steps for TrueNAS and fnOS:

docker run -d --name ketch --restart unless-stopped -e PUID=1000 -e PGID=1000 \
  -v /srv/ketch:/config -v /srv/downloads:/downloads \
  -p 8642:8642 -p 16881:16881 -p 16881:16881/udp ghcr.io/linroid/ketch

Roadmap

  • Distribution before v1.0.0 — Signed Windows releases, signed and notarized macOS releases, browser-store extensions and verified installation/update paths (plan)
  • 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 AES-128 HLS encryption; finite, unencrypted single-stream downloads are already supported
  • Media extraction — Save the media of web pages
  • Resource sniffer — Find the downloadable files on a web page
  • Faster segmented downloads — Connections that finish early take over the rest of the slower ones, so a download no longer waits on its slowest connection
  • When downloads finish — Optionally quit Ketch, put the computer to sleep or shut it down once the queue is empty
  • Transfers between devices — Send to and Move to carry what is already downloaded, so the other device continues instead of starting over (plan)
  • Helper devices — Let your other devices download parts of the same file over their own connection, added or removed while it runs (proposal)

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 privacy
  • 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
  • Automation hooks — Commands and webhooks run on download events
  • 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

About

A fast, open-source download manager for every device you own.

Topics

Resources

Stars

320 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Contributors

Languages