A GitHub release installer service, running on Node.js with Hono. This project is a port of jpillora/installer.
The main branch of this repo is deployed to i.captainsafia.sh.
# Install <owner>/<repo> at a specific release
curl https://i.captainsafia.sh/<owner>/<repo>/<release> | sh
# Install latest release
curl https://i.captainsafia.sh/<owner>/<repo> | sh
# Install latest prerelease (preview)
curl https://i.captainsafia.sh/<owner>/<repo>/preview | sh
# Install to /usr/local/bin/ (with move flag)
curl "https://i.captainsafia.sh/<owner>/<repo>?move=1" | sh/:owner/:repo/:release?
owner- GitHub user or organization (required)repo- GitHub repository (required)release- Release tag (optional, defaults tolatest, usepreviewfor latest prerelease)
/:owner/:repo/pr/:prNumber
Download binaries from GitHub Actions workflow artifacts for a pull request. Requires authentication via gh CLI or GITHUB_TOKEN.
Note: Only artifacts from workflows with pr-publish in the filename (e.g., .github/workflows/pr-publish.yml) are resolved. The workflow must be triggered by a pull_request event.
# Install from PR #123
curl https://i.captainsafia.sh/<owner>/<repo>/pr/123 | shThe API returns different formats based on the Accept header:
| Accept Header | Response |
|---|---|
*/* (default) |
Shell script (text/x-shellscript) |
text/plain |
Plain text install instructions |
application/json |
JSON with asset details |
?move=1- Install to/usr/local/bin/instead of~/.{binary}/bin/?insecure=1- Skip certificate checks?as=- Rename the binary?select=- Filter assets by name substring?os=- Override OS detection?arch=- Override architecture detection
By default, binaries are installed to ~/.{binaryName}/bin/{binaryName}. For example, installing lazygit would save to ~/.lazygit/bin/lazygit.
To add to your PATH:
export PATH="$HOME/.lazygit/bin:$PATH"Use ?move=1 to install to /usr/local/bin/ instead (may require sudo).
# Install dependencies
npm install
# Run development server (with hot reload)
npm run dev
# Build for production
npm run build
# Run production server
npm startTests use Hurl for HTTP API testing.
# Start the server first
npm start &
# Run all tests
npm test
# Run specific test
hurl --test tests/uv.hurlThis app can be deployed to Cloudflare Workers:
# Install dependencies (includes wrangler)
npm install
# Run locally with Cloudflare Workers runtime
npm run dev:cf
# Deploy to Cloudflare Workers
npm run deploy# Set your GitHub token for higher API rate limits
wrangler secret put GITHUB_TOKENConfiguration via environment variables:
| Variable | Description | Default |
|---|---|---|
HTTP_HOST |
Host to bind to | 0.0.0.0 |
PORT |
Port to listen on | 3000 |
USER |
Default GitHub user | captainsafia |
GITHUB_TOKEN |
GitHub API token (for rate limiting and PR artifacts) | N/A |
GH_TOKEN |
Alias for GITHUB_TOKEN |
N/A |