Structured plane
Iceberg tables via Trino. Entities, metrics, dimensions, data contracts. Here OSL is a superset of dbt MetricFlow — any valid MetricFlow project is valid OSL.
OpenDome is an open-core data platform for teams that need to put their structured and unstructured data behind a single, governed, queryable interface — without handing it to a third party.
You run a cell: a self-contained, per-tenant Kubernetes namespace that holds your lakehouse (Iceberg + Lance), your pipelines, and the consumption engine. Everything that reads data goes through one surface — the OpenDome Semantic Layer (OSL).
Structured data, unstructured data, metrics, entities and natural language are consumed exclusively through OSL. Trino, Lance and dbt are internal engines: they never expose a public endpoint. No consumer talks to Trino directly.
OSL describes a semantic model that spans two physical substrates with a single declarative YAML language:
Structured plane
Iceberg tables via Trino. Entities, metrics, dimensions, data contracts. Here OSL is a superset of dbt MetricFlow — any valid MetricFlow project is valid OSL.
Unstructured plane
Lance collections via LanceDB. Chunk schema, embeddings, hybrid retrieval (vector + BM25 + metadata filters), row-level ACL. This is the OSL-only extension.
The bridge between them is the JointEntity: a logical object (Customer,
Policy, Order) whose primary key comes from a structured model and which
exposes attributes drawn from both planes. One call, one policy decision, one
audit trail. See Concepts for the full model.
The Apache-2.0 distribution is everything needed to run and consume a cell on your own infrastructure:
tenant-semantic-api) serving the 13 /osl/* endpoints.