Skip to main content
Featured project · Namastack Outbox

Reliable foundations for event-driven systems.

Namastack provides open-source infrastructure for building dependable event-driven applications. Namastack Outbox is the first available project.

build.gradle.kts
// Native Namastack Outbox setup
dependencies {
    implementation(platform("io.namastack:namastack-outbox-bom:1.9.x"))
    implementation("io.namastack:namastack-outbox-starter-jpa")
}
Brand philosophy

What is Namastack?

Namastack is the umbrella brand for open-source infrastructure tools for modern distributed applications. Today, that work is represented by Namastack Outbox.

Reliability

Infrastructure that is designed around failure, recovery, and durable state.

Failure aware

Consistency

Clear transactional boundaries keep state changes and outgoing work aligned.

Transactional

Production readiness

Operational behavior, configuration, and observability are part of the design.

Operable

Simplicity

Focused APIs fit the Spring ecosystem without requiring another platform.

Developer focused

Open source

The available project is developed in public under the Apache License 2.0.

Apache 2.0
Available open-source project

Namastack Outbox

A transactional outbox library for Spring Boot. It persists business data and outgoing work in the same local transaction, then processes committed records asynchronously. Delivery is at least once, so duplicate delivery is possible and consumers should be designed to be idempotent.

Explore the product
Architecture flow

How it works

  1. Stage 01

    Application transaction

    Business data and the outbox record are persisted in one local transaction.

    @Transactional
  2. Stage 02

    Commit

    The committed outbox record becomes durable work ready for processing.

    Durable state
  3. Stage 03

    Partitioned processing

    Workers poll committed records and coordinate across application instances.

    Partition aware
  4. Stage 04

    Handler execution

    The matching handler runs while records with the same key stay ordered.

    Per-key ordering
  5. Stage 05

    Completion or retry

    Success completes the record; failures follow the configured retry strategy.

    At least once
OrderService.ktKotlin · Spring transaction
// Business state and outgoing work commit together
@Transactional
fun createOrder(command: CreateOrderCommand) {
    val order = orderRepository.save(Order.create(command))
    outbox.schedule(
        payload = OrderCreatedEvent(order.id, order.customerId),
        key = "order-${order.id}"
    )
}
Core capabilities

Engineered for production resilience

The documented building blocks for moving committed work from storage to its destination.

Reliable delivery

At-least-once delivery with configurable retries and fallback handling. Consumers should be idempotent.

Strict ordering

Records that share a key retain their processing order across polling cycles.

Horizontal scaling

Partition-aware processing coordinates work safely across multiple application instances.

Flexible persistence

Choose JPA, JDBC, or MongoDB to fit the persistence model already used by the application.

Messaging integrations

Publish through Kafka, RabbitMQ, and Amazon SNS integrations, or implement a custom handler.

Observability

Micrometer metrics, distributed tracing, and context propagation cover the asynchronous boundary.

Spring Modulith integration

Use Namastack as the outbox behind Spring Modulith events.

Namastack Outbox is an independent library. Spring Modulith applications can use the official starter to externalize events through Namastack's persistence, processing, retry, ordering, and observability model.

Read the integration guide
Spring Modulithspring-modulith-starter-namastackNamastack OutboxJPA · JDBC · MongoDB
Built on standard foundations

Open infrastructure

Technology choices and project signals you can inspect directly.

Apache 2.0Open-source license
Spring BootNative application integration
Java & KotlinJVM language support
JPA · JDBC · MongoDBPersistence choices
MicrometerMetrics and observations
Public developmentIssues and discussions on GitHub

Build reliable event-driven systems with confidence.

Use Namastack Outbox to close the dual-write gap in your Spring Boot application.

Support the work

Namastack Outbox is independently developed and maintained as open-source software. Sponsorship supports maintenance, documentation, integrations, and long-term stability.