Skip to content

What is cellp

cellp is a private Workers platform control plane. It versions your Worker and its data on every deploy, serves a preview URL, assigns the first ready version to production automatically, and uses promote for later production cutovers.

It is not a Cloudflare account and not self-hosted Cloudflare. It is not Vercel and not a Git host. You keep GitHub (or GitLab, or Forgejo), your CI, and your load balancer. cellp sits in the middle: receive an artifact, run an isolated celld process, route traffic.

The product

A project is an app. A version is one deploy of that app.

You getWhat that means
Preview URLpreview_url — live Worker for that deploy (HTTP Host on gateway)
Production URLprod_url — current prod_version_id (first ready on a new project, or last promote; prod Host unchanged on promote)
Data that matches the codeChild versions branch D1, KV, R2, and Queues from a parent. Writes stay in the preview.
DashboardProjects, versions, storage browsers, env vars — talking only to the REST API
Self-hostOne-line install then cellp dev on a laptop (no Docker). Docker Compose + RustFS for a production-shaped VM.

What you write

A Cloudflare-style Worker:

js
export default {
  async fetch(request, env) {
    const row = await env.DB.prepare('select count(*) as n from products').first()
    return Response.json(row)
  },
}

Bindings come from wrangler.jsonc inside the bundle (d1_databases, kv_namespaces, r2_buckets, queues, workflows, triggers.crons). The runtime is celld — a Rust Workers engine shipped with cellp (git submodule in the repository). The cellp project maintains and extends celld for private deployment: per-version buckets, d1 branch, KV/R2/Queue branch, and operator CLIs that cellpd invokes. cellp does not re-implement the isolate; it orchestrates one celld process per ready version.

What cellp is not

These are product decisions, not missing tickets:

Not in scopeWho owns it
User accounts, orgs, SSO, RBACYour IdP / outer layer, or two shared tokens
Git hosting, webhooks, PR botsGitHub / GitLab / Forgejo + CI
DNS, CDN, TLS, WAF, DDoSYour load balancer / Nginx / gateway
Global anycast PoPsNot a CDN. Distributed control plane is a later scale-out, not edge
Next.js / Node serverlessUse Vercel or a Node host. cellp runs Workers, not Node

Read the full comparison in Compare and the honest list in Limits.

The stack (operator view)

PieceRole
cellpdAPI, orchestrator, gateway, SQLite registry
celldWorkers + D1 + KV + R2 + Queue + Workflow runtime (one process per ready version)
offshootCopy-on-write data fork between parent and child versions (concept)
RustFSPrivate S3 for artifacts, offshoot, and per-version blobs
Dashboard (web/)Vite SPA. Never talks to celld directly

You already have Git and CI. cellp does not replace them.

Status

cellp v1 is a working platform: CD loop, preview/prod routing, promote, D1 import/branch, KV/R2/Queue branch, archive/wake, Dashboard, Docker image on GHCR.

It is built to be run by you. There is no hosted cellp cloud.

Next: Why cellp · How it works · Quick start

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