Deploy
Put your site on Cloudflare Workers or Vercel, attach your domain, and prove it is live with the health check.
The same code runs on Cloudflare Workers and on Vercel. You pick one. The agent runs the matching skill (skills/deploy-cloudflare or skills/deploy-vercel), and you do the few steps that need your account: a token, a click to connect GitHub, a domain.
A deploy is done when this answers 200 on your real domain:
curl -sS https://<your-domain>/api/health
{"status":"ok","at":"…","uptimeSec":…,"checks":{"database":{"status":"ok","latencyMs":…},"redis":{"status":"skipped","latencyMs":0}}}
/api/health (app/api/health/route.ts) pings the database and Redis. skipped means the service is not configured, which is fine for Redis and a failure for the database. Any down turns the answer into 503. The endpoint takes no secret and returns no error details, so you can point an uptime monitor at it.
Before you deploy
- The setup skills you need have passed locally, at least the database (Database).
- Your code is in a private GitHub repository. For Cloudflare its name must not end in
-starter. - You have a production database (a second Neon database, or a separate branch) for the live site.
Which platform
| Cloudflare Workers | Vercel | |
|---|---|---|
| Default in this repo | yes | needs one file deleted (vercel.json) |
| Plan you need | Workers Paid | Pro for a site that takes money (Hobby is for non-commercial use; check Vercel's pricing page) |
| When a push goes live | once a day at 09:07 UTC, or when you run the workflow | on every push to main |
| Where production settings live | an encrypted file in git (cloudflare/env.production.enc) |
the Vercel project's Environment Variables |
Image optimization (/_next/image) |
not available | available |
| Version skew protection | none | available |
The full comparison is on Cloudflare Workers.
Pick Cloudflare if you want one predictable deploy a day and are fine with production settings living in an encrypted file. Pick Vercel if you want a push to go live within minutes and prefer a dashboard over an encrypted file. Do not run the site on both at once: the scheduled jobs would run twice.
Pages
- Cloudflare Workers: the default. Two Workers, built and deployed by GitHub Actions.
- Vercel: import the repo, add the variables, push.
- Domain and DNS: buying a domain, pointing it at the site, and the records email needs.