Skip to content
CAI
Software that uses CAICheck a score

denoland/celld

47.6

Weak · 30 September 2026

106.1k

lines of production code

Rust

with JavaScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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.