GitHub Release Downloader
A command-line tool to download and install binaries from GitHub releases.
Installation
From crates.io
If published on crates.io:
From source
Ensure you have Rust installed, then:
Prebuilt binaries
Download from releases.
Docker
Use grd inside another Docker container.
COPY --from=ghcr.io/lucidfrontier45/grd:latest /bin/grd /bin/grd
Usage
Download the latest release of a repository:
Authentication
To avoid GitHub API rate limits (60 requests/hour unauthenticated vs 5000/hour authenticated), you can configure a GitHub Personal Access Token (PAT):
Using environment variables:
# or
Using a .env file:
Create a .env file in your working directory:
GITHUB_PAT=your_token_here
The GITHUB_PAT variable takes precedence over GITHUB_TOKEN.
Basic Commands
Download the latest release of a repository:
Download a specific version:
List available versions:
Specify destination directory:
Set a custom memory limit (e.g., 50MB):
Download for a specific platform (explicit OS/arch):
Download without decompressing/extracting:
Memory Usage
- Downloads smaller than the memory limit are loaded entirely into RAM for processing.
- Larger downloads use temporary files to avoid excessive memory consumption.
- The default limit is 100MB, but can be adjusted with
--memory-limit.
Options
repo: GitHub repository (owner/repo)--tag: Specific version tag (defaults to latest)--list: List available releases--destination: Destination directory (default: current directory)--bin-name: Override executable name--select: Force manual selection from all available assets--exclude: Comma-separated words to exclude from asset matching--no-decompress: Save downloaded file without decompressing/extracting it--memory-limit: Memory limit in bytes; downloads larger than this use temp files (default: 104857600, i.e., 100MB)--os: Target OS (windows, macos, linux). Defaults to auto-detection.--arch: Target architecture (x86_64, aarch64, amd64, x64, arm64). Defaults to auto-detection. Aliases: amd64 and x64 → x86_64; arm64 → aarch64.
Building
Git hooks
Set up a local git hook to run checks automatically using pre-commit.
- Install
pre-commit(recommended:pip; or useuvif you manage tools that way):
# with pip (user install)
# with uv (if you use `uv` to manage tools)
- Install the git hook into this repository (generates the hook script under
.git/hooks):
- (Optional) Run all configured hooks once across the repo:
This ensures linters and formatters configured in .pre-commit-config.yaml run automatically on commit.