Celld
Deploy Tardigrade actors to a self-hosted Celld fleet.
Celld runs Wrangler Worker bundles and SQLite Durable Objects on a self-hosted fleet. Tardigrade uses the same actor definition, lifecycle, alarms, and HTTP routes on Celld and Cloudflare.
Deploy
tdg init creates celld.jsonc, and tdg setup updates its model connections without changing other Celld settings. Celld accepts string Worker variables, so the manifest stores TARDIGRADE_CONFIG as encoded JSON.
Set the fleet bucket with --bucket or CELLD_BUCKET. Use --endpoint and --region when needed for S3-compatible storage. Celld also supports gs:// buckets with Google Application Default Credentials and az:// containers with Azure credentials.
celld deploy --config celld.jsonc --bucket s3://actors --dry-run
celld deploy --config celld.jsonc --bucket s3://actors
The first command validates the deployment. The second publishes it.
Configure nodes
Each node needs the Worker variables for the Tardigrade token and model provider credentials. Actors that use Code Mode also need the Worker Loader binding. Prefix a variable with CELLD_VAR_, or set CELLD_VARS_FILE to a file containing the original variable names.
CELLD_WORKER_LOADER=LOADER \
CELLD_VAR_TARDIGRADE_TOKEN="$TARDIGRADE_TOKEN" \
CELLD_VAR_OPENAI_API_KEY="$OPENAI_API_KEY" \
celld \
--bucket s3://actors \
--listen 0.0.0.0:8080 \
--internal-listen 10.0.0.12:8081 \
--advertise 10.0.0.12:8081
Keep the internal listener on a trusted private network. A deployment is loaded when a node starts, so restart nodes through the fleet rollout procedure after publishing a new version.
Execution model
The generated manifest uses the replay sandbox transport and assigns background work to the request. Celld records package-call results, replays the deterministic actor body, and keeps reconciliation alive with waitUntil. Cloudflare uses direct transport and host ownership by default. See Celld's Cloudflare compatibility and operations documentation for platform details.