Repository navigation
feat(celld): add experimental local Worker runtime adapter - #420
Draft
ChristianPavilonis wants to merge 1 commit into
Draft
ChristianPavilonis wants to merge 1 commit into
ChristianPavilonis wants to merge 1 commit into
Conversation
This was referenced Oct 13, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add an experimental sibling runtime adapter for celld. Rust WASM and the workers-rs shim run directly inside celld, without Axum or an HTTP proxy.
Dependency and draft status
Stacked on #275 using base branch
docs/outbound-http-spec. This PR contains only the celld changes above that prerequisite. It should be retargeted after #275 merges.Companion consumer: stackpop/mocktioneer#122, pinned to this PR's published commit.
Local-only experiment. No deployment, fleet provisioning, managed secrets, or remote config publication is implemented. It does not close the Axum production-readiness work.
AWS deployment comparison
For the first scalable Trusted Server deployment on AWS, prefer native Axum with AppConfig Agent, Secrets Manager and DynamoDB. Keep celld as an experimental sibling runtime while its stateful benefits and operational costs are evaluated.
This comparison assumes #414 will add DynamoDB support soon. It does not claim DynamoDB is implemented in its currently published revision, or that either deployment has production acceptance. Providing a generic DynamoDB store also does not automatically satisfy Trusted Server's stronger identity backend contract.
flowchart TD NativeALB[ALB for native deployment] --> Axum[Stateless Axum replicas across AZs] Axum --> AWSConfig[Startup snapshots from AppConfig Agent and Secrets Manager] Axum --> DDB[DynamoDB identity backend with enforced preconditions] CelldALB[ALB for celld deployment] --> Fleet[Private EC2 celld fleet across AZs] Fleet --> Owner[Binding calls route to the cell owner] Fleet --> S3[S3 deployment, lease and durable-state bucket] Owner --> S3A plausible celld starting point is three On-Demand nodes in one region, supervised processes, scoped instance roles, private peer/operator networking, ALB readiness that includes application config, and ASG lifecycle hooks for planned termination. Begin durability acceptance with
CELLD_DURABILITY=bucket; qualify peer-diskfleetmode separately. Do not expose the internal listener or assume three-AZ compute placement proves follower placement. This PR does not provision that architecture.For DynamoDB, use explicit strong reads and a schema that supports strong per-identity prefix queries on the base table, not an eventual GSI. Apply logical expiry rather than relying on asynchronous TTL deletion. Validate generation reuse, concurrent consent withdrawal and the current synchronous identity interface's integration with async SDK calls. Those remain application/backend acceptance requirements even after #414 adds provider support.
celld could become worthwhile for independently sharded transactional actors, long-lived sessions, Worker portability or non-AWS storage. A per-identity Durable Object/SQLite backend is a possible future design, but is not delivered by the current KV adapter.
No comparative latency/cost benchmark or AWS fault testing has been performed. The real localhost WASM/config demo is transport evidence, not proof of production fleet or identity correctness.
References: celld KV, security, durability/recovery, DynamoDB consistency, conditional writes, and TTL.
Validation
RUNTIME_ID=celld, KV put/get/exists/list/delete, bounded config caps, expired deadline rejection, ingress grant consumption, and a three-chunk response.CI currently reports one Fastly documentation contract failure in
static-checks:store-free production compatibilityis missing from the extracted deployment section. The test and Fastly guide are unchanged from #275, and the same assertion was reproduced at the base commit. The other deploy-action smoke jobs passed. This inherited failure is not repaired here.Local runtime observations do not certify production deadlines/cancellation, fleet recovery, streaming under load, or workload performance. No live Cloudflare deployment or full workspace-wide acceptance run was performed.
Linked issue
Closes #421.