Tuesday, 29 September 2026Independent intelligence from the feedEditor
Samuel TimesSignal over noise
Front Page/Nerd
Self-hosted Durable Objects · Signal 7.4

Celld Offers Self-Hosted Cloudflare Durable Objects Runtime

Your Cloudflare app runs unchanged: Workers, Durable Objects, KV, Queues, D1, R2, Workflows, Cron, static assets (supported APIs →) Your data lives in a bucket you own Orders of magnitude cheaper at scale Get it Key characteristics Speed and density: one node, trivial cells, an Apple M-series laptop over loopback. The measured 2 vCPU fleet node had a slower activation p50 of 35.9 ms.…

Celld Offers Self-Hosted Cloudflare Durable Objects Runtime
Image from the primary source
Archived primary source · 4,063 chars

celld: Durable Objects, self-hosted

Your Cloudflare app runs unchanged: Workers, Durable Objects, KV, Queues, D1, R2, Workflows, Cron, static assets (supported APIs →)

Your data lives in a bucket you own

Orders of magnitude cheaper at scale

Get it

Key characteristics

Speed and density: one node, trivial cells, an Apple M-series laptop over loopback. The measured 2 vCPU fleet node had a slower activation p50 of 35.9 ms.

Durability: a fleet of 4 vCPU / 8 GB nodes and a bucket in the same region. We test failover by stopping a loaded node with SIGKILL and verifying every room after recovery. How this is measured →

Monthly cost vs resident fleet size

Durable Objects: Workers Paid, $5/mo plus $4.15 per resident cell-month; the free plan covers small workloads.

celld: whole $48 / 8 GB nodes (DigitalOcean us-east list), capped at 2,500 resident cells each; capacity is added in steps.

These base costs exclude the compute and bucket usage from application traffic and writes. Click a dot for a cost breakdown.

Supported services

celld deploy reads your existing wrangler.json and stops on an unknown key instead of ignoring it.

Each KV namespace, D1 database, queue, and Workflow is a cell, with the same lease, SQLite database, LTX replication, and failover as a Durable Object. R2 bindings read and write objects directly in your bucket.

A KV namespace and a queue each have one writer. Add namespaces or queues for write capacity.

Out of scope: anything that needs Cloudflare's network, its GPUs, or a browser farm. Known gaps and differences are listed on the compatibility page →

How it works

Workers handle requests. Durable Objects, KV, Queues, D1, and Workflows keep their state in cells, each with its own SQLite database. Nodes share a bucket for durable storage, and a conditional bucket write assigns cell ownership. The fleet needs no membership protocol, failure detector, or consensus service.

One fleet, one bucket

JavaScript + SQLite per cell

cell 1

cell 2

cell 3

cell 4

cell 5

···

JavaScript + SQLite per cell

cell 6

cell 7

cell 8

cell 9

cell 10

···

··· Any number of celld instances

Durable state for every cell

cell 1

cell 2

cell 3

cell 4

cell 5

cell 6

cell 7

cell 8

cell 9

cell 10

···

SQLite + LTX · ownership · deployments

S3-compatible · Google Cloud Storage · Azure Blob Storage

Reliability

celld keeps the Durable Objects programming model and gives you control over where cells run, how their state is stored, and how you investigate failures.

A review and an incident record about Durable Objects from July 2026.

The Orange Cloud Report scores Durable Objects 2 out of 10 for reliability

“ technically impressive, operationally terrifying. Should have stayed an internal primitive.”

“ technically impressive, operationally terrifying. Should have stayed an internal primitive.”

Cloudflare status: Durable Objects increased errors, major impact

What self-hosting changes:

A cell belongs to whichever node holds its lease in your bucket. If that node fails, another acquires the lease through compare-and-swap and restores the cell from your storage in seconds.

Your fleet still depends on its machines, network, and bucket provider. Cell scheduling and placement run within your fleet, separate from other customers' Durable Objects workloads.

You can investigate a cell's failures through its ownership record, SQLite and LTX files, and logs, using tools like sqlite3 and grep.

Self-hosting puts you in charge of your nodes, bucket provider, and operations, but it doesn't guarantee reliability.

We love Cloudflare, and this very page runs on a Cloudflare Worker. The Durable Objects model is one of the best primitives distributed systems has gained in years: a single-threaded object with its own storage, addressed by name. That design belongs to Kenton Varda and the Cloudflare Workers team.

celld is a love letter to their idea; a primitive this good deserves to run anywhere.

celld = V8 + SQLite + LTX

A stateful distributed system built on S3.

LTX is Litestream's replica format, from Ben Johnson

I became a big fan of cell-based architecture while working on S3 at AWS. At S3 scale, you can’t treat the entire service as one giant system. You partition it into cells, give each cell its own capacity(data plane) and clear ownership(control plane), and contain failures so a problem in one cell doesn’t bring down everything else. Cellularization brings several important benefits: 1. Scale by adding cells 2. Recover and operate cells independently 3. Limit the blast radius of failures 4. Make capacity and ownership more explicit But it also introduces real engineering challenges: routing requests to the…

Read full post

right cell, balancing load across cells, moving or rebalancing data, and scaling cells up and down safely. Now I’m building my own cell-based runtime Cellule - https://t.co/5MMYkE1pc2 - around the same ideas, heavily inspired by https://t.co/h2WP2OnGes and https://t.co/B8OQCsbo7Y, but with a much smaller scope. Cellule is a Rust library that can be embedded directly into a cell-based application with minimal dependencies—ideally, just an object store. It provides the basic building blocks for: - Key-value storage - SQL - Blob - Queues - Workflows - Schedulers - Effects for cross-cell coordination Applications built on top of it should be deployable as a single binary, keeping operations and deployment as simple as possible. I’ve already built a few very different systems on top of Cellule, including a DynamoDB-compatible database server and a Git hosting server. crab-http-server is being built on it too. I’ll write about these examples, and what worked and didn’t, in a follow-up blog post.

Media posted by @haipingfu
Continue with the primary sourceOpen celld.dev

Original title: celld: Durable Objects, self-hosted

Samuel Times preserves the original link so every selection remains auditable.