Skip to main content

A toolkit for GitHub releases

Project description

ghr logo

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, 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.7-py3-none-win_arm64.whl (1.0 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

ghr_bin-0.6.7-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.7-py3-none-musllinux_1_1_aarch64.whl (1.0 MB view details)

Uploaded Python 3musllinux: musl 1.1+ ARM64

ghr_bin-0.6.7-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.7-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.7-py3-none-macosx_11_0_arm64.whl (973.1 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

ghr_bin-0.6.7-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.7-py3-none-win_arm64.whl.

File metadata

  • Download URL: ghr_bin-0.6.7-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.7-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 5dab59a8abb6ce78c1fd62ff71c37c6d1a1e0d31d394cd5f61936ee4ccb85e9b
MD5 354810ab62454284af1113b5180025ca
BLAKE2b-256 7179342c2cb3dd959ba4bdf6754ce76b9f81a46cb5b85b596dfd07c28403ed2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-win_amd64.whl.

File metadata

  • Download URL: ghr_bin-0.6.7-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.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0fb19a95cb77e14d167071476bcd8b0e3440ede76349bfd201bc77317fb5995d
MD5 a53a2cc4f0843e50d9945486286fb2fc
BLAKE2b-256 8efb187da41f70630d6778641c4472239f828372b5bec86dd90dbb35b5bf7163

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.7-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 948c8ae3197b7bb0cc3aead3eecb90898d16c8fa96f35b04a28a6e4cd12da49c
MD5 b5b88d0dc71907a275f6c23f49b412cc
BLAKE2b-256 372fc85bc5c8bf6e13baf4867cdb50b37467e99ab765e77a35a5c6f51b298ed7

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.7-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 2ac3f1bfafd9f739cdc7c22657f1f4d3566d2942b3eeb7f847fe5206e9192c09
MD5 a117347b68e45e1eab1dcfe94d05f9ac
BLAKE2b-256 c6974eded1bf601c47c4b1d2b7574f63cfb12413763c98d6ccd6a4dde387d78f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b11f871f4c4e77c127a43bf8d58e2d48bcf7409b745aec036b10e5539dac555e
MD5 6abc44a1fdf13e1cc7cd2a2d6bcf4c19
BLAKE2b-256 40e5b036d13f0d19ea2fad5fd101ea990d3427f2e1f929e035d0ca135d691197

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 38f8262602151d58a5f57aefa2c71b0ca0d09a42f492e9fcb087b8a3e3a64d35
MD5 d9996565512d0f49828fef40520ede3a
BLAKE2b-256 587eda81002e93814e441438dade8203025ba30b59804a796b4588be9c987307

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 941058919f74f8a69f5c95f8badd9063a0d6cdffde76279a8300446e94cde3fe
MD5 b0b2106bddffb7b9e6457d60748f2b36
BLAKE2b-256 af6f573c8bb1eda7643f4991aba343409cc2938f36dad53a281f6be25f638d39

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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.7-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ghr_bin-0.6.7-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 192384eeed7bbe0573447573ad1080cb0c67405c4e211bba2034ba8f805172cb
MD5 7df74c313c1355d7ca92f7c35be6d50b
BLAKE2b-256 3413dd8ffd50425bf430b445ae293a34677ee2eb95df5361029623a640dcbb41

See more details on using hashes here.

Provenance

The following attestation bundles were made for ghr_bin-0.6.7-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