Skip to content

Chronicle in your language

Chronicle in your language

One event-sourcing database, idiomatic clients

Chronicle is an event-sourcing database and processing runtime with a language-agnostic gRPC/protobuf boundary. That means the event store is not tied to one runtime: the first-class .NET SDK and the TypeScript, Kotlin/Java, and Elixir clients all work against the same store, the same events, and the same projections — and a Python client is coming soon. Everything is open source and MIT licensed. Client SDK docs →

The .NET SDK is the first-class Chronicle client: typed access to event stores, event logs, read models, projections, reducers, reactors, constraints, migrations, namespaces, and hosting integration — including a one-line .NET Aspire resource.

Terminal window
dotnet add package Cratis.Chronicle

@cratis/chronicle is the idiomatic TypeScript client for Chronicle, with support for transactions, jobs, webhooks, compliance/PII, and OpenTelemetry. It builds on the @cratis/chronicle.contracts gRPC contracts package.

Terminal window
npm install @cratis/chronicle

io.cratis:chronicle is the idiomatic JVM client for Chronicle, usable from Kotlin and Java alike. It ships with a Spring Boot starter and a testing library.

build.gradle.kts
dependencies {
implementation("io.cratis:chronicle:<version>")
// Or, in a Spring Boot application:
implementation("io.cratis:chronicle-spring-boot-starter:<version>")
}

cratis_chronicle is the idiomatic Elixir client for Chronicle, with transactions, optimistic concurrency, webhooks, and resilient reconnection.

mix.exs
defp deps do
[
{:cratis_chronicle, "~> 0.0"}
]
end

A Python client for Chronicle is in development. It is pre-release and not yet published to PyPI, so there is nothing to install yet — follow the repository for progress.

Every client speaks the same gRPC/protobuf contracts, so any language with a gRPC implementation can talk to Chronicle. If your runtime is not listed above, you can implement the contracts directly.