Skip to main content
Open Source Saga Orchestration

Build Reliable Distributed
Workflows in TypeScript

MassTransit-style saga orchestration for Node.js. Type-safe DSL, multiple message brokers, built-in observability.

10+Transports
8+Stores
100%TypeScript

Try It Right Now

Edit the saga definition below and watch the state machine diagram update in real-time. No setup required.

Everything You Need for
Distributed Workflows

🔷

Type-Safe DSL

Fluent builder API with full TypeScript inference. Catch errors at compile time, not runtime.

🔌

10+ Transports

RabbitMQ, Kafka, SQS, Azure Service Bus, GCP Pub/Sub, Redis, NATS, and in-memory for testing.

💾

8+ Stores

PostgreSQL, MySQL, MongoDB, DynamoDB, Redis, SQLite, SQL Server, and in-memory.

📊

Observability

Built-in OpenTelemetry tracing, Prometheus metrics, and structured logging middleware.

🔄

Compensation

Handle failures gracefully with built-in compensation patterns and retry policies.

âš¡

Framework Agnostic

Works with Express, Fastify, NestJS, Next.js, Hono, or standalone Node.js.

Up and Running
in Minutes

Install the packages, define your saga, wire up your transport and store. That's it.

1Install packages
2Define saga with DSL
3Start the bus
Read the Quick Start Guide
worker.ts
import { createBus } from '@saga-bus/core';
import { RabbitMQTransport } from '@saga-bus/transport-rabbitmq';
import { PostgresSagaStore } from '@saga-bus/store-postgres';
import { orderSaga } from './sagas/order';

const bus = createBus({
  transport: new RabbitMQTransport({
    url: process.env.RABBITMQ_URL,
  }),
  store: new PostgresSagaStore({
    connectionString: process.env.DATABASE_URL,
  }),
  sagas: [{ definition: orderSaga }],
});

await bus.start();
console.log('🚀 Saga worker running');

Ready to Build Reliable Workflows?

Join developers building production-grade distributed systems with Saga Bus.