New — the Centauri Gateway & Console: an API + LLM gateway whose config is bi-temporal facts and whose per-request audit is tamper-evident — SSE streaming, provider failover, per-key token metering, OIDC JWT + mTLS. How it compares to Kong, Apigee, AWS & Tyk →

✦ Centauri — own your data, your AI, and your gateway.

A system of record that can prove its history, a private AI that runs on your hardware, and an API gateway with a tamper-evident audit — one zero-dependency binary. $0, forever, under The PostgreSQL License.

Windows · macOS · Linux · one-click Render blueprint · Centauri by JacobLabs LLC · jacoblabs.ai
For decision makers

Five outcomes. One binary.

Centauri gives an organization a record it can prove, an AI it can trust with sensitive data, and an API layer it can audit — at a software cost of zero. The executive case, with the proof one click away:

🧾

Provable compliance

When a regulator or auditor asks “what did you know, and when?”, the answer is a query, not a six-week forensics project. Every record is sealed into a tamper-evident hash chain, and bi-temporal time travel reconstructs any past moment exactly as it was believed then.

proof: centauri verify re-proves the whole history byte-for-byte · how →
🔐

Data sovereignty

AI answers are computed on your hardware, from your documents. Nothing is uploaded, nothing phones home. Cloud models exist as an option — per-provider keys, off by default, clearly labeled when data would leave the machine.

proof: runs fully offline / air-gapped · the local-AI appliance →
💰

Radical TCO

The software is $0, forever. It runs on a laptop or a $5–20/month VM — where comparable API platforms bill per gateway service, per million calls, and per environment. No per-seat, per-request, or control-plane fees.

proof: the cost table below · full pricing →
🔓

Vendor independence

The PostgreSQL License — use it for anything, commercially, free, no copyleft. Zero third-party dependencies, and your data lives in plain files your own engineers can read. Leaving Centauri costs one file copy.

proof: the empty require block in go.mod is public · verify it →
⚡

5-minute deployment

One binary. Run the installer or one curl | sh; centauri desktop detects your hardware and sets up the local AI models automatically. Prefer cloud? One-click Render blueprint with HTTPS and a generated token.

proof: no config files, no cluster, no DBA · quickstart →

What an API layer costs to run — at a glance

CentauriKong KonnectGoogle ApigeeAWS API Gateway
Software / platform, per year$0≈$1,260+/yr per gateway service (Plus)Enterprise ≈$30k–50k+/yr entry≈$4,380+/yr per environment/region$0 base fee
Per-request feesnone1M req/mo included, ≈$200 per extra 1M≈$20 per 1M calls≈$1.00/M (HTTP) · ≈$3.50/M (REST)
Infrastructurea laptop or ≈$5–20/mo VMyour data-plane hosts + SaaS control planemanaged (Google Cloud)managed (AWS only)

Indicative public list pricing, mid-2026 — verify with each vendor; enterprise contracts vary. AWS is the cheapest per call at scale, but AWS-locked, and audit/analytics are separate services you assemble. Details: Pricing & Licensing · gateway comparison →

Pricing & licensing

The software is $0. Forever.

Centauri is open source under The PostgreSQL License — an OSI-approved permissive license that lets you use, copy, modify, and distribute the software for any purpose, including commercial, free of charge and with no copyleft obligations. Copyright JacobLabs LLC and contributors. There is no paid edition: the binary you download is everything.

🆓

What you pay JacobLabs

$0. No per-request fees, no per-seat fees, no per-service fees, no separate control-plane bill, no paid tiers, no telemetry. The enterprise features — SSO, HA, sharding, the gateway, the Console — are in the same free binary.

🖥

What you actually pay for

The machine it runs on — hardware you likely already have: a laptop, a ~$5–20/month VM at any host, or the one-click Render blueprint. RAM sized to your live working set is the main knob.

☁️

The only metered option

The optional cloud AI boost — GLM-5.2 (z.ai), OpenAI GPT-5.5, or Anthropic Claude — is pay-per-use to that provider, with your own key. It is off by default; the local models are free and stay on your machine.

How that compares

