Quickstart
Bring up a cell that serves the OSL API on your own Kubernetes — no
control-plane, no phone-home. Real token, real POST /osl/query call in
minutes. Get started →
Query your tables and your documents through one open SQL surface — where one compiled, fail-closed policy, not application code, decides what each analyst or AI agent sees, on infrastructure you host.
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 POST /osl/query 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 →
One consumption endpoint — POST /osl/query — plus governed previews,
the domain map and discovery/authoring metadata.
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, governed vector retrieval), 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 declared in dbt MetricFlow’s language. 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.