Skip to main content

A toolkit for GitHub releases

Project description

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, 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ghr_bin-0.6.1-py3-none-win_arm64.whl (1.0 MB view details)

Uploaded Python 3Windows ARM64

ghr_bin-0.6.1-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

ghr_bin-0.6.1-py3-none-musllinux_1_1_x86_64.whl (1.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ x86-64

ghr_bin-0.6.1-py3-none-musllinux_1_1_aarch64.whl (1.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARM64

ghr_bin-0.6.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ghr_bin-0.6.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ghr_bin-0.6.1-py3-none-macosx_11_0_arm64.whl (962.7 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

ghr_bin-0.6.1-py3-none-macosx_10_9_x86_64.whl (1.0 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file ghr_bin-0.6.1-py3-none-win_arm64.whl.

File metadata

  • Download URL: ghr_bin-0.6.1-py3-none-win_arm64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ghr_bin-0.6.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 0fa1b55fef92cc5b7c2de5222a8e243f1195d803065517b5e9859bf4ef780a65
MD5 bca147aa83aa496d2f35d237392caecb
BLAKE2b-256 8392079e8bc763b618e368bfa8a41a2d8e3134a8d036f44b80e5bc1b2f8a63f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-win_arm64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: ghr_bin-0.6.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ghr_bin-0.6.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a0957d52c12dcc8babc65f6da54531cb5cb0b5a25618a51fa157c808a56b1a03
MD5 5cf9f6deb745c262d8fa71f7402bf2dc
BLAKE2b-256 5c3f6972f156bdd4873cad01d91f304b26196721c36f3e083f95ef4c5a415433

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-win_amd64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.1-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d6f1b34bc73ed32241e088448df3447926485fe8713fb13b09d9235ed72501a7
MD5 e8858558aa1502ec46d35165d110c36b
BLAKE2b-256 c2ef82ed75cd3aaeb460fcf164350f580afedcfa78284ca490c13714741478d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-musllinux_1_1_x86_64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.1-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 455665a09c1d5a3420aa8f341941f90219fa2db8b534867a6bfc1c4599e0ab02
MD5 953b7ad6e5f50312960aef61d2ab750e
BLAKE2b-256 e0caff3fbe55084e89679592cb5155cd9ef39dac260420c15b42e0f7b44561cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-musllinux_1_1_aarch64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6bfc20cef326612081490e8ce75470d7238667d9c833ac51dcfb220c33e47332
MD5 33743c3dd6c189abfd135fde15406f75
BLAKE2b-256 228ab59f741a6530896cbbeb1be89e476c4dbf61af94a6b60638eb3623d5b77e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 043e5ea7e54fc7efe652382913421e0a31ea0966897be4d84bdc94fa04f2c60c
MD5 73b75d712d063fbe80bbd72508ee1130
BLAKE2b-256 1d375ded51ede60421fa8b7cded1d0bb11600c71fa3300233a276cddc53da5bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1417076cf4a6db9837e74d55a74bd7eb5ebbcd7c2461184fe8fa0b24ccd7281c
MD5 d62a08c6831a2e587bdaa93b4447b19c
BLAKE2b-256 36cc694bd58fb2aae9dafcfc9f561325bd7d96515fbeea0678ad3daf60d5ca97

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-macosx_11_0_arm64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ghr_bin-0.6.1-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.1-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7d7a62d134fbaae985c72cd6320977b1ba59b7b1a9d9193a3d9447e334a12c80
MD5 9b6704438b491ad3a0d33267983afebc
BLAKE2b-256 c328b7f8b5d585d0fd63b7dd8ad758453bb66252da5605a27f65d1448fc5ada9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.1-py3-none-macosx_10_9_x86_64.whl:

Publisher: pypi.yml on cataggar/ghr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page