Running on Cloudflare

Prefer the edge to a box? The same highseas codebase deploys to Cloudflare Workers unchanged. This is the other half of "runs anywhere" — self-host it, or ship it to Cloudflare, from one source tree.

Deploy

With a Cloudflare account and Wrangler configured, it's the standard Workers flow:

npm run build wrangler deploy

Storage maps straight onto Cloudflare's primitives — your database to D1, object storage to R2, and durable state to Durable Objects. The self-hosted runner mirrors those same bindings locally, which is why the app doesn't know or care which one it's running on.

Why dual-runtime matters

One gotcha: database migrations

A plain wrangler deploy ships code but does not run D1 migrations. After adding migrations, apply them to your remote database:

wrangler d1 migrations apply <your-db> --remote

On the self-hosted path this is automatic — migrations run on container boot. See Self-hosting for that route.