Skip to content

Docs on Cloudflare Workers

Status: accepted · 2026-09-04 · amended 2026-09-05, 2026-10-21

Context

The manual is an MkDocs Material site built from docs/. GitHub Pages was the first deploy target; Ko prefers Cloudflare or Vercel. Cloudflare Pages was the plan, but the Cloudflare dashboard now creates new projects as Workers with static assets, which serves a built site the same way.

Decision

A Cloudflare Worker (holophyte-docs) built by Workers Builds from the repository: build pip install mkdocs-material && mkdocs build, deploy npx wrangler deploy with wrangler.jsonc naming site/ as the assets directory. Custom domain on the zone already in use. The GitHub workflow builds with --strict as a check and deploys nothing, so no secrets live in GitHub. Ruff configuration lives in ruff.toml, not pyproject.toml, because the build image treats a pyproject.toml as a Python package to install.

The manual's canonical address is https://docs.holophyte.ai/ (site_url); the earlier address stays attached to the same Worker as an alias. The landing page is a second Worker (holophyte-landing) from landing/: static assets in landing/public/, no build step, and landing/wrangler.jsonc claiming https://holophyte.ai as its custom domain. Its Workers Build uses landing as the root directory. Its media stays out of the repository, in the R2 bucket holophyte-media served at https://media.holophyte.ai/demo/.

Tickets

Done by hand 2026-09-04 (f794fd7) and 2026-09-05 (cdba854, f4eec67); the Workers, their builds and the docs domains are operator steps. Live at https://holophyte.ai/ and https://docs.holophyte.ai/, rebuilt on every push to main.