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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ ARM64

ghr_bin-0.6.8-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.8-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.8-py3-none-macosx_11_0_arm64.whl (973.2 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

  • Download URL: ghr_bin-0.6.8-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.8-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 181d551eb04134dd450cdb0b7db009210cc03aadb2ccefc71883b64210c469ca
MD5 f685c0a7207399dea2740f312c0322b7
BLAKE2b-256 9c3c46bb552f47cf0d025a1bc30ae5b42890f0cb492dec493f2983d65979bf51

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ghr_bin-0.6.8-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.8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 322ce276f4453b9a5bfec79e04b23d79ba337fc007a6f9ea75b83feeb39c87bc
MD5 ef8c92c069a38bdeaba54a54375f3677
BLAKE2b-256 e0b131af5f2c90b4f2802c058ea92261690489599248b6c29952c321602b912d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.8-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 83035dc16fb967d0a23b575923ad27c715b54969741f5664dbf173b8eac6a5d7
MD5 6a9d1f46d34b348d057fdc5f19894066
BLAKE2b-256 8ef2789270931d99a4a86dcee8e2f519c6fce57c406e12fe7ef23ea2a9c50b0c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.8-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 dfcd56fb3c4183ea11d0d82f99edc18553a9ec28184458c61f8e506d8e8b8c05
MD5 e3d12342869d43d69589b31bb8f33831
BLAKE2b-256 bc61ab60f6d29e74bb67970aff4563422240e13b1fa5ff32abc2f260ecb60822

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd4b03213bd7844550886db4359146bbe630e87d137228baa836780a4f77910d
MD5 77b7017d644368b9d158cf2767166569
BLAKE2b-256 d60089a188f7453beb8fb1f590b1725bb5c6420f5b95ed27668991a32009c288

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 108d7912858575af23e77872e05ec4842f1ac82aa453c45f04fdd865916132b0
MD5 3783cccf80b23f2793a6ae7a16418553
BLAKE2b-256 ee01c400d2ec73a639bb2b485b5b930c7d0701b9874a8899e8a3fabdb4d3b82a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.8-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c28bbd3153d59edd4de5c262759cf2e87f5f86788ac83b0b60ddf3ff8d9e4a66
MD5 f5db138c196ef173c0de1a992ab99a7d
BLAKE2b-256 0ec8e212987bea2a7d1fa2075ec202892b60f6cf3f54d0da65086182891e406a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.8-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ba3dbccbdd80719913be1c8823896aab03cb8a9009cfd3d35042101cae07d0f9
MD5 8cf4987eb8ce90f82aaf5e3349a6b32e
BLAKE2b-256 6da5b003c91f8e4bd73a60de684667263258e3387d1369f9a655cfe0c83f367f

See more details on using hashes here.

Provenance

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