Forkr publishes two public surfaces:
  • forkr.sh: Cloudflare Pages site and installer endpoint.
  • 4kr-* archives: CLI release artifacts on GitHub Releases and optionally Cloudflare R2.

Cloudflare site

Deploy:
CLOUDFLARE_PAGES_PROJECT=forkr-sh \
just deploy-forkr-site
For local deploys, authenticate once with wrangler login. CI deploys use the GitHub secrets listed below. The site worker (ts/apps/forker-sh/_worker.js) inspects each request to /. When the request looks like a CLI fetcher (the User-Agent matches curl, wget, fetch, or httpie, or the Accept header is non-HTML), it serves ts/apps/forker-sh/install.sh. Browsers get index.html. So both forms install the CLI:
curl -fsSL https://forkr.sh | sh
curl -fsSL https://forkr.sh/install.sh | sh
GitHub Actions workflow: .github/workflows/deploy-site.yml. Required GitHub secrets:
  • CLOUDFLARE_API_TOKEN
  • CLOUDFLARE_ACCOUNT_ID
Optional GitHub variable:
  • CLOUDFLARE_PAGES_PROJECT (defaults to forkr-sh)

CLI artifacts

Build one or more targets:
just release-cli x86_64-unknown-linux-gnu
FORKR_CLI_TARGETS="x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu" ./scripts/release/build-cli.sh
Artifacts land in dist/cli/:
4kr-x86_64-unknown-linux-gnu.tar.gz
4kr-x86_64-unknown-linux-gnu.tar.gz.sha256
Supported release targets:
  • x86_64-unknown-linux-gnu
  • aarch64-unknown-linux-gnu
  • x86_64-apple-darwin
  • aarch64-apple-darwin
Linux cross-builds use cargo-zigbuild. macOS artifacts are built on matching macOS GitHub runners. The API can serve CLI archives for 4kr upgrade from FORKR_CLI_RELEASES_DIR, defaulting to /var/lib/forks/releases/cli. Expected layout:
<FORKR_CLI_RELEASES_DIR>/
  0.2.0/
    4kr-x86_64-unknown-linux-gnu.tar.gz
    4kr-x86_64-unknown-linux-gnu.tar.gz.sha256
scripts/release/build-cli.sh also writes dist/cli/releases/<version>/. API endpoints:
  • GET /v1/cli/releases
  • GET /v1/cli/releases/latest/<target>/archive
  • GET /v1/cli/releases/<version>/<target>/archive
  • GET /v1/cli/releases/latest/<target>/checksum
  • GET /v1/cli/releases/<version>/<target>/checksum

GitHub Releases

Upload local artifacts:
FORKR_RELEASE_TAG=v0.2.0 just release-cli-github
GitHub Actions workflow: .github/workflows/release-cli.yml. Tag pushes (v*) build and publish release assets automatically.

Cloudflare R2

Upload local artifacts:
CLOUDFLARE_ACCOUNT_ID=... \
AWS_ACCESS_KEY_ID=... \
AWS_SECRET_ACCESS_KEY=... \
FORKR_R2_BUCKET=forkr-downloads \
FORKR_R2_PREFIX=releases/latest \
just release-cli-r2
Required GitHub secrets for R2 uploads:
  • CLOUDFLARE_ACCOUNT_ID
  • CLOUDFLARE_R2_ACCESS_KEY_ID
  • CLOUDFLARE_R2_SECRET_ACCESS_KEY
  • FORKR_R2_BUCKET
Workflow dispatch can enable R2 upload and choose r2_prefix.

Verification

just verify-release-assets
just verify-setup-bootstrap