Docs / Serverless Objects / Compatibility
Compatibility
Which Workers APIs and bindings Serverless Objects has tested on celld and the native engine, which are reported upstream only, and known gaps.
Cloudflare's APIs are the compatibility contract. These tables separate behavior the project has tested from functionality that celld lists upstream. A celld capability is not automatically a Serverless Objects guarantee.
The conformance results are one local run on macOS arm64 using Wrangler 4.150.0 and celld 0.6.2, plus a run against Cloudflare. They are not a cross-platform or Cloudflare production certification.
Bindings
| Binding | celld 0.6.2 | Native engine | Notes |
|---|---|---|---|
| Durable Objects | Tested | Tested | See the API table below. |
| KV | Upstream-reported | Not yet | The conformance suite tests Durable Object storage, not the separate Workers KV binding. |
| D1 | Upstream-reported | Not yet | |
| R2 | Upstream-reported | Not yet | |
| Queues | Upstream-reported | Not yet | |
| Workflows | Upstream-reported | Not yet | Not covered by conformance. |
Containers (ctx.container) |
Partial, tested once with Docker | Not documented | See Containers below. |
| Service bindings | Not covered | Not yet | The native engine refuses a config that declares them. |
| Static assets | Preflight support | Not yet | The CLI requires assets.directory, or discovers Vite output for @cloudflare/vite-plugin projects. The native engine refuses a config that declares assets. |
vars |
Used by tested apps | Yes | The Hotcell binding reads its settings from vars on celld. |
| Workers AI, Vectorize, Hyperdrive, Browser Rendering, Email Workers | Not provided by celld 0.6.2 | Not provided | Serverless Objects does not implement replacements. |
"Upstream-reported" means celld 0.6.2 lists the binding, and this project's conformance suite does not exercise it. Check celld's release documentation for exact limits.
Durable Objects APIs
| Area | Status | Evidence or limitation |
|---|---|---|
| Durable Object IDs | Tested on Wrangler, celld and native | Named IDs, unique IDs, string conversion and validation. |
| Durable Object KV storage | Tested on Wrangler, celld and native | Get, put, list, delete, ranges and structured-clone values. |
| SQLite storage and SQL cursors | Tested on Wrangler, celld and native | SQL execution, cursors, raw rows, errors and database size. SQLite-backed classes require new_sqlite_classes. |
| Transactions | Tested on Wrangler, celld and native | transactionSync and async transaction commit and rollback. |
| RPC and input gates | Tested on Wrangler, celld and native | Structured arguments and results, error propagation, serialized increments and blockConcurrencyWhile. |
| Alarm API and delivery | Tested on Wrangler, celld and native | Set, delete and delivery. |
| Alarm across restart | Tested on celld and native | A pending alarm fired after restarting the process. Not tested on Wrangler. |
deleteAll() clears alarm |
Tested | Requires compatibility date 2026-02-24 or later. |
| Basic WebSockets | Tested on Wrangler, celld and native | Upgrade, echo, attachment, tags and auto-response. |
| WebSocket hibernation | Tested on celld and native | The object was evicted with a socket open, and the next message reached a new instance with tags and attachment intact. Not run on Wrangler. Sockets across a cell move between nodes are not tested. |
| Facets | Not tested | |
| Migrations | Limited | celld 0.6.2 accepts tag and new_sqlite_classes; rename, delete and transfer migrations are rejected. |
| Point-in-time recovery | celld 0.6: no. Native: yes, in durable mode | Native engine with --backup-mode durable has getCurrentBookmark, getBookmarkForTime, onNextSessionRestoreBookmark and ctx.abort(). |
Agents SDK and PartyServer
| Area | Status |
|---|---|
Agents SDK state, SQL, schedules, addressing, @callable() RPC |
Passes the conformance Agents suite on Cloudflare, Wrangler, celld and native. |
Agents SDK through sobjects deploy and sobjects up |
A minimal agents 0.28.1 app ran behind TLS ingress on celld 0.6.2 with SeaweedFS: routing, setState, this.sql, schedule() (including one pending across a node restart) and the WebSocket protocol matched wrangler dev. |
| Agents SDK chat agents, MCP, Workflows, official samples | Not run through the CLI. |
| PartyServer | Tested only directly on celld in the M0 spike. |
Containers and @cloudflare/sandbox 1.0
celld 0.6.2 runs Wrangler containers classes on a local Docker or Podman engine. A Durable Object using stock @cloudflare/sandbox 1.0.1 (Files.writeFile, readFile, ctx.container.exec) worked once on macOS with an image built FROM alpine plus sandbox-shim copied from cloudflare/sandbox:1.0.1.
Gaps seen on macOS:
exec()straight afterstart()fails with "No such container" while the container is still being created.enableInternet: falseis not enforced; celld logs a warning.container.imagesis undefined.
Not tested: Linux, S3Mount, DirectoryBackup, sleep and restart.
For a sandbox backed by Hotcell instead, see Hotcell sandbox binding, which follows the Sandbox SDK 0.x shape.
Product and topology
| Capability | Status |
|---|---|
Single-host sobjects up |
Implemented and smoke-tested. |
| Multi-node operations, tenancy, SSO, audit log | Not provided by this pre-alpha. celld's own multi-node capabilities don't imply these control-plane features. |
| Cloudflare-hosted production behavior | Not tested. Local results don't certify production Cloudflare behavior. |
Test record
- Conformance results, with the exact commands.
- M0 celld findings
- Compatibility source