CentauriKong Konnect PlusKong Konnect EnterpriseGoogle Apigee (PAYG)AWS API Gateway
Software / license$0 — The PostgreSQL Licensesubscriptioncustom contractpay-as-you-gopay-per-use
Entry price$0≈$105/mo per gateway serviceincl. 1M requests/mo≈$30k–$50k+/yr entrynegotiatedenvironment fees from ≈$365/mo per regionno base fee
Per-callnone≈+$200 per additional 1M requestscontracted≈$20 per 1M calls≈$1.00/M HTTP APIs · ≈$3.50/M REST APIs
Typical extrasoptional cloud-LLM usage, billed by the model provider, off by defaulthigher tiers for advanced pluginssupport org, SLAs, multi-DCsecurity/analytics add-ons extraaudit/analytics assembled from separate AWS services
What you hostone binary — laptop / small VM / Renderyour data planes; control plane is SaaSmanagedmanaged, AWS-locked

Sources: Kong Konnect, Google Cloud Apigee, and AWS API Gateway public pricing pages — indicative list prices as of mid-2026. Enterprise contracts vary widely; verify with the vendors before budgeting.

What you give up vs the paid platforms — honestly:
  • A commercial support organization. Kong, Google, and AWS sell 24×7 support and someone to call. Centauri support is GitHub issues and the docs — there is no support org today.
  • A plugin marketplace. Kong has hundreds of plugins plus custom-plugin SDKs. Centauri's middleware is built in (CORS, header transforms, IP filters, body caps, path blocks), plus programmable CePL request policies and webhook callouts — capable, still not a marketplace.
  • A managed SLA. Apigee and AWS run the service with contractual uptime. You run Centauri yourself — HA failover ships in the binary, but the pager is yours.
  • Raw throughput. Kong's tuned NGINX core and the hyperscaler edges outrun Centauri's Go stdlib proxy at very high volume; writes are single-writer per log, and the working set is RAM-resident unless the archive tier is on.
  • An identity provider. Centauri validates OIDC JWTs and mTLS client certs, and issues service tokens via client-credentials; human login flows still need your IdP.
Feature matrix

Where Centauri fits — and where it doesn't

Centauri is the flight recorder beside your operational stores, not a Postgres replacement. The unvarnished picture, ✗ and all. Coming from Oracle? There is a concept-by-concept teardown — redo/undo, SCN, flashback, RAC, Data Guard mapped to Centauri's internals: Centauri internals vs Oracle →

CentauriPostgreSQLDatomicEventStoreDBSQLite
Bi-temporal (valid + transaction time)✓✗~✗✗
Nothing ever erased✓✗✓✓✗
Causal links as data✓✗✗✗✗
Tamper-evident hash chain✓✗✗✗✗
Topology / TDA operators✓✗✗✗✗
Native BM25 + hybrid search✓~✗✗~
Built-in MCP for AI agents✓✗✗✗✗
Local vision ingest (images/PDFs)✓✗✗✗✗
Runs a free local LLM for search & Q&A✓✗✗✗✗
Single binary, zero deps✓✗✗✗✓
Horizontal scale / sharding + HA failover✓shards + auto-failover~✓✓✗
Data larger than RAM✓lazy index✓✓✓✓
SQL access~read-only + Postgres wire✓✗✗✓
Enterprise SSO + row-level security✓OIDC/JWT, RLS, masking~✗✗✗
Honest limits: writes are single-writer per log (the hash chain is sequential by design) — Centauri is a system of record, not a high-contention multi-writer OLTP engine. serve -shards scales write throughput across subjects, serve -ha-lease adds automatic failover, and the lazy index serves data beyond RAM; there's no cost-based optimizer, and the SQL exposed over the PostgreSQL wire is read-only (writes use CeQL). The vision & local-LLM features orchestrate a model you run (free, e.g. Ollama) over HTTP — the engine bundles no model and stays zero-dependency. Full detail: how it compares →
API gateways

Centauri Gateway vs Kong, Apigee, AWS & Tyk

centauri gateway is an API + LLM gateway whose configuration is bi-temporal facts and whose request audit is a tamper-evident chain. The full honest matrix — including everything Kong and the clouds do better — is on the gateway comparison page. The short version:

Centauri GatewayKong (OSS + Konnect)ApigeeAWS API Gateway
Config modelbi-temporal factstime-travel any past config with AS OFdeclarative / DB / consoleversioning via GitOps, not the gateway~proxy revisions~console / IaC + stages
Tamper-evident request audit✓hash chain + centauri verify✗logs via plugins~managed analytics + audit logs~assemble CloudTrail / CloudWatch
LLM routing: SSE streaming · failover · per-key token metering✓metering as queryable facts✓AI-gateway plugin suite~emerging LLM features~assemble with Bedrock / Lambda
Plugin ecosystem & k8s ingress✗fixed built-in middleware; no ingress controller✓hundreds of plugins, Ingress Controller, mesh~~AWS-native integrations instead
Price of entry indicative public pricing, mid-2026$0+ a small VM you run≈$105/mo per gateway serviceEnterprise ≈$30k–50k+/yr≈$365/mo/region + ≈$20/M calls≈$1.00–3.50 per 1M callsAWS-locked
Full gateway comparison →  Gateway guide →
What is Centauri?

