In this quickstart you will install celld, connect it to an S3-compatible bucket, deploy theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/denoland/celld/llms.txt
Use this file to discover all available pages before exploring further.
counter Durable Object example, and send your first
request to a running cell — all in five steps. The counter example is a
SQLite-backed Durable Object that increments a persistent counter on every
request. It is the simplest possible demonstration of cell state surviving
across requests and node restarts.
Worker projects deployed with
celld deploy require
esbuild on your PATH. Install it before
running the deploy step.Install celld
Run the one-line installer to download the If the installer asks you to, add To pin a specific release, set You can verify the provenance of any downloaded binary with:
celld binary:~/.local/bin to your PATH. Verify
the installation:CELLD_VERSION to the desired tag before
running the installer:Configure object storage credentials
celld uses the standard AWS credential chain for S3-compatible stores. For
Cloudflare R2, create a bucket and an S3 API token with access to that
bucket, then export these variables:For Google Cloud Storage, authenticate with Application Default
Credentials and set the bucket using a A
gs:// prefix:gs:// bucket does not use S3_ENDPOINT or AWS_* credentials.For Amazon S3, use the standard AWS credential chain and omit
--endpoint and --region from celld commands — they will be inferred
automatically.Deploy the counter example
Clone the celld repository and deploy the counter example to your bucket:The counter example consists of two files. Here is the full Worker code:And the Wrangler configuration:
celld deploy invokes esbuild from your PATH to bundle the Worker
code, then writes the deployment and any static assets directly to the
bucket. Every node in the fleet picks up the latest deployment
automatically.Start a node
Start celld and point it at the same bucket:For local development the default listener (
0.0.0.0:8080) is fine. The
node loads the deployment you pushed in the previous step and begins
accepting traffic.Send a request
With the node running, send an HTTP request to the Worker:You should see a JSON response like:Each subsequent request increments the counter. The value is durable: stop
the node, restart it, and the counter picks up where it left off because
the SQLite database is continuously replicated to your bucket.
Next steps
- Explore the other examples — WebSocket echo, alarms, JS RPC, and more.
- Read the Installation guide for Docker and build-from-source options.
- Review the limitations before deploying to production.