For an event store for event-sourced apps, the strongest matches are eventstore/eventstore (KurrentDB formerly EventStore is a dedicated event-native database that), apache/kafka (Apache Kafka is a distributed commit log and event) and railseventstore/rails_event_store (Rails Event Store is a Ruby library that implements). travisjeffery/jocko and rabbitmq/rabbitmq-server round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
High-performance storage engines and frameworks designed for implementing event sourcing patterns in distributed software systems.
KurrentDB is an event-native database designed for event sourcing and event-driven architectures. It stores application state as an immutable, ordered sequence of events rather than updating rows in place, preserving full history for audit, replay, and distributed consistency. The database combines event storage with real-time streaming and a built-in JavaScript projection engine that transforms and aggregates event streams into materialized views. The system provides official gRPC client libraries for Python, Node.js, Java, .NET, Go, and Rust, enabling multi-language application development
KurrentDB (formerly EventStore) is a dedicated event-native database that stores application state as an immutable append-only log, purpose-built for event sourcing with built-in projections, event subscriptions, and multi-language clients — it fully matches the search for an append-only event store optimized for event sourcing.
Kafka is a distributed event streaming platform designed for capturing, storing, and processing real-time data streams across interconnected nodes. It functions as a distributed commit log, providing a fault-tolerant storage mechanism that records state changes sequentially to ensure data consistency and durability across distributed environments. The platform distinguishes itself through a partitioned commit log architecture that enables horizontal scaling and parallel processing of data streams. It integrates a stream processing engine for continuous transformations and aggregations, while
Apache Kafka is a distributed commit log and event streaming platform that provides an append-only log for capturing and replaying event streams, making it a viable backbone for event-sourcing architectures, though it lacks built-in projections and atomic multi-aggregate commits.
Rails Event Store is a library for implementing event sourcing and command query responsibility segregation patterns within Ruby applications. It functions as a framework for capturing all application state changes as an immutable sequence of events, providing a permanent and verifiable history of system operations. The library provides a messaging infrastructure that decouples business logic by broadcasting domain events through a central bus. This architecture allows for the execution of handlers either immediately or asynchronously, ensuring that heavy processing tasks do not block the pri
Rails Event Store is a Ruby library that implements an append-only event store on top of a relational database, providing event streams, aggregates, replay, projections, and subscriptions — it is exactly the kind of tool for event sourcing in Rails, though it is not a standalone database.
Jocko is a cloud-native event streaming platform and distributed commit log implemented in Go. It functions as a distributed message broker that ensures data durability and high availability by replicating record sequences across a cluster. The system is designed as a Zookeeperless event streamer, utilizing built-in consensus coordination to manage cluster state and leader election without requiring external coordinator services. It implements the Kafka wire protocol, allowing it to communicate with existing ecosystem clients and tools. The platform provides capabilities for distributed log
Jocko is a distributed commit log and event streaming platform compatible with Kafka, providing an append-only log and message streaming, but it is not specifically designed as an event store for event sourcing with aggregates, projections, and atomic commits — it is more of a message broker that could be used as a building block in such architectures.
RabbitMQ is a multi-protocol messaging broker that functions as an AMQP message broker, a clustered message queue, and a distributed message stream. It provides a server for translating and bridging communication between diverse messaging standards to connect heterogeneous systems. The system distinguishes itself through distributed broker clustering and federation, using shoveling mechanisms to synchronize data across geographically separate sites. It supports high-throughput, append-only logs for persisting and reading large sequences of messages for real-time processing. The broker covers
RabbitMQ is a message broker with append-only log and stream features, but it is not a dedicated event store for event sourcing — it lacks built-in aggregate storage, projections, and atomic commits over multi-stream transactions that define the category.
Cadence is a distributed workflow orchestration engine designed to execute long-running, asynchronous business logic with built-in durability and resilience across distributed systems. It functions as a stateful process manager that ensures processes resume from their last known state following system crashes or network outages. The platform utilizes a distributed task queue to manage work across independent worker nodes and supports persistence via SQL or Cassandra backend storage. It includes a workflow visualization dashboard for inspecting execution histories and state traces, alongside a
Cadence is a distributed workflow orchestration engine that uses event history for stateful workflow execution, but its core purpose is long-running business logic orchestration rather than serving as a dedicated append-only event store for event-sourcing architectures.
Chronicle Queue is a high-performance data handling system featuring off-heap message queues, memory-mapped file stores, and replicated message stores. It provides a binary compatible memory layout that enables different programming languages to share data without serialization overhead. The system utilizes a replicated message store to synchronize data across multiple nodes, ensuring high availability and instant failover. Its memory-mapped architecture supports deterministic replay from disk and low-latency data recording. The project implements off-heap memory management and zero-allocati
Chronicle Queue is a high-performance low-latency queue with append-only log storage and replay, which can support event-sourcing patterns but is not a dedicated event store designed for event streams, aggregates, and projections.
Automerge is a distributed state synchronization engine and library for conflict-free replicated data types. It enables multiple nodes to perform concurrent updates to a shared dataset while guaranteeing that all replicas eventually converge to the same state. The project provides a high-performance implementation written in Rust to manage state merging and synchronization. It employs a byte-compressed synchronization protocol to transmit minimal delta updates between peers, facilitating data consistency in peer-to-peer and real-time collaborative environments. The system covers broad capabi
Automerge is a CRDT-based state synchronization library for real-time collaboration, not a dedicated append-only event store database for event sourcing—it focuses on distributed state merging rather than persistent event streams, replay, and projections.
Memvid is an embedded memory framework designed to provide persistent, versioned context for intelligent agents. It functions as a local vector database library that stores all data within a single binary file, removing the need for external database infrastructure or network dependencies. The system distinguishes itself by integrating in-process vector indexing with append-only versioning, allowing for high-speed semantic similarity searches alongside the ability to track and roll back state changes over time. It includes built-in transparent data encryption and masking to secure sensitive i
Memvid is an embedded vector database with append-only versioning designed for AI agent memory, not a dedicated event store for event-sourcing architectures—it lacks event streams, replay, projections, and subscriptions as core primitives.
immudb is a tamperproof database that maintains an immutable record of entries using cryptographic commit logging. It ensures verifiable database integrity by utilizing Merkle trees to generate membership and consistency proofs that detect unauthorized data alterations. The system employs a multi-model storage engine that unifies key-value, document, and relational data structures within a single immutable backend. It provides compatibility with the PostgreSQL wire protocol, allowing it to integrate with standard SQL clients, ORMs, and database tools. The project covers broad capabilities in
immudb is a tamperproof immutable database that supports append-only logging and cryptographic verification, but it is a general-purpose database rather than a dedicated event store—it lacks built-in event stream management, projections, and event subscriptions needed for event-sourcing architectures.
OrbitDB is a decentralized data storage system that enables the creation of serverless databases residing across a network of peers. It functions as a peer-to-peer database that integrates with a content-addressed storage layer to distribute and replicate data without a central server. The system utilizes conflict-free replicated data types to ensure eventual consistency and state convergence across distributed nodes. It maintains an immutable record of updates using a directed acyclic graph to preserve causal ordering and cryptographic integrity. Access is managed through a decentralized ide
OrbitDB is a peer-to-peer database with an append-only Merkle-DAG log, but it is a general-purpose decentralized storage system rather than a dedicated event store built around event-sourcing concepts like aggregates, projections, and replay.
Livestore is a reactive state management framework that utilizes a local SQLite database to store and synchronize application data. It provides an event-sourced state store that processes typed events through materializer functions to derive and persist application state. The framework implements offline-first data synchronization using a push-pull engine and append-only event logs to maintain consistency between clients and servers. It includes a real-time presence system for tracking user activity and shared session status across connected clients. The system covers a broad capability surf
Livestore is a reactive state management framework that uses an append-only event log and event sourcing internally, but it is not a standalone, dedicated event store database optimized for storing immutable event streams — it is a higher-level framework for building offline-first applications.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| eventstore/eventstore | 5.8K | C# | NOASSERTION | |
| apache/kafka | 32.8K | Java | Apache-2.0 | |
| railseventstore/rails_event_store | 1.5K | Ruby | mit | |
| travisjeffery/jocko | 5K | Go | MIT | |
| rabbitmq/rabbitmq-server | 13.7K | JavaScript | NOASSERTION | |
| uber/cadence | 9.3K | Go | Apache-2.0 | |
| openhft/chronicle-queue | 3.7K | Java | apache-2.0 | |
| automerge/automerge | 6.4K | JavaScript | MIT | |
| memvid/memvid | 15.7K | Rust | Apache-2.0 | |
| codenotary/immudb | 9K | Go | NOASSERTION |