One engine, the jobs of many databases.

Modern AI stacks bolt together a document store, a vector database, a search cluster, a graph, and an audit ledger — then spend their lives keeping them in sync. Centauri is a single binary that covers all of it, because every fact is stored once with its time, cause, source, and trust. Here's how it maps to the tools you already know — and where it goes further.

📄

Document store

Schemaless facts with nested JSON values, dot-path queries (WHERE addr.city='EU') and optional schemas — like MongoDB. Difference: every change is versioned and nothing is ever overwritten.

🧠

Vector database

Built-in embeddings, cosine SIMILAR, and hybrid keyword+vector SEARCH for RAG — like pgvector / Pinecone. Difference: vectors live beside provenance and time, so you can search as of the past.

⏱️

Time-series, doubled

Two clocks on every fact — valid time and transaction time. Difference: ask not just what was true at a moment, but what you believed then — bi-temporal replay no time-series DB offers.

🔗

Graph database

Causes are first-class edges; WHY / EFFECTS and MATCH traverse the lineage — like Neo4j. Difference: the graph is about why things happened, not just references.

🔒

Ledger, blockchain-grade

A SHA-256 hash chain seals every record; centauri verify proves the history is byte-for-byte intact. Difference: blockchain-grade tamper-evidence with no blockchain, no tokens, no consensus tax.

🔎

Search engine

Ranked BM25, multi-signal scoring (recency · trust · causal centrality), and full-text — like Elasticsearch. Difference: one binary, bi-temporal, and it explains why a hit ranked where it did.

The thread that ties it together: Centauri is built for AI agents — a native MCP server means an agent uses all of the above directly, with grounded, point-in-time, provenance-aware memory. One zero-dependency binary you run yourself — not five systems to license, host, and reconcile. It's the system of record beside your operational database, not a replacement for it.

Own your data

Your data. Your hardware. Your rules.

Oracle makes you rent your data's home and pay per core. Centauri flips that: the engine is free, and your data lives wherever you control — never on our servers. Oracle-grade memory for what happened, when, why, and how much to trust it — without the license, and on infrastructure you own. How Centauri's internals compare to Oracle, in detail →

💾

Runs where you control

Your laptop, your server, a USB stick, a NAS, a synced folder (OneDrive, Google Drive, Dropbox), or your own S3-compatible bucket (AWS/MinIO/R2/B2) as a verifiable cold tier. Never a vendor's cloud.

🪙

No license, no per-core fees

Free and open source. No seats, no cores, no support contract — you pay only for the hardware you already own.

🔓

Zero lock-in

One open file (JSONL) you can read, move, back up, or delete; an open query language; centauri export any time. Walk away with everything.

Honest status: your data is one portable file you point -data at — local disk, USB, NAS, or a synced folder — with a single-writer lock (safe on shared/synced storage) and centauri merge to reconcile copies edited on two devices. --lazy keeps payloads on disk so a dataset can exceed RAM, and the disk-backed lazy index serves archives larger than memory. Cold data seals into compressed segments that push to an S3-compatible bucket (stdlib request signing, Merkle-verified on fetch) — shipped today. See how the storage engine works →
Vision & local AI

Let an AI see your files — locally, for free.

Drop in an image or a PDF — an electrical drawing, a scanned form, a photo. A vision model running on your machine reads it; Centauri stores the file (content-addressed, on disk — never in the log), the model's structured description, and a vector embedding — all as facts you can query. No Firestore, no object store, no API bill, nothing leaving your computer. Centauri even installs and runs the model for you.

👁️

Vision ingest

