Skip to content
Rush Commerce
Tools & Teardowns3 min read

Celld: self-hosted Durable Objects and a cost fight

Ryan Dahl's celld runs Cloudflare Workers and Durable Objects on your own S3 storage. The API is compatible, the license is Apache-2.0, the pricing claim is contested.

Cloudflare's Durable Objects is one of the better primitives in distributed systems: a named, single-threaded object with its own storage, addressable from anywhere. It is also one of the more locked-in ones — the API only ran on Cloudflare. Celld, from Node.js and Deno creator Ryan Dahl, is a self-hosted implementation of that same API, and this week it picked up a public argument with Cloudflare about what it costs.

What actually happened

Celld is an open-source daemon that runs Cloudflare Workers and Durable Objects on infrastructure you control. Per the repo, each object is its own SQLite database, replicated to an S3-compatible or Google Cloud Storage bucket. There is no control plane and no consensus protocol. Sharding falls out of the design, because every object is already a separate database. It is Apache-2.0, written in Rust and JavaScript, and Dahl's own summary of the stack is V8 + S3 + SQLite + LTX + Tokio.

The contested part is money. The Register reports Dahl's claim that 100 resident objects run roughly $415 a month on Cloudflare against roughly $49 on celld backed by DigitalOcean storage — and Cloudflare's rebuttal that hibernating objects cost about $20.65 a month, which inverts the comparison. Both numbers depend entirely on whether your objects sleep. Neither side is lying; they are pricing different workloads.

Two things to know before you get excited. The project is early — a handful of commits and an explicit limitations section. And pull requests are disabled: patches go by email to Dahl with a CLA assigning rights to Deno Land Inc.

Why a portable API matters for your business

Ignore the benchmark fight. The useful fact is that a Durable Objects app is no longer a Cloudflare-only app.

That changes how you should evaluate the primitive. Before this week, choosing Durable Objects for a booking system, a per-customer job queue, or a real-time inventory counter meant choosing a single vendor's runtime, pricing, and outage schedule for the life of that feature. Now there is a second implementation of the same JavaScript API under a license you can read. Even if you never deploy celld, its existence is leverage — the same reason we told you to adopt on the license, not the roadmap.

What we would not do today is move production onto a four-commit project. What we would do is write the stateful layer against the Durable Objects API on purpose, keep the storage bucket in an account you own, and know your exit exists before you need it.

Key takeaways

  • Celld is an Apache-2.0, self-hosted implementation of the Cloudflare Workers and Durable Objects APIs, backed by SQLite plus S3-compatible storage
  • Dahl claims roughly $49/month against Cloudflare's ~$415 for 100 resident objects; Cloudflare counters that hibernating objects run about $20.65 — the gap is workload shape, not arithmetic
  • The project is early, and contributions go by emailed patch with a CLA, not pull requests
  • The real win is that Durable Objects is now a portable API with a second implementation, so choosing it stops being a one-way door

Building something stateful and worried about where it lives? We design systems where the runtime is a choice you can reverse — your data in your buckets, your logic behind an API with more than one implementation. See how we keep your stack portable or bring us the architecture you're deciding on.

Sources: celld on GitHub, The Register.

  • #celld
  • #durable-objects
  • #cloudflare
  • #self-hosting
  • #portability
TR

Tommy Rush — Founder, Rush Commerce

Operator turned builder. 15+ years running operations — now shipping the systems businesses run on. More

Get The Rush Report weekly — one email, zero fluff.