Welcome to RelataDB
RelataDB is a governed temporal knowledge database — policy, provenance, and bi-temporal history are in the query path, not bolted on top.
What makes it different
- Bi-temporal rows — every record carries
valid_from/toandsystem_from/to. Travel to any point in history withAS OF. - Identity resolution — cross-source entity matching built into the query language (
LOOKUP_IDENTITY,RESOLVE_IDENTITIES,PATHS_BETWEEN). - Built-in governance — Cedar-inspired ABAC, cell masking,
PURPOSEtracking, egress filtering, GDPR Art. 17 erasure. - Provenance on every row — PROV-O lineage + a tamper-evident audit hash chain, byte-identical exhibit replay.
- Agent-native — 10 cognitive memory verbs over MCP and
/memory/*, with aMemoryclient shipping in all four SDKs (Python, TypeScript, Go, Rust). Drop-in framework adapters (LangChain, LlamaIndex, CrewAI, AutoGen, LangGraph, Pydantic-AI, smolagents) are Python-only. - Universal protocols — speaks Postgres wire, gRPC, HTTP, MCP, Arrow Flight, SPARQL, plus S3, ClickHouse, Neo4j, Redis, and MongoDB doors. Bring your existing client.
- Hybrid search — BM25 + custom HNSW vector + identity fusion with reciprocal-rank scoring in a single query.
Quick start
Pick the SDK that matches your stack — each takes under a minute. The server is one binary:
# Docker (recommended — no Rust required)
docker run -d -p 9090:9090 ghcr.io/openworkbench-co/relatadb:latest
# or from source
cargo install --path crates/relata-cli --locked && relata serve# pip install relata-sdk
from relata import RelataClient
with RelataClient("http://localhost:9090", purpose="analytics") as client:
client.ingest("Person", [{"name": "Alice", "email": "alice@example.com"}])
for row in client.query("SELECT * FROM Person LIMIT 10"):
print(row)// npm install @relata/sdk
import { createClient } from "@relata/sdk";
const relata = createClient("http://localhost:9090", { defaultPurpose: "analytics" });
const result = await relata.query("SELECT * FROM Person LIMIT 10");
console.log(result.rows);# psql / pgvector / ClickHouse / Neo4j / Redis / Mongo / curl / S3 — all work too.
curl -s http://localhost:9090/query \
-H 'Content-Type: application/json' \
-d '{"sql":"SELECT * FROM Person LIMIT 5"}'Where to go next
- New to Relata? Read Bi-Temporal Model → Identity → Governance → Provenance → Agent Memory.
- Ready to code? Pick an SDK: Python · TypeScript · Go · Rust.
- Writing SQL? Read the SQL Reference — every operator, with verified status.
- Building an agent? Read the MCP Tools Reference and Agent Memory.
- Bringing your own client? Read Protocol Compatibility.
- Going to production? Read Deployment and Limits.
What’s honestly shipping
RelataDB is on the path to 5.0 (epic #897). The governed core is real — bi-temporal store, planner with ACL + organisation isolation, provenance/audit hash chain, SmartIngest identity detection, and all ten protocol doors are implemented and smoke-tested. The honest gap list lives at Limits & Caveats; the design rationale lives in the ADR log (101 ADRs).
Last updated on