Upload images or PDFs (POST /v1/assets or the Studio's 📎 panel). Blobs are content-addressed on disk, PDF pages are rendered, and a vision model describes & embeds each one with ENRICH asset:* USING vision.

🔎

Semantic search

SEARCH 'inventory stockout' OF asset:* embeds your query and ranks by meaning blended with keyword — and it searches the AI's descriptions too. Find the right drawing without the exact words.

💬

ASK your data (RAG)

ASK 'what do my drawings say about the 200A panel?' retrieves the most relevant facts and a local LLM answers — with citations to the source events. Private "chat with your data."

🗣️

Plain English → CeQL

The ✨ Copilot turns natural language into real CeQL — deterministic rules first, then the local LLM for the rest, re-parsed so a suggestion is never invalid.

📦

Zero-step setup

centauri desktop detects your hardware, installs Ollama + a PDF renderer if missing, pulls the right model tier, registers the models, and turns on auto-embed — skipping whatever's already there. centauri desktop then starts the model with Centauri and stops it on exit.

🆓

Free & private

Runs on free, open Ollama models sized to your hardware — from gemma3:4b + nomic-embed-text on a laptop to glm-4.7-flash + bge-m3 + gemma3:27b vision on a 24 GB+ GPU. The engine stays zero-dependency; the model is reached over plain HTTP. Your documents never leave the machine.

Model tiers & the cloud boost: centauri desktop picks a preset for your hardware — small (~8 GB laptop: gemma3:4b + nomic-embed-text), balanced (12–16 GB GPU: qwen3:14b + bge-m3), max (24 GB+: GLM-4.7-Flash, a 30B-MoE, MIT-licensed GLM with a 200K context, + bge-m3 + gemma3:27b vision). The dashboard's AI panel shows live status dots and offers optional cloud boosts — GLM-5.2 (z.ai), OpenAI GPT-5.5, or Anthropic Claude, each with its own per-provider key — off by default and explicitly labeled, because with them your questions leave the machine. GLM-5.2 cannot run locally: its weights need 200+ GB.

The loop: Upload → ENRICH → SEARCH / ASK. Your electrical drawings, contracts, and photos become searchable by what's in them — the kind of thing teams normally wire up Firestore, an object store, and a cloud vision API to do. Here it's one local binary. Setup: vision-setup.md · features: ai-features.md.

Ask Centauri

Ask a question — get an answer and the query.

This assistant indexes the entire page — every reference entry, example, and feature — and answers with Centauri's own BM25 search. No LLM, no API key, no token cost: it runs entirely in your browser, and it's the same engine you'd self-host. Ask about the product, or pose a data question and watch it become a query.

🤖 Centauri Assistant powered by Centauri SEARCH (BM25) · 0 tokens · runs in your browser
AI, natively

How an agent actually uses Centauri.

Centauri exposes a native MCP server with 20 typed tools, so an agent calls the database directly — no string-building, no SQL injection, no glue. Here's a real interaction.

Agent ↔ Centauri (MCP)
user → agent
Why is item 100001 cheaper at the register than head office thinks?
// the agent calls one MCP tool — no query string to build centauri_context({ "subject": "item:100001/store:4001" })
// Centauri returns one structured bundle the agent can reason over { "facts": { register: 1799, storecentral: 2199 }, "disagreements": { price_cents: [1799, 2199] }, "pending": [{ facet: "register", effective: "2026-03-10", recorded: "2026-03-12", activated: false }], "confidence": 0.92 }
agent → user
The register shows $17.99 but head office (storecentral) still shows $21.99. A markdown effective Mar 10 reached the register but storecentral never activated it — that's the disagreement. Fix: re-distribute the markdown to storecentral, or retire the stale $21.99 fact.

1 · Text or typed AST — agent's choice

// humans write CeQL text…
FACTS OF item:100001/store:4001 AS OF '2026-03-15' WHY

// …agents emit the same query as a typed JSON AST —
// no parsing, no injection, just a tool call:
{ "kind":"facts", "subject":"item:100001/store:4001",
  "as_of": 1742000000000000, "why": true }

2 · Hybrid retrieval for RAG

// embed the user's question as an event, then blend
// keyword (BM25) + vector recall in one call:
SEARCH 'late markdown register' OF item:*
  SIMILAR TO evt:user_question ALPHA 0.5

// top hits become grounded context for the model

3 · Leak-free training features

# Python SDK — features exactly as known then,
# so the model can't peek at the future:
row = db.context("item:100001/store:4001",
                 known_at="2026-03-01")
# no label leakage, no train/serve skew

4 · Common agent tool calls

centauri_ceql("PENDING pdt OLDER THAN 21 DAYS")
centauri_asof({subject, at, known_at})  // decision replay
centauri_trace({event, direction:"cause"}) // WHY
centauri_genesis({scenario})        // build a DB

5 · Connect any LLM over HTTP (Gemini, GPT, Claude…)

# expose ONE tool that POSTs CeQL — works with any model
curl -s localhost:7771/v1/query \
  -H 'Authorization: Bearer TOKEN' \
  -d '{"q":"FACTS OF item:100001/store:4001 WHY"}'

6 · Gemini function calling (Python)

# pip install google-generativeai requests
import google.generativeai as genai, requests
def centauri_query(ceql: str) -> str:
    """Run a CeQL query against Centauri and return JSON."""
    return requests.post("http://localhost:7771/v1/query",
        headers={"Authorization": "Bearer TOKEN"},
        json={"q": ceql}).text
m = genai.GenerativeModel("gemini-2.0-pro", tools=[centauri_query])
chat = m.start_chat(enable_automatic_function_calling=True)
print(chat.send_message(
  "What did item:100001/store:4001 cost on 2026-03-01?").text)
# Gemini auto-calls centauri_query(ceql) and grounds its answer.

7 · OpenAI / GPT (function calling)

# same centauri_query() as above; register it as a tool
tools=[{"type":"function","function":{
  "name":"centauri_query",
  "parameters":{"type":"object",
    "properties":{"ceql":{"type":"string"}}}}}]
OpenAI().chat.completions.create(model="gpt-4o", tools=tools, messages=[...])
# then dispatch the tool call to centauri_query(args["ceql"])

8 · Claude / Anthropic (MCP — zero code)

# Claude speaks MCP natively — just add this to the config:
{ "mcpServers": {
    "centauri": { "command": "centauri", "args": ["mcp"] }
} }
# Claude Desktop/Code now has all 20 Centauri tools. No code.

9 · Grok / xAI (OpenAI-compatible)

from openai import OpenAI
client = OpenAI(api_key="XAI_KEY",
                base_url="https://api.x.ai/v1")  # model "grok-2"
# same centauri_query tool. Identical pattern works for
# Mistral, Together, Groq, Fireworks, OpenRouter, DeepSeek…

10 · Local / self-hosted LLMs (Ollama, LM Studio, vLLM)

from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1",  # Ollama
                api_key="ollama")                       # model "llama3.1"
