Durable execution is a published specification

Run Resonate on what you already operate.

The protocol asks for two primitives: durable storage and an atomic compare-and-swap. Three storage paradigms have them — SQL databases, a wide-column store, and a message broker. The four implementations below are built on those three.

SQL

The core server

Postgres · SQLite · MySQL

The reference implementation. A single statically-linked binary that speaks the HTTP/JSON protocol, SQLite for local dev and Postgres or MySQL in production.

Apache 2.0

Get started →

Message broker

Durable Execution on NATS

JetStream · NATS-native

An implementation on NATS JetStream where NATS is both storage and transport. Workers reach it over a NATS connection, so it needs a NATS-aware client.

Source-available · BUSL-1.1

Read more about NATS →

Wide-column

Durable Execution on ScyllaDB

ScyllaDB · CQL

An implementation on ScyllaDB, one row per promise across many small partitions. It speaks the same HTTP/JSON protocol as the core server, so existing SDKs work unchanged.

Source-available · BUSL-1.1

Read more about ScyllaDB →

SQL

Durable Execution on Postgres

Postgres · pg_cron

An implementation that is one SQL file — the database is the server, and Postgres becomes storage, queue, and timer at once. Where the core server uses Postgres, this one is Postgres.

Apache 2.0

Read more about Postgres →

Bring your own provider.

The specification is public. Implement it against your platform, or tell us what you run and we’ll help you get there.