Skip to content

fricker-studios/stele-db

Stele

ci nightly release docker hub MSRV license

A from-scratch, append-only, bitemporal, audit-native analytical database engine.

A stele is an inscribed stone slab that preserves a record permanently — and, in botany, the central column of a plant. Both meanings are the design: a permanent, append-only record built around a columnar core.

Stele treats history as the primary key of reality. Every fact is stored with when it was true in the world (valid time) and when the system learned it (system time), and nothing is ever destructively overwritten. On that foundation, "what did this table look like last Tuesday, as we understood it at month-end close?" is a first-class query — not an archaeology project.

It competes on correctness, time-travel, and auditability for analytical and temporal/audit workloads.

The thesis in four SQL statements

CREATE TABLE account (id INT PRIMARY KEY, balance INT) WITH SYSTEM VERSIONING;
INSERT INTO account VALUES (1, 100);
UPDATE account SET balance = 250 WHERE id = 1;
SELECT balance FROM account FOR SYSTEM_TIME AS OF (now() - interval '1 second') WHERE id = 1;
--   → 100   (time-travel: the value *before* the update — history is never destroyed)

Try it

docker run --rm -p 5454:5454 frickerstudios/stele:latest --dev   # or ghcr.io/fricker-studios/stele
psql -h localhost -p 5454 -d stele

Then paste the four statements above — give the engine a beat between the UPDATE and the time-travel SELECT, so there is a second of history to travel back to. Prebuilt binaries (Linux/macOS/Windows) are on the releases page, every artifact cosign-signed with SLSA provenance; to build from source, just build (05 — Dev Environment).

Status

⚠️ Pre-1.0 · working engine · API stabilizing · holds no production data. Stele is a deliberately long-horizon, no-deadline craft project. Correctness and auditability come before speed, and before any real data — see the trust gate. v0.1.0 and v0.2.0 have shipped: stele-server speaking the PostgreSQL wire protocol, the stele CLI/REPL, bitemporal AS OF on both time axes, multi-statement transactions with snapshot isolation, joins and aggregates, and signed multi-arch Docker images — see the CHANGELOG and releases.

At a glance

Language Rust (edition 2024)
Wire protocol PostgreSQL-compatible (default port 5454) — bring your existing drivers/ORMs/BI tools
Storage Append-only columnar segments · object-storage tiering · system-time-driven archival
Differentiators Bitemporality · as-of/time-travel · lineage & provenance · tamper-evident audit · hash-keyed MERGE
Security A first-class pillar: encryption + KMS/BYOK, RBAC/RLS/CLS, crypto-shredding erasure
License BSL 1.1 → Apache-2.0 (rolling 4-year), source-available

Documentation

The complete vision, architecture, and plan live in /docsstart with the Charter.

License

Business Source License 1.1, converting to Apache License 2.0 four years after each release. Source-available and self-hostable; see 07 — Licensing & OSS. Stele is source-available, not OSI open-source — we say so plainly.

About

Append-only, bitemporal, audit-native analytical database engine — time-travel, provenance, and auditability as first-class. Rust, Postgres-wire compatible.

Topics

Resources

License

Unknown, Apache-2.0 licenses found

Licenses found

Unknown
LICENSE
Apache-2.0
LICENSE-APACHE

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages