ShipAgent

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.