Free · open source
GPLv3, royalty-free or commercial — your choice$0forever
- Install from any GitHub release
- SHA-256 verification
- Rollback, lock and sync
Catch releases straight from GitHub — a single-binary package manager for command-line tools and apps on macOS, Linux, and Windows.
curl -fsSL https://raw.githubusercontent.com/pyrlyn/ketch/main/install.sh | bash
See it run
$ ketch install BurntSushi/ripgrep # any repo that publishes releases $ ketch install sharkdp/[email protected] # or an exact version $ ketch outdated # what has a newer release $ ketch upgrade # bring everything unpinned up to date $ ketch lock # write ./ketch.lock from what is installed
Install, upgrade, roll back
Scroll to follow one package through install, lock and rollback. Steps and commands are from the ketch README; sharkdp/[email protected] is its install example.
Overview
ketch installs command-line tools and apps from GitHub releases on macOS, Linux, and Windows.
No taps, no formulae, no build step — ketch downloads what a project already ships, verifies
it, and puts it on your PATH.
Most command-line tools are already published as a release asset built for your machine. ketch
picks the right one, checks the checksum the project published, unpacks it into a versioned
store, and links it onto your PATH.
Features
No formula, no tap, no waiting for a maintainer. Point it at owner/repo, a name from the registry, or an exact version.
Published SHA-256 sums are checked against what landed on disk. require_checksums refuses anything that publishes none, and ketch's own updates never accept trust-on-first-use.
An .app bundle goes to /Applications, quarantine cleared when the signature checks out, removed cleanly on uninstall.
Everything lives under ~/.ketch: versioned payloads, links, state. Uninstalling leaves nothing behind.
An upgrade keeps the previous version on disk; ketch rollback relinks it without re-downloading.
ketch lock writes ketch.lock from what is installed and ketch sync installs exactly those versions elsewhere.
A plugin is one executable that answers in JSON — install from GitLab, Gitea or an internal artifact server with no recompile.
ketch install --path takes a binary, archive, symlink or .app that is already on disk.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/pyrlyn/ketch/main/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/pyrlyn/ketch/main/install.ps1 | iex
Homebrew, or mise:
brew install --cask pyrlyn/tap/ketch
mise use -g github:pyrlyn/ketch && ketch path install
Then make sure ~/.ketch/bin is on your PATH; ketch doctor tells you if it is not.
Install from any repository that publishes releases, by registry name, or at an exact version:
ketch install BurntSushi/ripgrep
ketch install rg
ketch install sharkdp/[email protected]
ketch install --path ./target/release/mytool --name mytool
More examples below.
Usage examples
Keep installed tools current, and step back if an upgrade misbehaves:
ketch list
ketch outdated
ketch upgrade
ketch rollback <pkg>
Understand a package before installing it:
ketch info <pkg> --assets
ketch why <pkg>
ketch search <query>
ketch changelog <pkg>
Reproduce one machine's tools on another:
ketch lock
ketch sync
Look after ketch itself:
ketch doctor --fix
ketch self upgrade
ketch self uninstall
Links
You can use ketch under any of the following licenses, at your choice:
Pricing
Pro is a placeholder$0forever
$6 / moper seat
Placeholder — the Pro waitlist is not open yet.
Free and open source. Star it, file an issue, or send a pull request.