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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ ARM64

ghr_bin-0.6.2-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.2-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.2-py3-none-macosx_11_0_arm64.whl (962.7 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

  • Download URL: ghr_bin-0.6.2-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.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 163b1f06800c6fcd9d75c417d661e81140a0d7f47c58b04f1aab068f3999015b
MD5 439b9a6f32ec96439efe4efe8709cfc5
BLAKE2b-256 3edc1e248deff9340463492e877702b1529f436f287c557777ec1e4f394eb54e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ghr_bin-0.6.2-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.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 13e58b4ed582139640558f4bc5f59d08db7bcd13d3c646d556f2d20efed1f559
MD5 96633374ed2043d02eb703241db4a39d
BLAKE2b-256 36a3e029c7090c514bc92b487400104dcae1749a66e47eaac2d7f520d7962d3b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.2-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7a506722896a169038280078d16728a8180d3c9ede556b6ac4b698d2dba06a3b
MD5 e7920caac937706a3382577d51ab19b7
BLAKE2b-256 e17c6790e3d3cd107584ddecd73cf1298f6efec67f226ae206ba56dbcdb83b8b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.2-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 76a21c866808a63892c4dbbe0011580a3eebd177df1dd22ffadf46b6509fe5c6
MD5 93d6d02a73df0cb8332e1e016466a067
BLAKE2b-256 2d825563c58fa6adf382c95b55470675a3fac7f3a46bcd6c272796fc68d46bde

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bd498ea18518d36b6f2827ff41fbdbd816a5a6f2a3ba29ffc694daf092388f54
MD5 0ab4a4107b68c5077bbd8cd0b8e3e4fe
BLAKE2b-256 3227363375c3e57659bd693b5def34232d94de0350423e220e4bcc6baeedaa35

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3a994c9468f0f712a064b25db5f6d240aa25233ba34a8fd6f94c277874368b43
MD5 b0c7a482487d3f8bad41ac8d93bc2a6c
BLAKE2b-256 a0359fb90173cc57028095f1054d4310ab1cc1c1685637c6867d1e744412654b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abf5df0eac88bae80bc20985df1d5ce661e8eea3e55d29010dc5d419de0a835c
MD5 cfabaf966fdd79c2f9a36ff7ecfa1851
BLAKE2b-256 b80f0d3d24263996e16383097df9c6f33d26608ba63ee06a4aae54c90317ac62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.2-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4e16ef5e56a5f7ff6d9dd544d130874c0100750890a8f094be7a9c178240414f
MD5 0cbb07798fc6fe72b9502a7814a8ca3a
BLAKE2b-256 daf1a74fa2005d73c05b47ab97fd132a64439225a983261fe335cc66d4bbb5ef

See more details on using hashes here.

Provenance

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