Quickstart
Bring up a cell that serves the OSL API on your own Kubernetes — no
control-plane, no phone-home. Real token, real /osl/retrieve call in
minutes. Get started →
Structured and unstructured, consumed through a single open spec — auditable, self-hosted, no lock-in.
01—Start here
Bring up a cell that serves the OSL API on your own Kubernetes — no
control-plane, no phone-home. Real token, real /osl/retrieve call in
minutes. Get started →
The mental model: two physical planes (Iceberg + Lance), one declarative spec, “everything is an Entity”, the compile → serve loop. Read the concepts →
The 13 /osl/* endpoints every client can rely on — query, retrieve,
resolve, domain-map, traverse, sample. Browse the API →
What ships under Apache-2.0 today and what the managed/Enterprise tier adds — clearly, in one place. Compare editions →
02—Why OpenDome
OpenDome is an open-core data platform. A self-hoster runs a cell — a self-contained, per-tenant namespace — and consumes everything through the OpenDome Semantic Layer (OSL): a single open spec that spans structured tables (Iceberg, via Trino) and unstructured collections (Lance, vector + full-text), under one fail-closed policy enforcement point and one audit chain.
Trino, Lance and dbt are internal engines with no public endpoint. Every consumer — BI, scripts, agents — speaks OSL. If data can be reached without OSL, it’s an architecture bug.
The structured plane is 100% dbt MetricFlow. Walk away and your
semantic_models/*.yml stay valid in dbt-sl, untouched. Only the Lance
primitives are OSL-only.
Every query, retrieval and policy decision is enforced server-side and emitted as a lineage event. PII is declared at the connector and redacted in the cell — never inferred in the UI.
The same model is exposed as MCP tools for agents and as REST for apps.
These docs publish an llms.txt for AI crawlers.