Kurrent Platform

Event-Centric Data Platform

For Event Sourcing

For Event-Driven Architecture

For Event-Driven Microservices

Replaces Change Data Capture

Zero-Code Outbox

Built-in Stream Processing

(Almost) no Impedance Mismatch

For Event Sourcing

KurrentDB was originally built to support event sourcing. It is designed to store events in individual event streams, which can be replayed to rebuild the state of the system at any point in time. KurrentDB maintains a globally-ordered immutable log of events with an index by stream. It allows lock-free append operations and fast retrieval of events per stream or across streams.

For Event-Driven Architecture

In event-driven environments, KurrentDB serves both as the source and destination for events. It can be used to store events produced by services and to trigger actions in response to events. KurrentDB supports message distribution out of the box using connectors and persistent subscription which eliminates the need for additional infrastructure, such as message brokers.

For Event-Driven Microservices

Using events for persisting state changes allows services to be decoupled and to evolve independently. Events that are being persistent in the database, can be either directly consumed real-time by other microservices, or transformed in a stream processing pipeline to create new events or update materialized views.

Replaces Change Data Capture

KurrentDB eliminates the need for Change Data Capture (CDC) tools, which are used to capture and propagate data changes in real-time. When state changes are represented as events, subscribing to receive those events provides direct access to state changes.

Zero-Code Outbox

Many event-driven systems use the Transactional Outbox pattern to ensure that events are published in the same transaction as the state changes. KurrentDB provides a zero-code outbox, where events stored in the same database are the state changes. You won't need an outbox table or use additional libraries to manage the outbox.

Built-in Stream Processing

KurrentDB provides built-in stream processing capabilities to process events in real-time, directly in the database. You can see it as stream processing stored procedures triggered by new events. The custom projections feature allows transforming events into new events, create semantic links to original events in new streams, or updating materialized views in real-time using JavaScript code running on the server.

(Almost) no Impedance Mismatch

When working with relational databases, there's a mismatch between the way data is stored in the database and the way it's used in the application. KurrentDB offers storing state changes as events, which are simple objects that only need to be serializable to be stored and retrieved.

KurrentDB

Event-Native Database

Event-based data model reflects business processes, aligning persistence with your domain model. Gain full insight on how your data changes over time. Avoid complex ORM frameworks, outboxes and change data capture. Stream events directly from the database.

Event-Native Database
// OrderOpened
{
  "customerId": "cu-730"
}
// ItemAdded
{
  "productId": "prod-9110",
  "count": 2,
  "price": 99.99
}
// ItemRemoved
{
  "productId": "prod-9110",
  "count": 1
}
// DiscountApplied
{
  "code": "WELCOME!",
  "amount": 10
}
// PaymentReceived
{
  "amount": 89.99,
  "fullyPaid": true
}

Docs

Reference manuals, tutorials, and code samples - all in one place to help you deploy, configure, and run KurrentDB and build applications using supported clients.

Documentation

Kurrent Academy

Level up your KurrentDB skills with free courses, covering both application development and database maintenance topics.

Start learning

Community Forum

Join other developers and Kurrent engineers on our Community Forums and Discord to get advice, learn patterns and best practices, and share your projects and experience.

Join the community
Code for everyone

Simple integration

KurrentDB client libraries are available for
Java, .NET, Go, Python, Node.js, and Rust.

Three easy steps

1

Sign up for Kurrent Cloud

Use a re-use tons of responsive section to create the perfect layout.

2

Create a cluster for free

Use a re-use tons of responsive section to create the perfect layout.

3

Start hacking!

Use one of our starter tutorials, or build something amazing on your own.

New Cloud Cluster New Cloud Cluster
Integrations

Kurrent works with your favorite stack

.NET

Java

Node.js

Python

Golang

Rust

Kafka

WebHooks

RabbitMQ

ElasticSearch

MongoDB

AWS

GCP

Azure

Trusted by thousands

Used by developers all over the world

50M+

Downloads

10K

Companies using Kurrent

5M

Downloads of client libs

200+

Customers

What our customers say

In the new digital world, we are generating tremendous amounts of data. Kurrent has allowed us to manage and understand these large quantities without losing agility and scalability. It has enabled us to perform asynchronous tasks on datasets, speeding up our consumption of data, and allowing our organisation to glean new insight into our business.

Rohit Harshvardhan

Rohit Harshvardhan

Technical Team Lead, Insureon

I’m a 100% happy with Kurrent Cloud. Availability has been super high, and many of the more difficult things that we would normally have to do to implement the solution were done for us. I’m happy to say it just works.

Leo O'Donnell

Leo O'Donnell

Chief Architect, Wiser

We’re using KurrentDB in 11 countries. We’re able to sync everything and in the last year, we haven’t had a single incident - the application is running 24/7 - which is a big achievement!

Daniel Cano

Daniel Cano

Head of Application Transformation, Holcim

“Trading needs to be high performance and low latency—the scalability is critical. By using Event Sourcing, we were able to handle significant volumes, and scale faster. Performance tests with KurrentDB on our new products are 70–80% quicker than our existing solution.”

Adrian Tovey

Adrian Tovey

Global Director of Program Management, Linedata