Resonate is in the Design Phase
Our code base is constantly evolving as we are exploring Resonate's programming model. If you are passionate about a dead simple developer experience, join us on this journey of discovery and share your thoughts.
Resonate offers a programming model that allows you to build distributed applications using an intuitive paradigm you already know — async await.
Distributed Async Await extends the async await programming model beyond the boundaries of a single process and makes distributed computing a first-class citizen.
Resonate is currently in active development without a formal release cycle. We welcome early adopters to experiment with the latest build from main as we work towards our first stable release. Your feedback is greatly appreciated.
OS | Architecture | Link |
---|---|---|
MacOS | x86_64 | Install |
MacOS | aarch64 | Install |
Linux | x86_64 | Install |
Linux | aarch64 | Install |
Resonate makes it easy to get started creating and interacting with durable promises. Follow these steps to build and run Resonate, then start creating and completing promises.
-
Build and Run
The resonate server supports
http
andgrpc
protocols as well assqlite
andpostgres
as a data store.# Build go build -o resonate # Start ./resonate serve
Once running, you'll see log output like:
time=2023-01-01T00:00:00.000-00:00 level=INFO msg="starting http server" addr=0.0.0.0:8001 time=2023-01-01T00:00:00.000-00:00 level=INFO msg="starting grpc server" addr=0.0.0.0:50051 time=2023-01-01T00:00:00.000-00:00 level=INFO msg="starting metrics server" addr=:9090
-
Create a Promise
On a separate terminal, create a durable promise.
# Create a promise with data, headers and tags resonate promises create foo --timeout 1h --data foo --header bar=bar --tag baz=baz
-
Complete a Promise
Finally, complete the promise by resolving or rejecting.
# Resolve a promise with data and headers resonate promises resolve foo --data foo --header bar=bar
# Reject a promise with data and headers resonate promises reject foo --data foo --header bar=bar
Resonate provides client SDKs for different programming languages to easily interact with the Resonate server and write elegant distributed async await applications. More are coming soon!
Type | Language | Source Code | Package |
---|---|---|---|
TS SDK | https://github.com/resonatehq/resonate-sdk-ts | NPM |
See our contribution guidelines.
go run ./...
go test -v ./...
The Resonate Server is available under the Apache 2.0 License.