By developers, for developers.
Focus on your product.
Whether it's a greenfield project, an existing codebase, or just an exploration — Using Resonate is delightful every step of the way.
Spin up your first worker with zero extra services (No Resonate Server required). Keep local development dependency-free while you explore the APIs.
Use a local Resonate Server to enable reliability and scalability features.
Enable your workers to survive restarts and crashes simply by connecting to the server.
Call functions in other services as easily as local functions, synchronously or asynchronously.
Use Resonate's defaults or swap in your own message transport layer, such as Kafka, RabbitMQ, or AWS SQS.
Deploy your Resonate workers in serverless environments like AWS Lambda or Google Cloud Functions for automatic scaling and reduced operational overhead.
Make use of out-of-the-box observability, privacy, and security tools and features for production-level deployments.
Deploy as many Resonate Servers as your application needs. Both workers and servers can be added or removed dynamically to match demand.
Implements the open Distributed Async Await spec and the Async RPC protocol so discovery, load balancing, and recovery are transparent.
Suspend a workflow for minutes or months while you wait for a human (or agent) to weigh in, then resume exactly where you left off.
from resonate import Resonate
from threading import Event
resonate = Resonate.remote(host="http://localhost", group="worker")
def send_email(_, promise_id):
"""
simulates sending an email by printing a message to the terminal
"""
email_content = f"to unblock the workflow, click the link below:\n http://localhost:5001/unblock-workflow?promise_id={promise_id}"
print(email_content)
@resonate.register()
def foo(ctx, workflow_id):
blocking_promise = yield ctx.promise()
yield ctx.lfc(send_email, blocking_promise.id)
print(f"workflow {workflow_id} blocked, waiting on human interaction")
# wait for the promise to be resolved
yield blocking_promise
print(f"workflow {workflow_id} unblocked, promise resolved")
return {"message": f"workflow {workflow_id} completed"}
def main() -> None:
resonate.start()
print("worker running")
Event().wait()
if __name__ == "__main__":
main()Connect with the engineers building resilient systems today. Share feedback, see what's shipping next, and learn how teams are scaling with Resonate in production.
Deep dives, release notes, and field reports from the team.
Share ideas, swap implementation patterns, and hang out with engineers shipping Resonate in production.
Active right now
…
Check in for live threads and real-time support
Stars help us reach more developers and signal which SDKs matter most. Plus, you'll stay in the loop as we ship new features.
Provided by Kapa.ai, the leading AI developer support system, helps helps you ship faster with Resonate.

A full list of links to all of our resources.
© 2025 Resonate HQ, Inc.