denoland/celld
47.6
Weak · 30 September 2026
106.1k
lines of production code
Rust
with JavaScript
2
measurements over time
What this system is
Celld is a Rust-based runtime and management layer for Durable Object instances, designed to handle cell lifecycle, lease management, and state transitions within a distributed fleet. It provides a unified object-store client supporting multiple cloud storage dialects for replication and includes a CLI for operator inspection. The system decouples core actor logic from specific execution environments, supporting integration with various platforms like containers, sandboxes, and WebAssembly.
Features
Expanded example library with new platform integrations and refactored patterns
This update adds a suite of new examples demonstrating \celld\ support for Containers, Sandboxes, D1, R2, KV, Queues, Cron, Workflows, RPC, Dynamic Worker Tails, Facets, VectorDB, and WebAssembly, alongside updated documentation. Existing examples have been refactored to use modern patterns, such as replacing \JSON.stringify\ with \Response.json\, adopting \getByName\ for Durable Object access, and simplifying WebSocket client logic. The \async\ example was also simplified to focus on a single counter operation.
examples · high confidence
Introduction of the Celld Durable Object runtime and management layer
This change introduces the core \celld\ crate, establishing the runtime infrastructure for managing Durable Object instances (cells) within a fleet. It adds a serial lifecycle executor (\actor.rs\) that handles cell state transitions, lease management, and timer-based operations like node lease renewal and alarm firing. The implementation includes a unified object-store client (\bucket.rs\) supporting S3, Azure Blob, and Google Cloud Storage dialects for conditional writes and replication. Additionally, it provides a CLI (\cell\_cli.rs\) for operators to list and inspect cell instances, and a \CellHost\ abstraction that decouples the actor logic from the underlying JavaScript engine or scripted test hosts.
crates/celld · high confidence
Removals
Removal of the sans-IO coordination core library
The \celld-logic\ crate has been removed, deleting the pure, sans-IO coordination core that previously handled cell ownership, lease management, eviction, and alarm scheduling. This change eliminates the extracted decision logic for cell acquisition, node-lease lifecycles, pressure-based load shedding, and wake-entry reconciliation, along with the associated port traits (ObjectStore, Clock, Replicator) and the per-cell state machine.
crates/logic/src · high confidence
Behavioural changes
License changed to Apache 2.0 and Docker image simplified
The project license has changed from MIT to Apache 2.0, and the Dockerfile has been refactored to remove the external dependencies on Litestream and esbuild. The final container image now contains only the celld binary, and the runtime no longer requires the LITESTREAM\_BIN environment variable or the external litestream binary to function.
(repo-wide) · high confidence
Dependencies
Workspace restructuring and dependency consolidation
The project has been reorganized into a clean-sheet Cargo workspace with new release profiles optimized for size (fat LTO, panic=abort) and development speed (lab profile). All direct dependencies are now centralized in the root Cargo.toml to prevent version drift, and individual crates (celld, logic, ltx) now reference these workspace dependencies. The main celld crate version has been bumped to 0.6.0, and the license changed to Apache-2.0. New example projects for container, opencode, pi, sandbox, and wasm environments have been added with their respective dependencies. The ltx crate was introduced as a vendored snapshot for SQLite replication.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 48 → 48 (-0.2)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 29 → 29 (-0.2)
- Architecture 100 → 86 (-13.7)
- Maturity 65 → 64 (-0.7)
- Readiness 48 → 49 (+1.0)
- Security 84 → 82 (-2.6)
- Event-Driven 100 (new)
- Event Sourcing 100 → 100 (+0.0)
- Performance 85 (new)
Resolved (100)
- Actor::drive (cognitive 37) (crates/celld/actor.rs)
- ClassTooLong: Actor (crates/celld/actor.rs)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Duplicated block (12 lines × 2) (crates/celld/js.rs)
- Duplicated block (12 lines × 2) (crates/celld/js/websocket.rs)
- Duplicated block (12–13 lines × 2) (crates/celld/actor.rs)
- Duplicated block (12–14 lines × 2) (crates/celld/runtime.rs)
- Duplicated block (13 lines × 2) (crates/celld/js.rs)
- Duplicated block (13–14 lines × 2) (crates/celld/main.rs)
- Duplicated block (14 lines × 2) (crates/celld/js.rs)
- Duplicated block (14 lines × 2) (crates/celld/js.rs)
- Duplicated block (15 lines × 2) (crates/celld/js.rs)
- Duplicated block (15 lines × 3) (crates/celld/js.rs)
- Duplicated block (16 lines × 2) (crates/celld/js.rs)
- Duplicated block (22–23 lines × 2) (crates/celld/runtime.rs)
- Duplicated block (28 lines × 2) (crates/celld/main.rs)
- Duplicated block (3–5 lines × 3) (crates/celld/js/tcp.rs)
- Duplicated block (47 lines × 2) (crates/celld/runtime.rs)
- Duplicated block (5 lines × 2) (crates/celld/js.rs)
- Duplicated block (5 lines × 2) (crates/celld/js/bootstrap.rs)
- …and 80 more
New (231)
- (anonymous)::exportKey (cyclomatic 19) (crates/celld/js/crypto.js)
- Ambiguous naming for storage operations. get and get_blob likely perform the same fundamental operation (retrieving data by key). The distinction seems to be that get_blob supports ranges and conditions, but the naming convention is inconsistent (one is generic get, the other specific get_blob).
- BundleOverlayClient::read_range (cognitive 16) (crates/ltx/src/client/bundle.rs)
- ClassTooLong: ContainerEngine (crates/celld/container.rs)
- ClassTooLong: RuntimeManager (crates/celld/runtime.rs)
- ClassTooLong: Worker (crates/celld/js.rs)
- Collector::pass (cognitive 17) (crates/celld/wake.rs)
- Command::parse (cognitive 31) (crates/celld/r2_cli.rs)
- Command::parse (cyclomatic 31) (crates/celld/r2_cli.rs)
- Compactor::compact_inner (cognitive 18) (crates/ltx/src/compactor.rs)
- ContainerEngine::networks (cognitive 18) (crates/celld/container.rs)
- Documentation: contradicts the code (docs/cloudflare-compat.md)
- Duplicated block (10 lines × 2) (crates/celld/js.rs)
- Duplicated block (10 lines × 2) (crates/celld/js.rs)
- Duplicated block (11 lines × 2) (crates/celld/js.rs)
- Duplicated block (12 lines × 2) (crates/celld/js.rs)
- Duplicated block (12 lines × 2) (crates/celld/ws_registry.rs)
- Duplicated block (12 lines × 2) (crates/logic/lib.rs)
- Duplicated block (14 lines × 2) (crates/celld/http_streams.rs)
- Duplicated block (15 lines × 2) (crates/celld/js.rs)
- …and 211 more
Changes since last survey
- 3 commits — 3 feature/other, 0 fixes
By area
- crates/celld — 3 commits
Notable commits
- change: v0.5.0
- change: v0.5.1
- change: v0.6.0
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
denoland/celld was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit bad4649d01f0db84cdc9093527e72e64ca7a14bf — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.