celld, un daemon open source para ejecutar Durable Objects en infraestructura propia
La organización Deno Land Inc., responsable del runtime Deno, presentó celld, un daemon de código abierto que permite ejecutar Cloudflare Workers y Durable Objects sobre infraestructura propia, sin depender de la plataforma de Cloudflare. El proyecto, alojado en el repositorio github.com/denoland/celld, se posiciona como una alternativa de autoalojamiento para desarrolladores que buscan mantener el modelo de programación de Durable Objects —cada objeto como una unidad de estado con identidad y persistencia— pero recuperar el control sobre dónde y cómo se ejecutan sus aplicaciones.
El concepto central de celld es que cada Durable Object, al que denomina "cell" (celda), constituye una pequeña base de datos SQLite independiente, identificada por nombre y replicada de forma continua en un bucket compatible con S3 que el usuario controla. Los nodos de la flota se coordinan exclusivamente a través de ese bucket, eliminando la necesidad de un plano de control centralizado, un protocolo de membresía, un detector de fallos o un servicio de consenso. La propiedad de cada celda se otorga mediante una operación atómica de compare-and-swap sobre el almacenamiento de objetos, lo que garantiza que un único nodo sea dueño de una celda en un momento dado. Cuando un nodo falla o una celda debe migrar, el nuevo propietario restaura la base de datos SQLite desde el bucket y reanuda la ejecución en cuestión de segundos, según describe la documentación en celld.dev.
Cada nodo de celld integra un motor V8 y ejecuta los bundles generados por Wrangler, la herramienta de despliegue de Cloudflare Workers. El despliegue se realiza con el comando celld deploy, que internamente invoca a esbuild para empaquetar el código del Worker y acepta un subconjunto de la configuración de Wrangler, incluyendo proyectos con activos estáticos. La flota ejecuta una única aplicación, y todos los nodos cargan la versión más reciente desplegada desde el archivo deploy/current.json en el bucket.
La instalación es sencilla: un script en celld.dev/install.sh descarga el binario con procedencia verificable mediante gh attestation verify, y existen imágenes Docker publicadas para Linux x86-64 y ARM64 en ghcr.io/denoland/celld. El runtime utiliza la cadena estándar de credenciales de AWS, lo que facilita su integración con proveedores como AWS S3, Cloudflare R2 o cualquier servicio compatible con la API de S3. La configuración en producción requiere precauciones de seguridad adicionales: las direcciones de los pares no terminan TLS, por lo que la documentación recomienda desplegar la flota en una red privada confiable o mediante una overlay cifrada como WireGuard o Tailscale. Toda comunicación entre nodos está autenticada con HMAC, vinculada al cuerpo del mensaje, con versiones de protocolo y protección contra replay.
El proyecto incorpora además un sistema de diagnóstico (celld diagnose) que enumera los leases de cada nodo, realiza sondas firmadas contra pares activos y reporta métricas como celdas residentes, conexiones WebSocket, uso de RSS, CPU y descriptores de archivo. También ofrece un mecanismo de "pressure shedding" opcional que, al alcanzar ciertos umbrales de memoria o CPU, replica y expulsa las celdas inactivas menos usadas recientemente, publicándolas como no poseídas sin restablecer su época. Las celdas con trabajo activo o WebSockets vivos no se ven afectadas por este proceso.
No obstante, el anuncio deja claras algunas limitaciones. El repositorio advierte que la superficie del runtime y su compatibilidad con el comportamiento de referencia de Workers y Durable Objects "siguen evolucionando", y dirige a los usuarios a consultar las páginas de limitaciones y seguridad antes de operar una flota en producción. La organización no acepta pull requests en GitHub —una decisión que, según explica el README, busca evitar cambios grandes y de bajo contexto generados por agentes de codificación—, aunque invita a enviar contribuciones mediante parches por correo electrónico a ry@deno.com, sujeto a un acuerdo de licencia que cede los derechos a Deno Land Inc.
En un contexto donde la dependencia de plataformas cloud managed se ha convertido en una preocupación creciente para equipos técnicos y responsables de cumplimiento normativo, celld propone un enfoque singular: aprovechar el modelo de Durable Objects, considerado robusto por la comunidad, pero devolver la tenencia del estado, la ubicación y la evidencia operativa a la infraestructura que el propio equipo elige y opera. Como resume la página oficial, la flota seguirá dependiendo de sus máquinas, su red y su proveedor de almacenamiento, pero lo que cambia es la tenencia: ya no hay un scheduler compartido de Durable Objects que actúe como caja negra, sino leases, registros y replicación que el usuario puede inspeccionar y auditar. El proyecto se publica como una primera release cuyos valores por defecto seguros aún se están calibrando, y su adopción en entornos de producción dependerá de la evolución de su conformidad con el comportamiento de referencia de Workers y de los resultados de las simulaciones deterministas del protocolo distribuido que el equipo ejecuta antes de cada lanzamiento.