# same centauri_query tool — fully offline & private.
# LM Studio → :1234/v1 · vLLM → :8000/v1 · llama.cpp → :8080/v1

All 20 MCP tools are documented in The CeQL Book · the JSON AST is the same shape CeQL parses to, so anything you can type, an agent can emit.

Quickstart

From zero to querying in 60 seconds.

No server to configure, no schema migration to run. Download, seed sample data, and start asking questions of time, cause, and trust.

1 · Install & run

# macOS / Linux
curl -fsSL https://centauridb.com/install.sh | sh
centauri seed                 # load demo data
centauri desktop              # dashboard + local AI, auto-sized to your hardware

# Windows: double-click run-centauri.bat — builds, opens the
# dashboard, and offers (once) to set up local AI Vision

# optional: let an AI read your images & PDFs, all local
centauri setup vision -install

2 · Ask questions in CeQL

-- what is true now
FACTS OF item:100001/store:4001

-- what we believed last month about last week
FACTS OF item:100001/store:4001
  AS OF 'last week' AS KNOWN AT '2026-03-01'

-- why did it change? ranked search? the shape of it?
FACTS OF item:100001/store:4001 WHY
SEARCH 'late markdown' OF item:*
SHAPE OF item:* ON price_cents
Capabilities

One binary. A lot of database.

No extensions to install, no services to wire up — everything below ships inside a single executable with zero third-party dependencies.

⏳

Bi-temporal core

Two clocks on every fact. Nothing is updated or deleted — a change is a new, superseding fact. Ask AS OF any moment, or AS KNOWN AT to replay a past decision fairly.

🔗

Causal & tamper-evident

Causes are first-class links — WHY walks the chain. A SHA-256 chain seals every record; centauri verify proves your history is byte-for-byte intact.

🔎

Search & retrieval

Native ranked SEARCH (BM25), semantic SIMILAR over embeddings, and hybrid keyword+vector — the recall of semantics with the precision of keywords.

🧮

Built-in topology

Persistent homology & sheaf consistency as operators: SHAPE, CONSISTENCY, CYCLES, DRIFT — clusters, loops, voids, periodicity, and drift no row store can see.

🤖

Built for AI agents

A native MCP server lets agents speak CeQL directly. Plain-English compiles to queries with no tokens. AS KNOWN AT gives leak-free training features. Genesis builds a database from a description.

🖥

Batteries included

