Skip to main content

A toolkit for GitHub releases

Project description

ghr logo

Logo by Talia Blasquez, Instagram: @my_artistic_sidetrip. 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.3-py3-none-win_arm64.whl (1.0 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ ARM64

ghr_bin-0.6.3-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.3-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.3-py3-none-macosx_11_0_arm64.whl (962.9 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

  • Download URL: ghr_bin-0.6.3-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.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 31cfd611f521085ead0a1c33cd15ce82746dbe4fdfac6e90aebeac3e7d7b6f98
MD5 5b396d6166247992513d410ed6afb8d9
BLAKE2b-256 5f5a75cae59c17613ea8068928bfe2c7cc2fc931474169b9263b787c672fb481

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ghr_bin-0.6.3-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.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 50447bb8feea7b111d1516c425b8b0a9d5f9ef04365d2d1fdc19b528d0ebee83
MD5 dfeaf0ab09331e32056f149bc2aff8f4
BLAKE2b-256 8391940011ee38d2aaeda99d4eb9482984562ea55359a5ced89acb8cd0a430a0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.3-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 07981b63d06ca38b158bc5226cf5581445e4fc9daaef51850489052522898543
MD5 60694ee60d2c924fade26a7daa2d5357
BLAKE2b-256 a1c05198f05c4caa3f53bfa55270f26865e8a08bdc2d4eabe6e957cb364110f1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.3-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 039a4082b3b8ea7c0c11e720a7fbed956162a5d0256c22e13211c7528886092f
MD5 e79a3740fde44f78a4b0d25954dded8c
BLAKE2b-256 41f4164a380c7d898bac638107851a71e12e491b3317cd5df8690c1b473a0f75

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 470b85848703d82268568be83817899a3f857e76c57f3d19f6c45ea03071ec16
MD5 e03966edb55e30ca8e051097d012c07b
BLAKE2b-256 9d380160e91642b5c2c6af9d537327ce3e841f3fd5f01cf2b31bbe15760cee14

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f3f14da03a9ae81a66428e220fc610504733f927426cc9b8aceac24afbfc6176
MD5 8ac8d6f79112b9bcf36bf3cfb1a4ced0
BLAKE2b-256 ef35d6e780f8fcde61f290f04da1ff7eca25ec5577397543f682a398390c7b8e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9a6f643ddecc4d462f27cc3170451c79cabfb1d9c5d94c16500103b7b885453
MD5 9892b6a017e822ed4ae24188abe64f36
BLAKE2b-256 4f9569db5e440c0205b91b76ababbf80796b2fe79346722e70b3379a691ea16d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.3-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 74167b0f1b4ea5c4771730289bc5cb2d1b3799d6ea10ad19ecf67fe8702fb783
MD5 d942718d6e6f6f23c12c0c9dcb3e490d
BLAKE2b-256 acb707723619b1d35117551ec42d09ebf70f7800c3fb4c059863c9c8783fe354

See more details on using hashes here.

Provenance

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