- “Framework de workflows durables y reanudables escrito en TypeScript”
- Proporciona un motor de workflows para automatizar flujos de trabajo complejos conectando diversos servicios y APIs
- Plataforma open source modular desarrollada para resolver problemas de automatización de workflows e integración
- Incluso si el servidor cae o hay un despliegue, guarda el estado en Postgres para poder reanudar la ejecución exactamente desde el último paso
- Como cada
step.run({ name }, fn) se ejecuta solo una vez y su resultado se memoiza, al reiniciar tras un crash no vuelve a ejecutar efectos secundarios como cobros con tarjeta o envío de correos, sino que reutiliza el resultado en caché
- Sin necesidad de un servidor dedicado aparte, usa una arquitectura donde los procesos worker (
ow.newWorker({ concurrency })) consultan en la base de datos los runs pendientes y los ejecutan; así, es posible levantar varios workers para lograr alta disponibilidad y escalado horizontal, y un sleep largo como step.sleep("id", "1h") tampoco ocupa un slot del worker
- Con genéricos para entrada/salida de workflows, el campo de versión (
version: "v2"), run().result(), handle.cancel(), etc., está diseñado para manejar a nivel de código definiciones con seguridad de tipos, versionado, consulta de resultados y cancelación
- Soporta expansión y personalización con sistemas externos mediante una arquitectura de plugins
- Soporta integración con herramientas SaaS y de desarrollo importantes como OpenAI, Slack, GitHub y Notion
- Actualmente se enfoca en el backend de PostgreSQL y las funciones básicas del runtime (ejecución concurrente, retries, steps paralelos, sleep, versionado, cancelación)
- Más adelante, el roadmap incluye CLI, dashboard, idempotency key, funciones de rollback/compensación, señales (signals), OpenTelemetry, backends Redis/SQLite y SDKs para Go/Python
2 comentarios
Hace poco habían subido esto: GitHub - earendil-works/absurd: An experiment in durability https://share.google/PCjaLh3j46ayECI9b ... parece un proyecto con el mismo concepto, pero ¿a dónde fue a parar...?
Me da una sensación similar a spring batch.