LinuxCommandLibrary
GitHubF-DroidGoogle Play Store

celld

Self-hosted distributed Durable Objects runtime

TLDR

Install the binary (releases with GitHub attestations)
$ curl -fsSL https://celld.dev/install.sh | sh
copy
Deploy a Wrangler Worker project to the fleet bucket
$ celld deploy . --bucket s3://[my-cells-bucket]
copy
Start a node against the same bucket
$ celld --bucket s3://[my-cells-bucket] --listen 0.0.0.0:8080 --advertise [10.0.0.12:8080]
copy
Run with an S3-compatible endpoint (e.g. Cloudflare R2)
$ celld --bucket s3://[bucket] --endpoint https://[account].r2.cloudflarestorage.com --region auto --listen 0.0.0.0:8080 --advertise [node-a.internal:8080]
copy
Diagnose fleet peers and node health
$ celld diagnose --bucket s3://[my-cells-bucket]
copy
Show full CLI help
$ celld --help
copy

SYNOPSIS

celld [--bucket s3://bucket] [--endpoint url] [--region name] [--listen addr] [--advertise addr] [options]celld deploy path [--bucket s3://bucket] [options]celld diagnose [--bucket s3://bucket] [--peer NODEID_]...

DESCRIPTION

celld is an open-source daemon that runs Cloudflare Workers and Durable Objects on your own machines. Each Durable Object is a cell: a named server with its own private SQLite database. Cells coordinate and replicate only through an S3-compatible bucket you own — there is no separate control plane or consensus service.Every node embeds V8, executes Wrangler bundles, and shares deployments, cell state, and ownership records in the bucket. Object-storage compare-and-swap ensures exactly one node owns a cell at a time. Idle cells hibernate; inactive cells exist only as objects in the bucket and cost almost nothing. Acknowledged writes are replicated to the bucket first (RPO=0).A fleet is formed by pointing nodes at the same bucket. Peers discover each other from leases in the bucket. Peer HTTP is HMAC-authenticated and does not terminate TLS — advertise addresses should stay on a private network or encrypted overlay (WireGuard, Tailscale). Worker projects need esbuild on `PATH` for `celld deploy`; asset-only projects do not.

PARAMETERS

--bucket s3://bucket

Fleet bucket holding deployments, SQLite replicas, ownership, and peer auth. Same as CELLD_BUCKET.
--endpoint url
S3-compatible API endpoint (e.g. R2). Same as S3_ENDPOINT.
--region name
Object-storage region (auto for R2). Uses the standard AWS region variables when unset.
--listen addr
Local HTTP listener (default suitable for local development). Same as CELLD_ADDR.
--advertise addr
Address other nodes and ingress can reach. Required for multi-node fleets. Same as CELLD_ADVERTISE.
--unsafe-public-advertise
Allow a literal public IP as --advertise (rejected by default).
deploy path
Bundle and write a Wrangler project (Workers, Durable Object bindings, static assets) to the bucket.
diagnose
Enumerate node leases and probe live peers without taking ownership. Optional --peer NODEID_ (repeatable).
-h, --help
Show the full option list and advanced tuning switches.
--version
Print the binary version.

CONFIGURATION

CELLD_BUCKET

Default fleet bucket URI.
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Explicit credentials; the standard AWS credential chain is also used.
S3_ENDPOINT, AWS_REGION
Endpoint and region for non-AWS or R2 storage.
CELLD_WATCH
Local work directory for SQLite and replication state.
CELLD_MAX_RESIDENT_CELLS, CELLD_RESIDENT_LOW_WATER
Optional pressure-shedding watermarks for resident cells.
CELLD_MAX_RSS_MB, CELLD_MAX_CPU_PERCENT
Linux memory/CPU pressure triggers for shedding idle cells.
CELLD_ESBUILD
Path to esbuild for Worker deploys.
RUST_LOG
Runtime log filter.

CAVEATS

The runtime and Cloudflare compatibility surface are still evolving. Bucket credentials are fleet-administrator access — protect them. Do not expose the peer port on the public internet; peer traffic is not TLS-terminated. Public advertise IPs need an explicit unsafe flag. Conformance against full Workers/Durable Objects reference behavior continues to expand.

HISTORY

celld is an Apache-2.0 project from Deno Land (Ryan Dahl and collaborators), released as a self-hosted Durable Objects runtime that uses object storage as the sole coordinator instead of a managed control plane.

SEE ALSO

wrangler(1), esbuild(1), deno(1)

RESOURCES

Copied to clipboard
Kai