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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.1+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

  • Download URL: ghr_bin-0.6.0-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.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 2d25cd01cc31f6fb34e4d3631216ea01776ac1e94a3b5527f456534254328590
MD5 7d9782b5c8b27068dc3b0686f533d17c
BLAKE2b-256 b26960be7a26d582183221eba8fb721fd59fdb605bdaccf2d7fbbe104b3c8cb8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ghr_bin-0.6.0-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.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3639ab5b08440163fd9a2c6d806303ca98a92fc5e47efc7280f2919fc49e5b32
MD5 1ee94fb118951f598e7fd91865efcf78
BLAKE2b-256 a3a69658d25a05aae6e0bd0a7d7a52062d1f62b877da441ef224f859cdd9e001

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.0-py3-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4b252d1bd58c40e6d9c4d8bbdb2130881ba3276ff4ae981749c3038a7a2b04c4
MD5 7e1352dec033ff7898c1706c5de8856e
BLAKE2b-256 1b3da00def4b93c6b7420d2ac345fb7ea94be584e905a9716b88af8c522832dd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.0-py3-none-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e6d55a7074149a5c4262a81a513199ca75d0ed0c6b22d1606ac9bcb14df020a5
MD5 274d925b7e8ba5ceca2af69b74e0470d
BLAKE2b-256 3fe196a79946d188458d2420cc50b4453f942eaa3da9ed781b1ae16f17197f38

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3ce786dc1f3546935e13ebf16b9a655ad5858a01270b9333248862c709d71562
MD5 9233f548634c5d8212fa23c557651abb
BLAKE2b-256 c3cb55daad458c35014c2e553a76b2029e276d318c4b64ce6b994ae1b216420f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8f99cb5e604e682f14020e737200d909d547556f13a42eeff5ebda2b247191f5
MD5 4b0aefc243655a72447aa2d09163d57c
BLAKE2b-256 04e326af89df4765f08af6d925d5a9f4a91f84cab55c745f06a2a63e80d7e35c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86a1ca00ff7653cf05cca6122ab22ee86f08acae412480e3be21724698d77dc3
MD5 f027968b1d82b830eca65587d7617a67
BLAKE2b-256 15756b5c64b80745afe3644895bd2e2c74de460d90e60000691bf1189e202f49

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ghr_bin-0.6.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aa44c7ce13b47d939115ecd5d22f2e480945975fbf71c7436996e16b00619b7b
MD5 07e2ef63b7b3dc304f79b83a1b32254e
BLAKE2b-256 b824d48fa837c3085233d4a914c4438396f15a0c7222b36abe369bafa2ed86a4

See more details on using hashes here.

Provenance

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