Skip to content

Compare

cellp is often measured against Cloudflare Workers and Vercel. Use this page to decide quickly. The differences are intentional.

At a glance

DimensioncellpCloudflare WorkersVercel
Unit of deployVersion (you name it)Worker / Pages project in an accountGit deployment
PreviewHost {version}.{project}.{base} (routing)Preview URLs / environmentsEvery git push / PR
Preview dataD1 · KV · R2 · Queue branch from parentUsually shared or copied by handOften shared DB, or separate storage
Preview workflowsInstances not copiedAccount-scoped runtimeN/A (different model)
CronProd version arms schedules; while prod_version_id is empty, each deploying ready version may armPer Worker / environmentPlatform cron / external
ProductionFirst ready sets prod automatically; later promoteRoute / domain in the accountProduction branch alias
GitExternal. CI calls the APIWrangler / dashboard / Git integrationFirst-class Git app
Accounts / SSONone (two tokens)Cloudflare account + membersVercel teams
Runtimecelld (Workers APIs, partial)Cloudflare edge isolatesNode / Edge (framework-defined)
Next.js SSRNo (experimental OpenNext Worker only; pinned 1.14.0 official core suite currently has 49 stable passes out of 56 executed, with 58 more runnable tests blocked before execution)Pages / not the Workers-only pathYes (home turf)
HostingYour machinesCloudflare networkVercel cloud
DNS / TLS / CDNYour LBBuilt inBuilt in
Object storeRustFS (private S3)R2 (Cloudflare)Blob / external
Global PoPsNoYesYes
Durable Objectscelld partial; no cellp data branchFull productN/A

vs Cloudflare Workers

Keep: the Worker source shape, wrangler binding names, and D1/KV/R2/Queue/Workflow/Cron where celld implements them.

Change: you do not wrangler deploy into a Cloudflare account. You build a bundle, upload it to your S3-compatible store, and POST /versions. Preview uses Host ingress, not path-prefixed URLs.

Gain: private deployment; preview that forks D1/KV/R2/Queue; promote/rollback you control; no vendor control plane.

Lose: Anycast edge, Workers AI, Vectorize, Hyperdrive, wrangler tail, account-level DNS, and Cloudflare-only bindings marked No in celld compatibility. See From Cloudflare and Limits.

Split responsibilities: API fidelity is celld; version branching, cron arming, and operator APIs are cellp—see Binding guides.

vs Vercel

Keep: the feeling of preview URL → click around → promote to production.

Change: the unit is a Workers version, not a git deployment of a Next.js app. cellp does not clone your repo or run next start.

Gain: durable bindings versioned with the app (the thing Vercel preview + shared Postgres usually get wrong).

Lose: framework ecosystem, instant git integration, image optimization, Edge Middleware as Vercel defines it. If your app is App Router on Node, stay on Vercel. See From Vercel and Supported stacks.

Mental model cheat sheet

Vercel:     git push  →  deployment  →  preview / production alias
Cloudflare: wrangler deploy  →  Worker in an account  →  routes / domains
cellp:      CI upload + POST /versions  →  isolated version  →  preview Host
            POST /promote  →  production Host (cron arms on prod)

When cellp is the right layer

You want Workers semantics + private metal + data-aware previews.

You already own Git, CI, and HTTPS. You are not asking cellp to be your company IdP or your CDN.

Next: Get started or How it works.

Self-hosted Workers control plane. Not affiliated with Cloudflare or Vercel.