A Studio IDE (object explorer, causal-graph view, edit-as-a-fact), a one-screen Console (/console) for the whole suite, a psql-style shell, EXPLAIN ANALYZE, doctor diagnostics, CDC + replication slots, the PostgreSQL wire protocol (read-only SQL for psql/BI), sharding + HA auto-failover, scoped-token security, CePL procedures, chain-verified backups, and Python / Go / JS SDKs.

🛡

API & LLM gateway

centauri gateway — a reverse proxy whose routes and keys are bi-temporal facts (config time-travels with AS OF) and whose per-request audit is hash-chained. API keys, OIDC JWT validation, mTLS, per-key/per-IP rate limits, built-in middleware, programmable CePL request policies, webhook auth callouts, and a client-credentials token issuer (/gw/token + JWKS; service tokens only) — plus an LLM gateway with SSE streaming, provider failover, model pinning, and per-key token metering as queryable facts. Scale out with -control-follow; Prometheus metrics; mint keys in the Console (/console). vs Kong, Apigee, AWS, Tyk →

Playground

Play with the ideas — no install.

These run entirely in your browser, using the same logic that runs inside Centauri.

Time travel — “what did we believe, and when?” item:100001/store:4001
—
Plain English → CeQL
Tamper-evident history

Edit any record and watch centauri verify catch it.

✓ centauri verify — history intact
↺ reset history
Documentation

CeQL reference

One query language for time, cause, trust, shape, and meaning. Every statement below is documented in full — with a Rosetta Stone from SQL, Cypher, Mongo and more — in The CeQL Book.

StatementWhat it doesExample
FACTS OFCurrent facts about a subject (one per facet); add projections, WHERE, GROUP BY, ORDER BY.FACTS OF item:100001/store:4001
AS OFTime travel — what was true at a given moment (or “yesterday”, “10 days ago”).FACTS OF toy:robot AS OF '2026-03-15'
AS KNOWN ATThe second clock — what you believed at a past moment. The audit query.… AS OF '2026-03-15' AS KNOWN AT '2026-03-01'
HISTORY OFThe full, never-erased timeline of a subject.HISTORY OF item:100001/store:4001
WHY / EFFECTSWalk the causal graph — what led to an event, or what it caused.FACTS OF toy:robot WHY DEPTH 3
MATCH newCausal pattern search across the WHY graph — which things led to which, by link type.MATCH item:* CAUSES register:* VIA TRIGGERED
PUT / CORRECT / RETIREWrite a fact, fix one, or retire it — all append-only; history is kept.PUT toy:robot SET price_cents=500
SNAPSHOT / ROLLBACK newName a point, then rewind to it — rollback appends auditable reversion facts (never erases) and rewinds any past commit.ROLLBACK TO SNAPSHOT 'before-import'
DIFF newWhat changed between two moments — preview before you roll back.DIFF OF item:* BETWEEN '2026-03-01' AND '2026-03-15'
PENDING / DISAGREEOperational integrity: changes sent but never activated; systems that disagree.PENDING pdt OLDER THAN 21 DAYS
SEARCH newRanked full-text (BM25) across subjects and text values; hybrid with vectors via SIMILAR TO.SEARCH 'late markdown' OF item:*
SIMILAR TOSemantic search over embeddings — events that look like this one.SIMILAR TO 0193fa2e-77c1 TOP 5
SHAPE topologyPersistent homology of a value cloud: clusters (B₀), loops (B₁), voids (B₂), periodicity.SHAPE OF item:* ON price_cents
CONSISTENCY topologySheaf consistency across a subject's facets — agreement clusters + the outlier.CONSISTENCY OF item:1/store:9 ON price_cents
CYCLES / DRIFT topologyCycles in the causal graph (integrity); distribution drift over time.DRIFT OF item:* ON price_cents BUCKETS 6
ENRICH newRun a model over events and cache the result as a fact — embeddings or text, via your own LLM endpoint.ENRICH ticket:* USING summarize ON body AS summary
ASK newPrivate RAG — retrieve the most relevant facts, have the local model answer, cite the source events.ASK 'which invoices from Acme are overdue?'
CONTEXT FOREverything an AI needs in one call: facts, history, causes, disagreements, confidence.CONTEXT FOR item:100001/store:4001
WATCHA standing query — stream new facts as they commit.WATCH ALL FACET pdt
DEFINE SCHEMA / RUNVersioned validation schemas; run CePL stored procedures with a step trace.RUN duty_estimate WITH item='100001'
EXPLAIN ANALYZE newShow a query's access path, and run it to report row count and timing.EXPLAIN ANALYZE FACTS OF item:*

