// the take
KurrentDB (the project formerly known as EventStoreDB, now rebranded under the Kurrent name) is a purpose-built event-sourcing database with a gRPC-based streaming API, built-in projections, and persistent subscriptions. It's for teams doing CQRS/event-sourcing who want a database that treats the event log as the source of truth rather than bolting event sourcing on top of Postgres or Kafka.
The append-only stream model with optimistic concurrency via expected version checks is genuinely well-designed for event sourcing, and it's been battle-tested in production for over a decade under its original name. Persistent subscriptions give you competing-consumer semantics with ack/nack and retry without needing a separate queue. Projections (continuous, JS-based) let you build read models server-side instead of always doing it in application code. gRPC clients exist for .NET, Java, Node, Go, Rust and Python, so you're not locked into one ecosystem.
Licensing is the first thing to check before adopting: recent versions ship under Kurrent's own source-available license, not an OSI-approved one, with restrictions on offering it as a competing hosted service — read LICENSE.md closely if you're building anything commercial on top. The projections engine runs on an embedded V8 instance, which adds a real operational surface (memory, crashes, debugging JS inside a C# process) that teams unfamiliar with it tend to underestimate. The company's rebrand from EventStoreDB to Kurrent mid-project means docs, client repo names, and NuGet/package names are in flux, and legacy .NET clients are being sunset after v23.10 LTS, so anyone on an older client has a forced migration ahead. Running a real HA cluster also means learning scavenging, chunk management, and replication behavior that aren't optional once you're past a single dev node — this isn't a database you can treat as a drop-in replacement for a relational store.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →