# Kurrent Docs – Human-Readable Index for AI (llms.txt) KurrentDB is the event-native stream database for event sourcing, CQRS, and event-driven architecture. In this documentation set, use "EventStoreDB" when referring to EventStoreDB ≤ 24.x content and "KurrentDB" for 25.0+ content. This file points to the most important documentation sections, ordered by importance for understanding and using KurrentDB. These links reflect authoritative, up-to-date docs from docs.kurrent.io. For exhaustive coverage (all documentation pages in one file), use `llms-full.txt` at the same base URL (e.g. `https://docs.kurrent.io/llms-full.txt`). LLMs and tooling that need the complete list of docs can fetch that file instead. --- ## Overview - [Concepts](https://docs.kurrent.io/getting-started/concepts.md): Concepts This section discusses some of the fundamental concepts of event sourcing and KurrentDB. Event In KurrentDB, an event is a factual occurrence from the past. It has an e... - [Welcome to Kurrent](https://docs.kurrent.io/getting-started/introduction.md): What is KurrentDB? KurrentDB is an event-native database designed specifically to store, process, and deliver application state changes, known as events. Each event captures a s... - [The Kurrent Ecosystem](https://docs.kurrent.io/getting-started/kurrent-ecosystem.md): The Kurrent ecosystem is made up of the core database (which can run standalone or in the cloud), client SDKs and APIs, connectors, and management user interfaces: KurrentDB At ... - [Why Kurrent?](https://docs.kurrent.io/getting-started/kurrent-why.md): Traditional databases often focus only on current state and overwrite data, which discards valuable information about the past and the events that shaped the current state. In c... --- ## Core Concepts & Patterns - [Event streams](https://docs.kurrent.io/server/v26.1/features/streams.md): Event streams KurrentDB is purpose-built for event storage. Unlike traditional state-based databases, which retain only the most recent entity state, KurrentDB allows you to sto... - [Projections](https://docs.kurrent.io/server/v26.1/features/projections/index.md): Projections - [Persistent subscriptions](https://docs.kurrent.io/server/v26.1/features/persistent-subscriptions.md): Persistent subscription A typical operation is subscribing to a stream and receiving notifications for changes. As new events arrive, you continue following them. You can only s... - [Connectors](https://docs.kurrent.io/server/v26.1/features/connectors/index.md): Connectors - [Embedded Web UI](https://docs.kurrent.io/server/v26.1/features/admin-ui.md): Embedded Web UI The KurrentDB embedded UI is available at SERVER_IP:2113 and helps you interact with and visually manage a cluster. This guide explains the interface's tabs and ... - [Default index](https://docs.kurrent.io/server/v26.1/features/indexes/default.md): The default index is the main indexing mechanism used by KurrentDB to locate events in streams quickly. Each entry in the default index maps the stream name hash and the event n... - [Archiving](https://docs.kurrent.io/server/v26.1/features/archiving.md): Archiving Introducing Archiving KurrentDB 25.0 introduced the initial release of Archiving: a new major feature to reduce costs and increase scalability of a KurrentDB cluster. ... - [Queries UI](https://docs.kurrent.io/server/v26.1/features/queries/ui.md): Queries UI The KurrentDB Web Admin UI provides a basic interface to write and run ad-hoc queries against your event streams. This is useful for quick analysis and exploration of... --- ## Client Libraries & Examples - [.NET – Reading Events](https://docs.kurrent.io/clients/dotnet/v1.4/reading-events.md): Reading Events There are two options for reading events from KurrentDB. You can either read from an individual stream, or read from the $all stream, which will return all events... - [.NET – Getting started](https://docs.kurrent.io/clients/dotnet/v1.4/getting-started.md): Getting started Get started by connecting your application to KurrentDB. Connecting to KurrentDB To connect your application to KurrentDB, instantiate and configure the client. ... - [.NET – Appending events](https://docs.kurrent.io/clients/dotnet/v1.4/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi... - [Go – Reading Events](https://docs.kurrent.io/clients/golang/v1.1/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ... - [Go – Getting started](https://docs.kurrent.io/clients/golang/v1.1/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Go application. It covers the basic steps to connect to KurrentDB, create events, append them to stre... - [Go – Appending events](https://docs.kurrent.io/clients/golang/v1.1/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi... - [Java – Reading Events](https://docs.kurrent.io/clients/java/v1.2/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ... - [Java – Getting started](https://docs.kurrent.io/clients/java/v1.2/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Java application. It covers the basic steps to connect to KurrentDB, create events, append them to st... - [Java – Appending events](https://docs.kurrent.io/clients/java/v1.2/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi... - [Node.js – Reading Events](https://docs.kurrent.io/clients/node/v1.3/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ... - [Node.js – Getting started](https://docs.kurrent.io/clients/node/v1.3/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Node.js application. It covers the basic steps to connect to KurrentDB, create events, append them to... - [Node.js – Appending events](https://docs.kurrent.io/clients/node/v1.3/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi... - [Python – Reading events](https://docs.kurrent.io/clients/python/v1.3/reading-events.md): Reading events This guide describes Python client methods for reading events from KurrentDB. Overview The have four methods for reading events: get_stream() – returns a Python t... - [Python – Getting started](https://docs.kurrent.io/clients/python/v1.3/getting-started.md): Getting started This guide will help you get started with the Python clients for KurrentDB: Start KurrentDB locally Install the Python package Client configuration Connect to Ku... - [Python – Appending events](https://docs.kurrent.io/clients/python/v1.3/appending-events.md): Appending events This guide describes Python client methods for writing new events and records to KurrentDB. Overview The have three methods for writing new events: append_to_st... - [Rust – Reading Events](https://docs.kurrent.io/clients/rust/v1.2/reading-events.md): Reading Events KurrentDB provides two primary methods for reading events: reading from an individual stream to retrieve events from a specific named stream, or reading from the ... - [Rust – Getting started](https://docs.kurrent.io/clients/rust/v1.2/getting-started.md): Getting started This guide will help you get started with KurrentDB in your Rust application. It covers the basic steps to connect to KurrentDB, create events, append them to st... - [Rust – Appending events](https://docs.kurrent.io/clients/rust/v1.2/appending-events.md): Appending events When you start working with KurrentDB, your application streams are empty. The first meaningful operation is to add one or more events to the database using thi... --- ## APIs - [Introduction](https://docs.kurrent.io/server/v26.1/http-api/introduction.md): Introduction Overview KurrentDB provides a native interface of AtomPub over HTTP. AtomPub is a RESTful protocol that can reuse many existing components, for example reverse prox... - [Security](https://docs.kurrent.io/server/v26.1/http-api/security.md): Security KurrentDB supports basic authentication for HTTP API calls, and access control lists (ACL). Authentication Creating users KurrentDB supports basic HTTP authentication t... - [Persistent subscriptions](https://docs.kurrent.io/server/v26.1/http-api/persistent.md): Persistent subscriptions This document explains how to use the HTTP API for setting up and consuming persistent subscriptions and competing consumer subscription groups. For an ... - [Optional HTTP headers](https://docs.kurrent.io/server/v26.1/http-api/optional-http-headers.md): Optional HTTP headers KurrentDB supports custom HTTP headers for requests in the form Kurrent-*. The headers supported are: EventID When you append to a stream and don't use the... - [HTTP API Reference](https://docs.kurrent.io/server/v26.1/http-api/api.md): HTTP API Reference The Base URL used in this documentation is https://kurrent.io, you should replace it with the same url you use to view the administration UI. Authentication H... --- ## Configuration (KurrentDB Server) - [Clustering](https://docs.kurrent.io/server/v26.1/configuration/cluster.md): Highly-available cluster KurrentDB allows you to run more than one node in a cluster for high availability. Cluster member authentication KurrentDB starts in secure mode by defa... - [Networking](https://docs.kurrent.io/server/v26.1/configuration/networking.md): KurrentDB provides two interfaces: HTTP(S) for gRPC communication and REST APIs (node) TCP for cluster replication (replication) Nodes in the cluster replicate with each other u... - [Database settings](https://docs.kurrent.io/server/v26.1/configuration/db-config.md): Database settings On this page, you find settings that tune the database server behaviour. Only modify these settings if you know what you are doing or when requested by Kurrent... --- ## Installation & Deployment - [Installation](https://docs.kurrent.io/server/v26.1/quick-start/installation.md) - [Default directories](https://docs.kurrent.io/server/v26.1/quick-start/default-directories.md): Default directories The default directories used by KurrentDB vary by platform to fit with the common practices each platform. Linux When you install KurrentDB on Linux, the fol... - [Upgrade guide](https://docs.kurrent.io/server/v26.1/quick-start/upgrade-guide.md): Should you upgrade? KurrentDB 26.1 is a short term support (STS) release and will be supported until the next release. See the for further information. Upgrade to this version i... --- ## Security & Access Control - [Protocol security](https://docs.kurrent.io/server/v26.1/security/protocol-security.md): Protocol security KurrentDB supports gRPC and the proprietary TCP protocol for high-throughput real-time communication. It also has some HTTP endpoints for the management operat... - [Security options](https://docs.kurrent.io/server/v26.1/security/security-options.md): Security For production use, it is important to configure KurrentDB security features to prevent unauthorised access to your data. Security features of KurrentDB include: using ... - [User authentication](https://docs.kurrent.io/server/v26.1/security/user-authentication.md): Authentication KurrentDB provides the following means to authenticate users connecting to the database: Basic authentication is enabled by default, and allows you to authenticat... - [User authorization](https://docs.kurrent.io/server/v26.1/security/user-authorization.md): Authorization Authorization governs what an authenticated user can access and what actions they can perform based on that user's roles. Roles Users are granted roles by the . Th... --- ## Operations & Management - [Auto-Scavenge](https://docs.kurrent.io/server/v26.1/operations/auto-scavenge.md): Auto-Scavenge - [Backup and restore](https://docs.kurrent.io/server/v26.1/operations/backup.md): Backup and restore Backing up a KurrentDB database is straightforward but relies on carrying out the steps below in the correct order. Types of backups There are two main ways t... - [Renew certificates](https://docs.kurrent.io/server/v26.1/operations/cert-update.md): Certificate update upon expiry In KurrentDB, the certificates require updating when they have expired or are going to expire soon. Follow the steps below to perform a rolling ce... - [Redaction](https://docs.kurrent.io/server/v26.1/operations/redaction.md): Redaction - [Scavenging](https://docs.kurrent.io/server/v26.1/operations/scavenge.md): Scavenging In KurrentDB, events are no longer present in stream reads or subscriptions after they have been deleted or they have expired according to the metadata of the stream.... --- ## Diagnostics - [Logs](https://docs.kurrent.io/server/v26.1/diagnostics/logs.md): Database logs KurrentDB logs its internal operations to the console (stdout) and to log files. The default location of the log files and the way to change it is described below.... - [Metrics](https://docs.kurrent.io/server/v26.1/diagnostics/metrics.md): Metrics KurrentDB collects metrics in Prometheus format, available on the /metrics endpoint. Prometheus can be configured to scrape this endpoint directly. The metrics are confi... - [Integrations](https://docs.kurrent.io/server/v26.1/diagnostics/integrations.md): Monitoring integrations KurrentDB supports several methods to integrate with external monitoring and observability tools. Those include: OpenTelemetry: export metrics to an Open... - [Best Practices](https://docs.kurrent.io/server/v26.1/diagnostics/best-practices.md): Monitoring Best Practices Background When monitoring the health of a KurrentDB cluster, one should investigate and alert on multiple factors. Here we discuss them in detail Metr... --- ## Connectors Sinks (KurrentDB Server) - [Elasticsearch Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/elasticsearch.md) - [HTTP Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/http.md): Overview The HTTP sink allows for integration between KurrentDB and external APIs over HTTP or HTTPS. This connector consumes events from a KurrentDB stream and converts each ev... - [Kafka Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/kafka.md) - [MongoDB Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/mongo.md) - [Pulsar Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/pulsar.md) - [RabbitMQ Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/rabbitmq.md) - [Serilog Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/serilog.md): Overview The Serilog sink logs detailed messages about the connector and record details. The Serilog sink supports writing logs to the following outputs: Console File Seq These ... - [Sql Sink](https://docs.kurrent.io/server/v26.1/features/connectors/sinks/sql.md) --- ## Kubernetes Operator (KurrentDB Server) - [Installation](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/getting-started/installation.md): This section covers the various aspects of installing the Operator. The Operator supports installation via Helm, via Red Hat's OperatorHub and via the Operator Lifecycle Manager... - [Configuration Reference](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/getting-started/resource-types.md): The Operator supports the following resource types (known as Kind's): KurrentDB KurrentDBBackup KurrentDBBackupSchedule KurrentDB This resource type is used to define a database... - [Advanced Networking](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/operations/advanced-networking.md): KurrentDB is a clustered database, and all official KurrentDB clients are cluster-aware. As a result, there are times when a client will find out from one server how to connect ... - [Database Backup](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/operations/database-backup.md): The sections below detail how database backups can be performed. Refer to the for detailed information. Backing up the leader Assuming there is a cluster called mydb that reside... - [Example Deployments](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/operations/database-deployment.md): This page shows various deployment examples of KurrentDB, starting with a full example showing Kurrent's recommended production settings, followed by incremental examples to bui... - [Managing Certificates](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/operations/managing-certificates.md): The Operator expects consumers to leverage a third-party tool to generate TLS certificates that can be wired in to deployments using secrets. The sections below describe how cer... - [Modify Deployments](https://docs.kurrent.io/server/kubernetes-operator/v1.6.0/operations/modify-deployments.md): Updating KurrentDB deployments through the Operator is done by modifying the KurrentDB Custom Resources (CRs) using standard Kubernetes tools. Most updates are processed almost ... --- ## Kurrent Cloud - [Introduction](https://docs.kurrent.io/cloud/introduction.md): What is Kurrent Cloud? Kurrent Cloud enables seamless deployment of managed KurrentDB clusters with major cloud providers. Learn more Not using Kurrent Cloud and want to learn m... - [Backup and Restore](https://docs.kurrent.io/cloud/ops/backups.md): It is important to take regular backups of your clusters. Besides providing a safety net in case of data corruption, backups can also used for various operations, such as creati... - [Cloud instance sizing guide](https://docs.kurrent.io/cloud/ops/sizing.md): Cloud instance sizing guide Use this guide to assess the needs of your application performance, compared with the capability of a given KurrentDB instance in Kurrent Cloud. Inst... - [Events and notifications](https://docs.kurrent.io/cloud/ops/events.md): Events and notifications On the Event Console, you will find messages about issues with your provisioned resources in the Issues section and errors that happened during provisio... - [Account Security](https://docs.kurrent.io/cloud/ops/account-security.md): Multi-factor Authentication (MFA) Our MFA solution integrates exclusively with authenticator apps, offering a convenient and secure method for users to verify their identities. ... - [FAQ](https://docs.kurrent.io/cloud/faq.md): Cluster provisioning Is it possible to change the cluster instance size or topology? You can , but we do not support changing the topology of an existing cluster. If you need a ... --- ## Gaffer (Projection Development Toolkit) - [Gaffer - Projection Development Toolkit](https://gaffer.kurrent.io): Developer toolkit for KurrentDB projections - scaffold, run, debug, and test the same JavaScript projection engine that ships inside KurrentDB, locally. - [Gaffer - llms.txt](https://gaffer.kurrent.io/llms.txt): Gaffer's own AI index; use [llms-full.txt](https://gaffer.kurrent.io/llms-full.txt) for the complete Gaffer docs in one file. - [Gaffer - Install (CLI and VS Code extension)](https://gaffer.kurrent.io/getting-started/install/): Install the Gaffer CLI and VS Code extension. - [Gaffer - MCP server setup](https://gaffer.kurrent.io/cli/mcp/): Configure the `gaffer mcp` server for VS Code, Claude Code, Cursor, and Claude Desktop. - [Gaffer - Testing projections](https://gaffer.kurrent.io/testing/nodejs/): Test projections with `@kurrent/projections-testing`. --- ## Tutorials & Use Cases - [Auto-Scavenge](https://docs.kurrent.io/dev-center/tutorials/Auto-Scavenge.md): Tutorial: Using Auto-Scavenge This step-by-step tutorial guides you through using, scheduling and managing Auto-Scavenge in KurrentDB. The Auto-scavenge feature is designed to m... - [Encryption-At-Rest](https://docs.kurrent.io/dev-center/tutorials/Encryption-At-Rest.md): Tutorial: Setting up and using Encryption-At-Rest in KurrentDB The Encryption-At-Rest feature provides encryption for KurrentDB to secure database chunk files, ensuring data pro... - [Migrate from EventStore to KurrentDB Java Client](https://docs.kurrent.io/dev-center/tutorials/eventstore-to-kurrent-migration-java-client.md): Automatically migrate your Java applications from the EventStore client to the new KurrentDB client using OpenRewrite. - [HTTP Sink](https://docs.kurrent.io/dev-center/tutorials/HTTP_Connector.md): Tutorial: Setting up and using an HTTP Sink in KurrentDB Connectors simplify the integration of KurrentDB data into other systems. Each connector runs on the server-side and use... - [Kafka Sink](https://docs.kurrent.io/dev-center/tutorials/Kafka_Sink.md): Tutorial: Setting up and using a Kafka Sink connector in KurrentDB This step-by-step tutorial guides you through configuring and deploying a Kafka Sink connector in KurrentDB to... - [MongoDB Sink](https://docs.kurrent.io/dev-center/tutorials/MongoDB_Sink.md): Tutorial: Setting up and using a MongoDB Sink connector in KurrentDB This step-by-step tutorial guides you through configuring and deploying a MongoDB Sink connector in KurrentD... - [RabbitMQ Sink](https://docs.kurrent.io/dev-center/tutorials/RabbitMQ_Sink.md): Tutorial: Setting up and using a RabbitMQ Sink connector in KurrentDB This tutorial guides you through the configuration and deployment of a RabbitMQ Sink connector in KurrentDB... - [Stream Policy Authorization](https://docs.kurrent.io/dev-center/tutorials/Stream_Policy_Authorization.md): Tutorial: Setting up and using Stream Policy Authorization in KurrentDB This step-by-step tutorial guides you through enabling and configuring Stream Policy Authorization in Kur... - [Overview](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/introduction.md): Modern applications often deal with diverse data access patterns that a single database can’t efficiently handle. That’s where you can leverage a database mix-and-match approach... - [Part 1 - Setup and Initialize KurrentDB](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-1.md): Part 1: Setup and Initialize KurrentDB In this part, you will start a GitHub Codespaces session in your browser. Info GitHub Codespaces provides an instant and preconfigured dev... - [Part 2 - Project KurrentDB Events to Postgres](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-2.md): Part 2: Project KurrentDB Events to Postgres Now that KurrentDB is filled with shopping cart events, you will learn how to project these events to other databases as read models... - [Part 3 - Project KurrentDB Events to Redis](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-3.md): Part 3: Project KurrentDB Events to Redis Introducing the Redis Projection Application This application projects KurrentDB events to Redis sorted sets to calculate the top 10 pr... - [Part 4 - Project KurrentDB Events in Real-Time](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-4.md): Part 4: Project KurrentDB Events in Real-Time Now that the read models on the databases are synchronized with events on KurrentDB, you will learn how to synchronize the read mod... - [Introduction](https://docs.kurrent.io/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-intro.md): Introduction This tutorial will guide you through the Mix-and-Match Database sample with KurrentDB using GitHub Codespaces. Objectives In this tutorial, you will: Learn how to p... - [Overview](https://docs.kurrent.io/dev-center/use-cases/outbox/introduction.md): Solving Dual Writes with KurrentDBSolving Dual Writes with KurrentDB Dual Write Problem Without distributed transactions, operations that write to multiple resources are not ato... - [Summary](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial-summary.md): In this tutorial, you’ve explored how KurrentDB offers a powerful, event-driven approach to address the dual write problem — a core challenge in distributed systems where writes... - [Part 1 - Set up Codespaces](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-1.md): Part 1: Set up Codespaces In this part, you will start a GitHub Codespaces session in your browser. Info GitHub Codespaces provides an instant and preconfigured development envi... - [Part 2 - Trigger Writes to External Data Stores](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-2.md): Part 2: Trigger Writes to External Data Stores With KurrentDB, eventually consistent update to multiple resources often begin with an event that triggers the entire process. Sub... - [Part 3 - Write to a External Data Store with Persistent Subscription](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-3.md): Part 3: Write to a External Data Store with Persistent Subscription Now that the event that triggers multiple writes is appended to KurrentDB, you will learn how to handle this ... - [Part 4 - Error Handling for Writes to External Data Stores](https://docs.kurrent.io/dev-center/use-cases/outbox/tutorial/tutorial-4.md): Part 4: Error Handling for Writes to External Data Stores Writing to multiple data stores consistently is a critical challenge in distributed systems. Without proper handling, y... --- ## Release Notes / Changelog (KurrentDB Server) - [What's New](https://docs.kurrent.io/server/v26.1/quick-start/whatsnew.md): What's New New in 26.1 Features SQL API Projections V2 Connectors: Webhook Source Changes / Improvements Multi-stream Appends Improvements Persistent Subscriptions Stability and... - [Previous versions](https://docs.kurrent.io/server/v26.1/release-schedule/previous-versions.md): Previous versions - [Release notes](https://docs.kurrent.io/server/v26.1/release-schedule/release-notes.md): Release notes This page contains the release notes for KurrentDB v26.1. 26.1.0 30 April 2026 What's new Find out in this release. --- ## Community & Learning - [Kurrent – Main website](https://www.kurrent.io): Event-native data platform for event sourcing and event-driven architecture. - [Kurrent Forum](https://discuss.kurrent.io): Community forum for KurrentDB and EventStoreDB questions and discussion. - [Kurrent Blog](https://www.kurrent.io/blog): Articles, guides, and release updates. - [Kurrent Webinars](https://www.kurrent.io/webinars): On-demand and upcoming webinars. - [Kurrent Community Discord](https://discord.gg/Phn9pmCw3t): Join the Kurrent community on Discord. - [Kurrent on YouTube](https://www.youtube.com/@Kurrent_io): Video tutorials, demos, and talks. - [Kurrent on GitHub](https://github.com/kurrent-io): KurrentDB server, client libraries, and open-source projects. - [Kurrent Academy](https://academy.kurrent.io): Free self-paced and live training on KurrentDB and event sourcing.