Beyond the language, the single binary ships a Studio IDE (object explorer, editor, causal-graph view, inline edit-as-a-fact), a psql-style centauri shell, EXPLAIN ANALYZE, CDC with resumable replication slots, and scoped tokens (subject-prefix row-level security) — all detailed in The CeQL Book.

Coming from SQL?

You already know most of CeQL.

The everyday operations map almost one-to-one — then CeQL adds what SQL can't express. The full mapping (Oracle, PostgreSQL, MongoDB, Cypher, KSQL) is in the Rosetta Stone.

SQLCeQL
SELECT * FROM t WHERE id = 42FACTS OF item:42
SELECT price, trust … WHERE price > 700FACTS price_cents, trust OF item:* WHERE price_cents > 700
INSERT / UPDATE … SET price = 500PUT item:42 SET price_cents=500 — insert & update are one act
DELETE FROM t WHERE id = 42RETIRE item:42 — history kept; no hard delete
GROUP BY facet, AVG(price)FACTS facet, AVG(price_cents) OF item:* GROUP BY facet
ORDER BY price DESC LIMIT 10FACTS … ORDER BY price_cents DESC LIMIT 10
CREATE TABLE / column typesDEFINE SCHEMA price (price_cents number REQUIRED …)
WHERE col LIKE '%markdown%'SEARCH 'markdown' OF item:* — ranked, not just matched
AS OF SYSTEM TIME '2026-03-15'FACTS OF item:42 AS OF '2026-03-15'
stored procedureRUN duty_estimate WITH item='100001'
audit log / temporal tableHISTORY OF item:42 — built in, never erased
JOINcausal links + CONTEXT FOR item:42 — no table joins

What CeQL adds that SQL can't: AS KNOWN AT (replay what you believed, not just what was true), WHY / EFFECTS (causal lineage), SHAPE / CONSISTENCY / DRIFT (topology), tamper-evident verify, hybrid keyword+vector SEARCH, and a native agent interface (MCP).

Integrations

Get data in and out — without lock-in.

Centauri is the system of record beside your operational stores, so moving data across the boundary is first-class. Two open paths: native Airbyte connectors and a resumable change stream.

⤵

Airbyte destination

Point any of Airbyte's 300+ sources — Postgres, MongoDB, Stripe, Salesforce, files — at the Centauri destination, and every row lands as a bi-temporal fact. One connector instead of N importers.

⤴

Airbyte source

Stream facts out to any warehouse or lake. It rides the CDC endpoint, so Centauri's byte-offset cursor becomes Airbyte incremental state — only new facts, never duplicates.

🔁

Change Data Capture

GET /v1/changes?from=<cursor> returns committed facts in order plus a cursor to resume from. Tail the database from any language; the append-only log is the stream.

The connectors are standalone (pure-stdlib Python, no Airbyte CDK) and never link into the single binary — the zero-dependency core is untouched. Connector source & quickstart →

SDKs & procedures

Use it from your language — or teach it procedures.

Talk to Centauri with a zero-dependency client for Python, Go, or JavaScript — or over plain HTTP/MCP from anything. Insert and update are the same call; reads, time travel, context, and CDC are one method each.

🐍

Python

db = Centauri(token="…")
db.add("toy:robot", {"price_cents": 500})
db.get("toy:robot")
db.context("toy:robot")   # agent bundle
db.run("reprice", item="toy:robot", pct=90)
🐹

Go

c := centauri.New(url,
  centauri.WithToken("…"))
c.Add("toy:robot",
  map[string]any{"price_cents": 500})
c.Query("FACTS OF item:* WHERE region='EU'")
🟨

JavaScript / TS

const db = new Centauri(url, {token:"…"});
await db.add("toy:robot", {price_cents: 500});
await db.query("FACTS OF toy:robot WHY");
await db.run("reprice", {item:"toy:robot"});

Procedures live in the database — that's CePL

CePL is not Python — it's Centauri's tiny, near-English procedure language (think PL/SQL for the agent era). A procedure is stored as a versioned fact and run by name, returning a full step-by-step trace. Reach for the SDKs or an MCP agent when you need general-purpose code; reach for CePL when the logic belongs next to the data.

PROCEDURE reprice(item, pct)
  LET cur = FIRST FACTS OF ${item}
  WHEN cur IS MISSING: FAIL 'unknown item ${item}'
  LET newp = cur.price_cents * pct / 100
  PUT ${item} SET price_cents=${newp} REF 'proc:reprice'
  RETURN newp
END

