Limitations
Lime Sync is a preview Zero server. The client is the real @rocicorp/zero
package, while the replacement server and Cloudflare deployment have explicit
support boundaries.
Current public host
The documented application integration is the Cloudflare host: Rust/WASM in a SQLite Durable Object, connected to the application query endpoint, mutate endpoint, and authoritative database change feed.
The native Rust host is used for engine qualification but does not yet ship the same application-endpoint and change-feed integration as a supported public deployment. Do not create a separate native mutator or permission system to work around that gap.
Protocol scope
The qualified surface covers named-query synchronization, custom mutation delivery, mutation IDs, snapshots, incremental patches, retained history, reconnects, and wake notifications. Pin Lime Sync and Zero versions together and run the application’s real query and mutation corpus before rollout.
Single-writer namespaces
One namespace has one ordered SQLite writer. This keeps transaction order clear but sets the write-throughput ceiling for a hot namespace. Partition by a real ownership and scaling boundary such as organization or project.
Retention and snapshots
Incremental history is bounded. A client older than the retained floor recovers with a full snapshot. Large snapshots cost storage reads, network bytes, client apply time, and memory, so retention must reflect actual offline periods and namespace size.
Cloudflare constraints
The host operates within Durable Object memory, CPU, SQLite, WebSocket, storage, and billing limits. Indexes, foreign keys, cascades, the replicated application tables, and sync metadata can amplify physical rows read and written.
Preview packaging
The deployed Chat and Contrast integrations use thin application-specific adapters to connect auth, query resolution, mutation forwarding, namespaces, and change feeds. A smaller reusable deployment adapter and stable public configuration surface are still in progress.