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.
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)docker run --rm -p 5454:5454 frickerstudios/stele:latest --dev # or ghcr.io/fricker-studios/stele
psql -h localhost -p 5454 -d steleThen 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).
⚠️ 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-serverspeaking the PostgreSQL wire protocol, thesteleCLI/REPL, bitemporalAS OFon both time axes, multi-statement transactions with snapshot isolation, joins and aggregates, and signed multi-arch Docker images — see the CHANGELOG and releases.
| 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 |
The complete vision, architecture, and plan live in /docs — start with the Charter.
- 00 — Charter — vision, scope, non-goals, principles
- 01 — Feature Plan · 02 — Architecture · 03 — Roadmap
- 04 — CI/CD · 05 — Dev Environment · 06 — Testing Strategy
- 07 — Licensing & OSS · 08 — Packaging & Distribution · 09 — Ecosystem & Products
- 10 — Security & Compliance · 11 — Operations & Runbooks · 12 — Data Migration & Interop
- 13 — Glossary · 14 — Performance & Benchmarking · 15 — Commercialization & Sustainability
- Architecture Decision Records · Assumptions log
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.