FAQ
This FAQ answers the questions that usually come up before a team commits to Cratis. For deeper explanations, follow the linked pages.
Where do I start if I want to build something today?
Section titled “Where do I start if I want to build something today?”It depends on what you want to see working first:
- A full-stack .NET application: follow Build a full-stack feature. It scaffolds an app from the Cratis template and adds one slice from command to live React screen.
- Only the event store: follow Chronicle getting started. It starts a local kernel and shows one event reaching a projection and a reactor in each client language.
- A reading order for your role: pick a route from Learning paths.
- A design before the code: read Event modeling. It shows the notation and how each block maps onto Cratis.
What do I need installed to try it?
Section titled “What do I need installed to try it?”Chronicle runs as a separate kernel that your application connects to. For local development the quickest route is Chronicle’s development container image, which bundles MongoDB and the Workbench, so you need Docker. Choose an application host model also covers Docker Compose and .NET Aspire.
The rest depends on your language:
| You are building | You need |
|---|---|
| The C# full-stack web template | The .NET 10 SDK, Node.js for the React frontend, and Docker |
| The Kotlin or Java full-stack template | A JDK 17 (the Gradle toolchain is pinned to Java 17 and does not download one, so a newer JDK alone fails), Node.js ^20.19.0 or >=22.12.0, and Docker |
| A standalone TypeScript, Kotlin/Java, or Elixir client | Your client’s toolchain (see its setup guide) and a running kernel |
To scaffold, you need either the .NET SDK (for dotnet new) or the Cratis CLI (for cratis new). The CLI is available as a native binary on macOS and Linux, so a Kotlin or Java project can be scaffolded there without the .NET SDK. On Windows the CLI installs as a .NET global tool, which needs the SDK. Building and running a C# project always needs the .NET SDK.
Do I have to use .NET?
Section titled “Do I have to use .NET?”No. Chronicle’s kernel speaks gRPC, and it ships TypeScript, Kotlin/Java, and Elixir clients in addition to the .NET SDK; Which languages can talk to Chronicle? lists the packages. Arc has Kotlin and Java backends on Spring Boot, and the Cratis Kotlin and Cratis Java templates scaffold a full-stack application with them. On macOS and Linux, the Cratis CLI’s cratis new can scaffold those projects without the .NET SDK installed.
The .NET SDK remains the first-class Chronicle client, and some pages document C# only.
Is Cratis only for event sourcing?
Section titled “Is Cratis only for event sourcing?”No. Chronicle is the event-sourcing engine, but Arc can be used without Chronicle for CQRS over current-state storage. Components can be used with Arc-generated proxies, and Fundamentals provides shared .NET and TypeScript utilities.
Start with Adopting Cratis and CQRS without event sourcing.
Should every feature be event-sourced?
Section titled “Should every feature be event-sourced?”No. Event sourcing is a strong default for information systems that care about history, decisions, audit, process, replay, and integration. It is not automatically worth it for static lookup tables or settings screens where the current value is the whole story.
Read When to use event sourcing and CRUD, EF Core, and Chronicle.
Can I use Chronicle without Arc?
Section titled “Can I use Chronicle without Arc?”Yes. Chronicle has its own clients and hosting model. Arc gives you an application framework around commands, queries, and generated frontend proxies, but Chronicle can be used directly from services, workers, or APIs.
Start with Chronicle getting started and Chronicle architecture.
Which languages can talk to Chronicle?
Section titled “Which languages can talk to Chronicle?”Chronicle is an event-sourcing database with a language-agnostic gRPC/protobuf boundary. The first-class client is the .NET SDK (Cratis.Chronicle on NuGet), and Chronicle also ships TypeScript (@cratis/chronicle on npm), Kotlin/Java (io.cratis:chronicle on Maven Central, including a Spring Boot starter), and Elixir (cratis_chronicle on Hex) clients, plus an experimental Go client (github.com/cratis/chronicle.go, v0.x, without observers and projections yet). A Python client is coming soon — it is pre-release and not yet published. Any language can implement the gRPC contracts directly.
See Chronicle in your language and the client SDK docs.
Can I use Arc without Chronicle?
Section titled “Can I use Arc without Chronicle?”Yes. Arc supports commands, queries, validation, generated TypeScript proxies, and integrations over current-state persistence. That is useful when you want typed full-stack CQRS before adopting event sourcing, or when a bounded slice does not need an event log.
Read CQRS without event sourcing, or see CQRS with Arc in C# and .NET, TypeScript and Node.js, and Kotlin and Java.
Is Cratis production-ready?
Section titled “Is Cratis production-ready?”The products include production-oriented pieces such as TLS configuration, storage configuration, OpenTelemetry, deployment guidance, and operational CLI diagnostics. You still need to make deliberate choices about version tags, storage, backups, secrets, identity, replay, monitoring, and incident handling.
Use Production readiness as the cross-stack checklist.
Which storage engines are supported?
Section titled “Which storage engines are supported?”Chronicle documents MongoDB, PostgreSQL, Microsoft SQL Server, and SQLite as storage options. Arc integrates with MongoDB and Entity Framework Core for application persistence.
See Chronicle storage, Arc MongoDB, and Arc Entity Framework Core.
How does Cratis compare to MediatR, MVC, EF Core, Marten, or Wolverine?
Section titled “How does Cratis compare to MediatR, MVC, EF Core, Marten, or Wolverine?”Cratis is not a single library replacement. Chronicle is an event-sourcing engine; Arc is a CQRS and proxy-generation framework; Components is a React library built around those generated contracts. The comparisons are about architecture shape more than API surface.
- Comparing event stores: for a head-to-head, read KurrentDB vs Chronicle or Marten vs Chronicle. Compare event sourcing for .NET covers KurrentDB, Marten, and Chronicle, and Compare event sourcing on the JVM covers Axon Framework, KurrentDB, and Chronicle. Each names the versions it compared; How Cratis writes comparisons lists every comparison.
- Coming from MediatR or MVC controllers: MediatR, MVC, and Arc.
- Coming from EF Core and tables: CRUD, EF Core, and Chronicle.
Wolverine appears in the .NET comparison as the Critter Stack’s messaging and web framework next to Marten; there is no separate Wolverine-to-Arc comparison.
What does Cratis cost, and what license is it under?
Section titled “What does Cratis cost, and what license is it under?”Everything Cratis publishes today is MIT licensed and free to use — Chronicle, Arc, Components, the CLI, the clients, and the supporting libraries. There is no paid tier for the software itself. If you want dedicated, private help, see Professional help.
Can I use AI coding agents with Cratis?
Section titled “Can I use AI coding agents with Cratis?”Yes. Cratis AI gives an agent the conventions, the Chronicle MCP server and the CLI let it inspect a running store, and specifications check what it writes. The MCP server is read-only by default. Agentic development with event sourcing explains the model and what is still experimental; AI-native development covers the setup.
Where do I ask for help?
Section titled “Where do I ask for help?”Use Community and help for open questions, Feedback and suggestions for product and docs feedback, GitHub issues for durable bugs and feature requests, and Professional help when you need private, dedicated time.
Where do I see what changed?
Section titled “Where do I see what changed?”Use What’s new for curated release digests and links to repository releases.