Skip to main content

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

VariablePurposeDefault
CELLD_BUCKETFleet bucket and optional key prefix — s3://BUCKET or gs://BUCKET; a /PREFIX suffix scopes all objects under that prefix. Same as --bucket.required
S3_ENDPOINTS3-compatible endpoint URL. Same as --endpoint.AWS S3
AWS_REGION, AWS_DEFAULT_REGIONStorage region for S3-compatible buckets.inferred
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKENExplicit AWS credentials. The standard AWS credential chain (instance metadata, web identity tokens) is also available.credential chain
GOOGLE_APPLICATION_CREDENTIALS, GOOGLE_SERVICE_ACCOUNT_KEYCredentials for a gs:// bucket. Application Default Credentials are also available.ADC

Networking

VariablePurposeDefault
CELLD_ADDRPublic Worker listener address and port. Same as --listen.127.0.0.1:8080
CELLD_INTERNAL_ADDRPeer protocol and operator listener address. Same as --internal-listen.127.0.0.1:0 (random loopback port)
CELLD_ADVERTISEInternal address that peers can reach — must route to the internal listener, not the public listener. Same as --advertise.none
CELLD_UNSAFE_PUBLIC_ADVERTISESet to 1 to permit a literal public IP in CELLD_ADVERTISE. Does not resolve DNS names or restrict the internal listener.0
CELLD_NODEExplicit node-session ID. If unset, celld generates a random ID at each start.random

Memory & Capacity

VariablePurposeDefault
CELLD_MAX_RESIDENT_CELLSHard limit for resident cells, enforced at admission. New activations are refused when the limit is reached.none (unlimited)
CELLD_MAX_RSS_MBMemory threshold in MiB for pressure-based cell shedding. Set to 0 to disable pressure shedding.80% of available memory
CELLD_ACTIVATIONSLimit for concurrent cold-cell activations (cells being restored from bucket storage).min(CPU count, 128)
CELLD_MAX_LOADED_WORKERSLimit for concurrently loaded workers (used with CELLD_WORKER_LOADER).256
CELLD_MAX_REQUESTSMaximum number of concurrent requests a node will accept.none (unlimited)
CELLD_MAX_STATELESS_ISOLATESMaximum number of concurrently loaded stateless (non-Durable Object) isolates.CPU count
CELLD_EVICTIONSNumber of concurrent evictions the node runs at once.4

Replication & Durability

VariablePurposeDefault
CELLD_OUTPUT_GATE1 — 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_COMPACTION1 — 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_TXIDSDurable TXID distance that queues an L1 compaction attempt.256
CELLD_LTX_COMPACTIONSNode-wide limit for concurrent L1 compaction attempts.2
CELLD_WATCHLocal work directory for SQLite files and the replication pipeline.OS temp dir

Timing

VariablePurposeDefault
CELLD_OPERATION_DEADLINE_MSDeadline in milliseconds for non-restore operations.15000
CELLD_SHUTDOWN_DRAIN_MSMaximum 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_RELEASESNumber of concurrent cell releases allowed during shutdown. A higher value drains faster but generates more concurrent bucket writes.128
CELLD_IDLE_EVICT_SAge in seconds after which an idle cell is evicted. Off unless set.off
CELLD_FETCH_TIMEOUT_STimeout in seconds for outbound fetch() calls from a Worker.120
CELLD_HANDLER_BUDGET_SMaximum wall-clock seconds a JavaScript handler may run before it is aborted.300

Other

VariablePurposeDefault
CELLD_ESBUILDAbsolute path to the esbuild executable. If unset, celld searches PATH.PATH lookup
CELLD_WORKER_LOADERBind 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_FILEPath to a file of Worker variable overrides (newline-separated KEY=VALUE pairs).none
RUST_LOGRuntime 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.

Build docs developers (and LLMs) love