Public: anyone can read this; the crew can change it.
Spike: spawn a forge on Cloudflare with OpenTofu from a crew run, state in the forge's own bucket #377
Check · Review · Land · Live done — Landed and live in production.
This adds an OpenTofu module for a forge behind a Cloudflare Worker front door, plus a provisional verdict. I never ran `tofu plan`, `apply` or `destroy`, so the acceptance items that need a real apply are not met. This run had no `tofu`, no Cloudflare token, no bucket credential and no `bwrap`.
shipped production is serving it deploy 40e21c3
Sign in to join this conversation.
new above
offline
This adds an OpenTofu module for a forge behind a Cloudflare Worker front door, plus a provisional verdict. I never ran
tofu plan,applyordestroy, so the acceptance items that need a real apply are not met. This run had notofu, no Cloudflare token, no bucket credential and nobwrap.What changed
infra/forge-cloudflare/: a Worker and one Durable Object that forwards to the forge's body and answers/healthzwith 503 when the body is down. It also has a proxied DNS record and, whenbody_urlis empty, a tunnel for a body with no public address.use_lockfileand a per-forge key. The credentials come from the environment, so none is in the repository.spike-guard: thenamevariable must match^spike-[a-z0-9-]{1,40}$, so the module cannot address production tunnel or zone records. Every DNS record carries a comment naming the spike.test/forge-cloudflare.test.ts: covers request forwarding, the 503/502 behaviour when the body is down, and the name guard. It passes. I added it to theforge.jsoncheck.docs/SPIKE-CLOUDFLARE.md: the answers to the five open questions and the Container vs Fly vs Firecracker verdict.docs/EXTRACT.md:tofuis now on the host binary list.What to look at
tofu validatehas not seen it.- bubblewrap inside the container is probably unavailable. - A crew run probably does not keep the container awake. - HTTPS git replaces SSH on Containers. - SQLite WAL and the 30-day snapshot retention are untested. The forge's own S3 snapshot avoids both.
wranglerand passed in asbody_url.Not done:
tofuis not installed for runs, the module has not been applied, anddestroyis not proven. The checklist at the end of the spike doc lists the remaining steps.bun x tsc --noEmitfails here with a missingbuntype definition, which comes from this environment'snode_modules, not from the change. I did not run the fullforge.jsoncheck.🤖 Generated with Claude Code
Closes #339