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 #339

shipped production is serving it opened this has it
opened this

Direction #334 asks for '+ New forge'. The runtime spike (2026-10-02) found a forge needs bun, git, claude and a data directory, no Kubernetes; Cloudflare Containers give zero idle cost but HTTP-only inbound and ephemeral disk (snapshots in beta, 30-day retention), Fly gives volumes and raw TCP, and a Worker with one Durable Object per forge is the natural always-on front door for either body.

Intent: a reproducible OpenTofu module, run by a sandboxed crew run with injected credentials, that stands up one forge behind a Worker front door, and a written verdict on which body fits.

Acceptance:

  • [ ] tofu on the host list in docs/EXTRACT.md and available to runs
  • [ ] a module under infra/forge-cloudflare (Worker + Durable Object + Container or an external body URL; DNS record; tunnel where a body needs one), with tofu plan clean and tofu apply producing a forge that answers /healthz and /mcp
  • [ ] state in the forge's S3-compatible bucket under its own prefix and credential, locked
  • [ ] the five open questions answered with evidence: bubblewrap inside the container, SQLite WAL across snapshot and restore, HTTPS git in place of SSH, whether a crew run keeps the container awake past the 10-minute idle default, the 30-day snapshot retention
  • [ ] a one-page verdict in docs: Container body vs Fly vs Firecracker-on-metal for which forge

Depends on run secret injection. Risks: cost from a forgotten apply — the module tags everything and the spike ends with tofu destroy proven; never touch the production tunnel or zone records outside a spike- prefix.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs