9 releases (4 breaking)

Uses new Rust 2024

0.8.0 May 6, 2026
0.7.0 May 4, 2026
0.6.2 May 4, 2026
0.6.0 Apr 22, 2026
0.4.0 Feb 4, 2026

#1 in #regulated


Used in 3 crates

Apache-2.0

3MB
60K SLoC

Kimberlite

Compliance-native database for regulated industries.

Kimberlite is built on a replicated append-only log with deterministic projection to a custom storage engine. This provides:

  • Correctness by design - Ordered log → deterministic apply → snapshot
  • Full audit trail - Every mutation is captured in the immutable log
  • Point-in-time recovery - Replay from any offset
  • Compliance by construction - Built-in durability and encryption

Architecture

┌─────────────────────────────────────────────────────────────┐
│                          Kimberlite                             │
│  ┌─────────┐   ┌───────────┐   ┌──────────┐   ┌──────────┐ │
│  │   Log   │ → │  Kernel   │ → │  Store   │ → │  Query   │ │
│  │(append) │   │(pure FSM) │   │(B+tree)  │   │  (SQL)   │ │
│  └─────────┘   └───────────┘   └──────────┘   └──────────┘ │
└─────────────────────────────────────────────────────────────┘

Quick Start

use kimberlite::{Kimberlite, TenantId, DataClass};

// Open database
let db = Kimberlite::open("./data")?;

// Get tenant handle
let tenant = db.tenant(TenantId::new(1));

// Create a stream
let stream_id = tenant.create_stream("events", DataClass::Public)?;

// Append events
tenant.append(stream_id, vec![b"event1".to_vec(), b"event2".to_vec()], Offset::ZERO)?;

// Query (point-in-time support)
let results = tenant.query("SELECT * FROM events LIMIT 10", &[])?;

Modules

  • SDK Layer: Kimberlite, TenantHandle - Main API
  • Foundation: Types, crypto, storage primitives
  • Query: SQL subset for compliance lookups

Dependencies

~63MB
~1M SLoC