This document describes how to set up the
curl -sSL -H "Cache-Control: no-cache" -H "Pragma: no-cache" https://install.boringcache.com/install.sh | sh
installation method for the BoringCache CLI. The explicit no-cache headers ensure
Cloudflare (or any intermediary CDN) revalidates the script on each install.
The installer always verifies every downloaded artifact against SHA256SUMS.
On macOS it installs both the universal CLI and the universal Xcode CAS adapter
beside it. Archive save and restore run inside the CLI through its Rust tar
runtime; no separate tar executable or package-manager setup is required. When
cosign 3.1.3 or newer is available, the installer also verifies the signed
checksum bundle automatically. If auto mode finds an older or unrecognized
cosign, the installer stops and asks for an upgrade instead of silently
falling back to checksum-only verification. Set
BORINGCACHE_VERIFY_SIGNATURE=0 only when you intend to opt out explicitly.
For fail-closed Sigstore verification, install cosign 3.1.3 or newer first
and run:
curl -sSL https://install.boringcache.com/install.sh | BORINGCACHE_VERIFY_SIGNATURE=1 sh
install.sh - The installation script that users will curl and executeinstall-web/ - Static website files for the installation pageinstall-web/index.html - Landing page with installation instructions and manual download linksYou’ll need to configure install.boringcache.com/install.sh to serve the installation script. Here are a few options:
boringcache/installinstall.sh and install-web/ contents to the repositoryinstall.boringcache.com/install.sh in repository settingsinstall.boringcache.com/install.sh → boringcache.github.ioinstall.boringcache.com/install.shUse any static file hosting service (Netlify, Vercel, etc.) to serve:
/ serves install.sh with Content-Type: text/plain/web serves install-web/index.htmlThe installation script should be served with proper headers:
# Nginx example
location = / {
add_header Content-Type text/plain;
try_files /install.sh =404;
}
location /web/ {
try_files $uri $uri/ /install-web/index.html;
}
Add these DNS records:
install.boringcache.com/install.sh CNAME your-hosting-provider.com
Ensure HTTPS is enabled since users will be downloading and executing scripts.
curl -sSL -H "Cache-Control: no-cache" -H "Pragma: no-cache" \
https://install.boringcache.com/install.sh
Should return the installation script content.
curl -sSL -H "Cache-Control: no-cache" -H "Pragma: no-cache" \
https://install.boringcache.com/install.sh | sh
Should detect platform, download appropriate binary, and install it.
# Should redirect to latest release
curl -I https://github.com/boringcache/cli/releases/latest/download/boringcache-linux-amd64
The installation script supports:
The GitHub release workflow creates these binaries:
boringcache-linux-amd64boringcache-linux-arm64boringcache-linux-musl-amd64boringcache-linux-musl-arm64boringcache-macos-universallibboringcache_xcode_cas-macos-universal.dylibboringcache-windows-amd64.exeboringcache-windows-arm64.exeSHA256SUMSSHA256SUMS.bundleThe script installs the CLI to the first writable location. On macOS it also
installs libboringcache_xcode_cas.dylib in that same directory so
boringcache xcode works without a separate plugin setup:
/usr/local/bin (with sudo if needed)$HOME/.local/bin$HOME/binSHA256SUMSSHA256SUMS.bundle with Sigstore when cosign 3.1.3
or newer is available; an installed older or unrecognized verifier stops
auto mode, and BORINGCACHE_VERIFY_SIGNATURE=1 remains fail-closedmainREPO variable in install.sh if repository movesindex.html if repository moves