Any language also works over HTTP (POST /v1/query) or natively via the MCP server. Full details & the CePL chapter are in The CeQL Book; SDK source is in /sdk.

Examples across domains

The same operators, everywhere.

Centauri isn't a retail tool — the subjects are just names. Here's how each capability reads in healthcare, finance, security, ML, IoT, and more. Every query is real CeQL.

AS KNOWN ATHealthcare
What labs did the clinician actually have when they prescribed?
-- decision replay: the chart as it was that day
CONTEXT FOR patient:8842/encounter:0421
  AS KNOWN AT '2026-02-10'
AS OF · AS KNOWN ATFinance / audit
Reconstruct the desk's positions exactly as believed at the close.
-- regulators ask "what did you know, and when?"
FACTS OF position:*/desk:fx
  AS OF '2026-03-15 16:00 EST'
  AS KNOWN AT '2026-03-15 16:00 EST'
WHYSRE / observability
What chain of changes caused the checkout outage?
-- walk the causal graph to the root
FACTS OF incident:5521 WHY DEPTH 6
EFFECTSSecurity
A credential was phished — what did the attacker reach?
-- forward blast radius from one event
EFFECTS event:cred-leak-77 DEPTH 8
SEARCH · BM25IT / support
Find past incidents about TLS handshake timeouts.
-- ranked full-text, not substring
SEARCH 'tls handshake timeout' OF incident:*
SEARCH · hybridRAG / knowledge
Ground the model — keyword + meaning over the runbooks.
-- BM25 recall + vector semantics in one call
SEARCH 'pod crashloop oom' OF runbook:*
  SIMILAR TO evt:user_question ALPHA 0.5
SHAPE · topologyFraud
Are these transfers forming a ring, not isolated outliers?
-- persistent homology finds the loop a
-- threshold rule would miss
SHAPE OF transfer:* ON amount, velocity
SHAPE · MAXDIM 2IoT / telecom
Do our sensors leave an uncovered hole in the field?
-- a void (Betti-2) = a coverage gap
SHAPE OF sensor:* ON lat, lon, range MAXDIM 2
SHAPE · WINDOWCardiology
Is this heart rhythm periodic — or arrhythmic?
-- a clean loop = regular rhythm; a broken
-- one flags arrhythmia (time-delay embedding)
SHAPE OF signal:ecg/patient:8842 ON mv WINDOW 40
DRIFTML Ops
Has the model's input distribution drifted since training?
-- topological drift across time buckets
DRIFT OF feature:churn_v3/* ON value BUCKETS 8
CONSISTENCY · sheafHealthcare
Do EHR, pharmacy & lab agree on this patient's potassium?
-- which system is the outlier, by how much
CONSISTENCY OF patient:8842/lab:potassium
  ON value EPS 0.2
CYCLESFinancial crime
Is money flowing in a circle (layering)?
-- a directed cycle in the money graph
CYCLES IN CAUSES OF transfer:*
PENDING · DISAGREEDevOps / config
Which config pushes were sent but never took effect on a host?
-- the silent rollout that never landed
PENDING host OLDER THAN 2 DAYS
DISAGREE ON config_hash
verify · hash chainCompliance / forensics
Prove this chain-of-custody log was never altered.
# recomputes the SHA-256 chain byte-for-byte
$ centauri verify
chain head: 7f3a… · 1,284,902 records · intact ✓
Download

Get Centauri

Ready-to-run installers and binaries — one self-contained file with the engine, dashboard, textbook, topology, search, and Genesis. Select your operating system:

🪟Windows
🍎macOS
🐧Linux
☁️Cloud

All builds, every version & checksums live on GitHub Releases. If a direct link 404s, the latest release is still building (or not published yet).

⬇ centauri-windows-setup.exelatest · Windows 10/11 · 64-bit
Run it like any app: Start menu → Centauri → your browser opens with the dashboard.
Portable instead? centauri-windows-amd64.exe → run centauri desktop · checksums

Install with one line (auto-detects Apple Silicon or Intel):

curl -fsSL https://centauridb.com/install.sh | sh
Then: centauri desktop. Direct: Apple Silicon · Intel · checksums

Install with one line (amd64 & arm64 auto-detected):

curl -fsSL https://centauridb.com/install.sh | sh
Then: centauri desktop. Direct: linux-amd64 · linux-arm64 · checksums
🚀 Deploy to Renderhosted · HTTPS · your account
One click spins up a hosted Centauri with a generated access token. Any Docker host works too — see the deployment guide.