Skip to content

Publishing

The intended public URL is https://agentic-systems-lab.alpharelay.dev/. That hostname serves this site only after the Cloudflare project exists, the secrets below are set, and a deployment from main succeeds. Until those steps are done, the URL is not live.

The site is a Direct Upload to Cloudflare Pages. The workflow builds the static files and uploads the site/ directory. Cloudflare does not clone this repository, so the build does not need the private component checkouts.

One-time Cloudflare setup

  1. In Cloudflare, create a Pages project named agentic-systems-lab. Choose Direct Upload. Do not connect a Git repository. A connected repository would build on Cloudflare and would try to fetch private submodules.
  2. Set the project's production branch to main. A deployment whose branch is main is the production deployment.
  3. Create an API token named for this site. Under permissions, grant Account / Cloudflare Pages / Edit only, on this account. Do not add account-wide administration rights.
  4. In the GitHub repository settings, under Secrets and variables → Actions, add:
    • CLOUDFLARE_API_TOKEN — the token from the previous step
    • CLOUDFLARE_ACCOUNT_ID — the account id shown on the Cloudflare zone overview
  5. In the Pages project, open Custom domains and add agentic-systems-lab.alpharelay.dev. When the zone is on the same Cloudflare account, Pages creates a CNAME for the name agentic-systems-lab only.
  6. Leave the apex name alpharelay.dev as it is. Do not change tunnel hostnames or any other DNS record. After the first production deployment, confirm the certificate and open the public URL.

What GitHub Actions does

Pull requests build the site in strict mode and run the public-content checks. A push to main repeats that build and, only after it passes, uploads site/ to the agentic-systems-lab project on branch main.

The upload uses CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID. The workflow stops with a setup message when either secret is missing, and it does not print secret values.

Wrangler can attach git metadata with --commit-dirty. That flag is optional metadata. This workflow does not pass it. The job copies site/ to a temporary directory outside the checkout and uploads that copy, so a deployment does not depend on the flag.

Production uploads share one concurrency group and do not cancel an upload that is already running.