Overview
celld is a self-hosted, distributed Durable Objects system, allowing you to run Cloudflare Workers and Durable Objects on your own infrastructure. It leverages SQLite for individual object storage and an S3-compatible bucket for replication and coordination, eliminating the need for a traditional control plane or consensus service. This design inherently shards applications, minimizing contention and blast-radius failures.
Key Features
- Self-Hosted Distributed Durable Objects: Run Cloudflare Workers and Durable Objects on your own servers.
- SQLite Per Object: Each Durable Object is its own SQLite database for isolated and efficient storage.
- S3-Compatible Replication: Object data is replicated to your S3-compatible bucket, serving as the durable source of truth.
- Decentralized Coordination: Nodes coordinate solely through the S3 bucket using object-storage compare-and-swap for ownership, avoiding complex membership protocols.
- Automatic Sharding: Applications are sharded by construction, preventing the issues associated with shared databases.
- Hibernation: Idle cells (objects) can hibernate to minimal resource consumption.
- V8 Embedded: Each
celldnode embeds V8 for Worker execution. - Wrangler Bundle Compatibility: Supports deployment of standard Wrangler bundles, including assets.
- Simplified Operations: Features like
celld diagnoseprovide fleet health monitoring. - Pressure Shedding: Opt-in feature to manage resource pressure by gracefully shedding idle cells.
Typical Use Cases
- Migrating Cloudflare Workers/Durable Objects to Self-Hosting: Organizations looking to maintain data sovereignty or leverage existing on-premises infrastructure for their Worker and Durable Object workloads.
- Building Highly Available, Sharded Data Stores: Applications that require distributed, resilient key-value or object storage with automatic sharding and fault tolerance.
- Developing Edge Computing Applications on Private Infrastructure: Deploying Worker-like logic closer to users or data sources within a private network.
- Creating Custom Distributed Systems: Developers seeking a robust foundation for building complex distributed applications that benefit from isolated state management per entity.
- Experimentation and Prototyping: Prototyping distributed applications without the immediate constraints of a managed cloud service.
