Skip to content

Bindings

Bindings are how a Worker talks to storage. You declare them in wrangler.jsonc in the deploy folder. You fill them with platform data. cellp does not invent a new format: it reads wrangler keys and asks celld to honor them.

Start here as an app author: Configure bindings (the file) · Write a Worker (env.* in code).

What is declared vs what is branched

Declared in wrangler.jsonc (or wrangler.json) inside the artifact:

  • d1_databases
  • kv_namespaces
  • r2_buckets
  • queues
  • workflows
  • triggers.crons

When you create a child version (parent_version_id set):

BindingBranched from parent?
D1Yes
KVYes
R2Yes (overlay + tombstones)
QueueYes
Workflow instancesNo — empty
CronNo branch — follows this script; scheduling only on the production ready version (Cron · Data fork)
Worker scriptNo — this artifact

Binding identities (database_id, KV namespace id, queue name, R2 bucket name) are inherited from the parent wrangler so the Worker code keeps working.

Operator surfaces

BindingDashboardAPI
D1Table browser + SQL/database, /database/query, …
KVKey browser/kv, /kv/{ns}/keys, …
QueuesPeek / pause / redrive / purge/queues/...
WorkflowsInstance list/workflows/... (read-only)
R2Badge on the listListed on GET …/bindings
CronDisplayListed on GET …/bindings
bash
curl -sS -H "Authorization: Bearer $ADMIN_TOKEN" \
  "$CELLP_URL/v1/projects/my-shop/versions/v1/bindings"

What cellp does not add

  • A second “inherit bindings” button — branch happens during Start
  • An R2 file manager
  • Workflow pause/resume/restart
  • Workers AI, Vectorize, Hyperdrive, Email Workers, Python Workers

Compatibility matrix: Supported stacks. Deep runtime gaps: celld cloudflare-compat.

Per-binding guides: D1 · KV · R2 · Queues · Workflows · Cron · Durable Objects · Images.

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