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

In an ASP.NET Core application, add Cratis.Chronicle.AspNetCore instead; it brings in the core SDK and the AddCratisChronicle / UseCratisChronicle hosting integration.

@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 reflect-metadata

The client uses decorators, so your project also needs experimentalDecorators and emitDecoratorMetadata enabled and must be an ES module project. The TypeScript landing page lists the setup.

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>")
}

Replace <version> with the current release from Maven Central.

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

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

Use the current version from Hex; mix hex.info cratis_chronicle prints it.

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.

The clients other than .NET are released on their own schedules, and their major version numbers do not match the kernel’s. Compatibility explains how to pair a client with a kernel.