Documentation 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.
celld reads its configuration from environment variables. Every command-line flag has an equivalent variable, and the two can be mixed freely. An unset variable selects its documented default. A Boolean variable accepts only 0 or 1 — any other value causes celld to exit at startup with an error. Numeric variables must be positive; celld exits on an invalid or out-of-range value.
Storage & Bucket
| Variable | Purpose | Default |
|---|
CELLD_BUCKET | Fleet bucket and optional key prefix — s3://BUCKET or gs://BUCKET; a /PREFIX suffix scopes all objects under that prefix. Same as --bucket. | required |
S3_ENDPOINT | S3-compatible endpoint URL. Same as --endpoint. | AWS S3 |
AWS_REGION, AWS_DEFAULT_REGION | Storage region for S3-compatible buckets. | inferred |
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN | Explicit AWS credentials. The standard AWS credential chain (instance metadata, web identity tokens) is also available. | credential chain |
GOOGLE_APPLICATION_CREDENTIALS, GOOGLE_SERVICE_ACCOUNT_KEY | Credentials for a gs:// bucket. Application Default Credentials are also available. | ADC |
Networking
| Variable | Purpose | Default |
|---|
CELLD_ADDR | Public Worker listener address and port. Same as --listen. | 127.0.0.1:8080 |
CELLD_INTERNAL_ADDR | Peer protocol and operator listener address. Same as --internal-listen. | 127.0.0.1:0 (random loopback port) |
CELLD_ADVERTISE | Internal address that peers can reach — must route to the internal listener, not the public listener. Same as --advertise. | none |
CELLD_UNSAFE_PUBLIC_ADVERTISE | Set to 1 to permit a literal public IP in CELLD_ADVERTISE. Does not resolve DNS names or restrict the internal listener. | 0 |
CELLD_NODE | Explicit node-session ID. If unset, celld generates a random ID at each start. | random |
Memory & Capacity
| Variable | Purpose | Default |
|---|
CELLD_MAX_RESIDENT_CELLS | Hard limit for resident cells, enforced at admission. New activations are refused when the limit is reached. | none (unlimited) |
CELLD_MAX_RSS_MB | Memory threshold in MiB for pressure-based cell shedding. Set to 0 to disable pressure shedding. | 80% of available memory |
CELLD_ACTIVATIONS | Limit for concurrent cold-cell activations (cells being restored from bucket storage). | min(CPU count, 128) |
CELLD_MAX_LOADED_WORKERS | Limit for concurrently loaded workers (used with CELLD_WORKER_LOADER). | 256 |
CELLD_MAX_REQUESTS | Maximum number of concurrent requests a node will accept. | none (unlimited) |
CELLD_MAX_STATELESS_ISOLATES | Maximum number of concurrently loaded stateless (non-Durable Object) isolates. | CPU count |
CELLD_EVICTIONS | Number of concurrent evictions the node runs at once. | 4 |
Replication & Durability
| Variable | Purpose | Default |
|---|
CELLD_OUTPUT_GATE | 1 — hold the response until the replicator proves the write is durable in the bucket (RPO=0). 0 — acknowledge without waiting for replication proof; an acknowledged write may be lost on node failure. | 1 |
CELLD_LTX_COMPACTION | 1 — create additive L1 block objects so a takeover reads tens of objects instead of thousands. 0 — disable for mixed fleets that contain nodes older than v0.5.2, which cannot read L1 block objects. | 1 |
CELLD_LTX_COMPACTION_MIN_TXIDS | Durable TXID distance that queues an L1 compaction attempt. | 256 |
CELLD_LTX_COMPACTIONS | Node-wide limit for concurrent L1 compaction attempts. | 2 |
CELLD_WATCH | Local work directory for SQLite files and the replication pipeline. | OS temp dir |
Timing
| Variable | Purpose | Default |
|---|
CELLD_OPERATION_DEADLINE_MS | Deadline in milliseconds for non-restore operations. | 15000 |
CELLD_SHUTDOWN_DRAIN_MS | Maximum time in milliseconds allowed for the full graceful-shutdown drain. Must be set below the orchestrator’s stop grace period (e.g. systemd TimeoutStopSec, Kubernetes terminationGracePeriodSeconds). | 25000 |
CELLD_RELEASES | Number of concurrent cell releases allowed during shutdown. A higher value drains faster but generates more concurrent bucket writes. | 128 |
CELLD_IDLE_EVICT_S | Age in seconds after which an idle cell is evicted. Off unless set. | off |
CELLD_FETCH_TIMEOUT_S | Timeout in seconds for outbound fetch() calls from a Worker. | 120 |
CELLD_HANDLER_BUDGET_S | Maximum wall-clock seconds a JavaScript handler may run before it is aborted. | 300 |
Other
| Variable | Purpose | Default |
|---|
CELLD_ESBUILD | Absolute path to the esbuild executable. If unset, celld searches PATH. | PATH lookup |
CELLD_WORKER_LOADER | Bind a Worker Loader (Code Mode) at this env name; a Worker can then start sandboxed isolates at runtime. Experimental — off unless set. | off |
CELLD_VAR_* | Worker variable overrides. Each variable named CELLD_VAR_FOO sets the Worker variable FOO. | none |
CELLD_VARS_FILE | Path to a file of Worker variable overrides (newline-separated KEY=VALUE pairs). | none |
RUST_LOG | Runtime log filter passed to the tracing subscriber, for example celld=debug or info,celld::replication=trace. | info |
All Boolean variables accept only 0 or 1. All numeric variables must be positive integers. celld exits during startup when a supplied value is invalid, so a typo cannot silently change the configuration of a running node.
Run celld -h to see the full list of flags and environment variables, including advanced tuning switches and their current defaults.