Overview
What is Redelay?
Redelay is a modular, event-driven application framework for building distributed services. It provides a unified layer for:
- Event publishing and consuming with pluggable transports (Kafka, NATS, Redis Streams) and schema validation
- Distributed cron scheduling with leader election
- Multi-database connectivity (MongoDB, ClickHouse, Redis)
- Native FlowDSL integration for describing orchestration topology
Why Redelay?
Building event-driven systems in production typically involves writing the same infrastructure code over and over: topic resolution, consumer group management, retry logic, schema validation, health checks. Redelay packages all of this once and exposes a clean, idiomatic API — in Go today, and in Python and Node.js as those SDKs land.
More importantly, Redelay separates what your code does (node implementations) from how events are routed (flow topology). The topology lives in .flowdsl.yaml files — readable by humans, renderable as diagrams in FlowDSL Studio.
Framework layers
redelay/
├── go-framework Go app bootstrap, module registry, auth, users,
│ OpenAPI, MCP, HTTP server, chi routing
│
├── go-events Go Kafka/NATS/Redis transports, typed event handlers,
│ AsyncAPI schema validation, EventBus
│
├── go-flowdsl Go FlowDSL toolchain — IR, parser, validator,
│ compiler, runtime engine
│
├── go-modules Opt-in addon modules — scheduler, settings, storage,
│ notifications, flowexec, metrics, and more
│
├── py-framework Python SDK — coming soon
├── py-events Python event library — coming soon
├── js-framework Node.js SDK — coming soon
└── js-events Node.js event library — coming soon
Relationship to FlowDSL
Redelay is the reference runtime for FlowDSL:
| FlowDSL concept | Redelay implementation (Go) |
|---|---|
node (source) | Event published by a Redelay service |
node (action) | bus.Register(&ConsumerRegistration{...}) / typed handler |
edge (durable) | Kafka topic with at-least-once delivery |
packet | Typed Go struct encoded as JSON |
flow | .flowdsl.yaml file read by the Redelay runtime |
The AsyncAPI schema that Redelay auto-generates is the bridge: FlowDSL references it to resolve packet schemas, and services validate incoming events against it. When the Python and Node.js SDKs ship, they will consume the same AsyncAPI contract.
Ecosystem at a glance
.flowdsl.yaml ← topology declaration (source of truth)
│
▼
Redelay runtime ← routes events to the right handler
│
├── go-events ← bus.Register(&ConsumerRegistration{...})
├── py-events ← coming soon
├── js-events ← coming soon
└── AsyncAPI ← auto-generated, served at /asyncapi.json