Logo by Talia Blasquez. Licensed under CC BY 4.0.
ghr
A toolkit for GitHub releases.
Install tools from GitHub releases with one cross-platform command. A single
static binary that picks the right asset for your OS and architecture.
Supports verifying with minisign,
sigstore,
GitHub artifact attestations,
and checksums. Install it on a GitHub-hosted runner with
pipx install ghr-bin.
Usage
ghr list List installed tools
ghr install <spec> [<pubkey>] [<spec> ...] Install one or more tools from GitHub releases
ghr uninstall <name> Remove an installed tool
ghr download <spec> [<pubkey>] [<spec> ...] Download one or more release assets
ghr path add [--dry-run] Add ghr's bin dir to your user PATH
ghr path [bin|tools|cache] Show ghr directories
ghr minisign sign <file> [<file> ...] Sign release artifacts with a minisign key
ghr version Print version and exit
ghr help Print this help and exit
Each <spec> is owner/repo[@tag] (auto-pick asset) or
owner/repo/file[@tag] (specific asset). A 56-char RW/RU-prefixed
base64 token immediately after a spec is treated as that spec's
minisign public key. Run ghr <COMMAND> help to show help for a
specific command, e.g. ghr download help.
Examples
# Install the latest release of a tool
ghr install burntsushi/ripgrep
# Install a specific version
# https://github.com/bytecodealliance/wasmtime/releases/tag/v44.0.1
ghr install bytecodealliance/wasmtime@v44.0.1
# Install several tools in one invocation (shared HTTP client + auth)
ghr install burntsushi/ripgrep@15.1.0 sharkdp/fd@v10.2.0
# Install minisign itself, verifying with its minisign public key
ghr install jedisct1/minisign@0.12 RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3
Install
pipx install ghr-bin
uv tool install ghr-bin
winget install ghr
brew install cataggar/ghr/ghr
curl -fsSL https://raw.githubusercontent.com/cataggar/ghr/main/install.sh | sh
iwr -useb https://raw.githubusercontent.com/cataggar/ghr/main/install.ps1 | iex
ghr install cataggar/ghr RWSbsumpaHb+N3KCEt/EUXQ5y6Kkk8r/zCb5Z4jhEuEX8x2/U5wr5QC0
See doc/README.md for download, install, directories, uninstall, and verification details (including verifying ghr's own releases).
GitHub Actions
For workflows, install several tools in one cached step:
- uses: cataggar/ghr/actions/install@v0.5.1 # pin to the matching ghr release
with:
tools: |
burntsushi/ripgrep@14.1.1
sharkdp/fd@v10.2.0
The action shares git tags with the ghr CLI — pinning @v0.5.1 pins
both the action body and the ghr-bin binary. Pick the latest tag from
the releases page.
See actions/install,
actions/download, and the
Caching in GitHub Actions
section for details.
Signing releases
ghr minisign sign produces a minisign .minisig sidecar without an
external minisign binary, a key file on disk, or an expect script. The
secret key and password come from the environment, so a release job is a
single step:
- run: ghr minisign sign hello.wasm -t "tag:${{ github.ref_name }} commit:${GITHUB_SHA}"
env:
MINISIGN_SECRET_KEY: ${{ secrets.MINISIGN_SECRET_KEY }}
MINISIGN_PASSWORD: ${{ secrets.MINISIGN_PASSWORD }}
Input files are bare positional arguments (each <file> is signed to
<file>.minisig). A trusted comment may be given with -t (applied to
every input); when omitted it defaults, like minisign, to
timestamp:<unix>\tfile:<name>\thashed per file. The secret key must
come from MINISIGN_SECRET_KEY and an encrypted key's password from
MINISIGN_PASSWORD — there is no key-file flag, and the password is never
read from a tty or stdin. Signatures use the prehashed (ED) format and
are byte-for-byte identical to minisign -S output. Run
ghr minisign sign help for all options.
License
MIT
Release files for ghr-bin 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| ghr_bin-0.7.1-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| ghr_bin-0.7.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| ghr_bin-0.7.1-py3-none-musllinux_1_1_x86_64.whl | Python 3 | none | Linux musl 1.1+ x86-64 | Details |
| ghr_bin-0.7.1-py3-none-musllinux_1_1_aarch64.whl | Python 3 | none | Linux musl 1.1+ ARM64 | Details |
| ghr_bin-0.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| ghr_bin-0.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| ghr_bin-0.7.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| ghr_bin-0.7.1-py3-none-macosx_10_9_x86_64.whl | Python 3 | none | macOS 10.9+ x86-64 | Details |
Total release size: 8.8 MB
Release files / ghr_bin-0.7.1-py3-none-win_arm64.whl
| Download URL | ghr_bin-0.7.1-py3-none-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
46104a3b3b62e00c6450c48ee3926918992338d65d7f0687f14b1dc472649fd2
|
|
BLAKE2b-256 checksum How to use checksums |
de32e7775138436d13e42336ebbebde53a8bbc762a98b5d7e6386ba62dd4b525
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-win_amd64.whl
| Download URL | ghr_bin-0.7.1-py3-none-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
243c6f709b28a0cfb887f11771564b92a4a61ea3761dce8236ab328030de354f
|
|
BLAKE2b-256 checksum How to use checksums |
4e6a44472913157fddd456f8df950c7b2362f9bc5cfbd2593aa4e7fe6624b1da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-musllinux_1_1_x86_64.whl
| Download URL | ghr_bin-0.7.1-py3-none-musllinux_1_1_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux musl 1.1+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
24f08b57c92db210bab21849e182617cc7e4a7821d35064010cbfa98819e3eeb
|
|
BLAKE2b-256 checksum How to use checksums |
d71995133d4fec12c14fc9a2eda8eae78264996ca44e97dfc568b5bf66615829
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-musllinux_1_1_aarch64.whl
| Download URL | ghr_bin-0.7.1-py3-none-musllinux_1_1_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux musl 1.1+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
3aac8c4ffb1dde2c4adcbe1e29ae9a8dac8dc79fbacbe9323b60ee84dd005932
|
|
BLAKE2b-256 checksum How to use checksums |
54297313a278d8bbde451d449ff61978c2d21fc627291425addde65729b87caa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | ghr_bin-0.7.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c9d7d5a6b8129662ea0e752aaffdcc8e73ec291f55a14088b0e7ccc02066d391
|
|
BLAKE2b-256 checksum How to use checksums |
964ac4969600eb54f0ac9c26e2b3062dea411fe7524f2a9eb7c1513b2c685e33
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | ghr_bin-0.7.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
958aa29a3af25058e7b7b6dd7164ee3dafec8e0219d657e04f714763fb77acef
|
|
BLAKE2b-256 checksum How to use checksums |
5d511d0a0d0b17b00830279d7750b924e5a4337912e886e1e8e5969990b1c494
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-macosx_11_0_arm64.whl
| Download URL | ghr_bin-0.7.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c3c1727821fc7047c3eddc9766f3b014315cc2245313f8c6293f4b6e8f732001
|
|
BLAKE2b-256 checksum How to use checksums |
7e1b20214239d52e93cca14c57618aa9a5777138e3847c022784d7236641fe30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / ghr_bin-0.7.1-py3-none-macosx_10_9_x86_64.whl
| Download URL | ghr_bin-0.7.1-py3-none-macosx_10_9_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
66edccb7c408fb674fd0a3a26bcb0fdfea4886906dad0b91e31994b0aad32a7f
|
|
BLAKE2b-256 checksum How to use checksums |
d6d3a14da75d42c0e36584bbc4bdc01a48580575abebaf179e7b84c25aa2be19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log