Source files land as CSV in object storage.
dltv0.4.0-alpha.1Dex-only identity and one-command GitHub App setup.Read the changelog →
Open-source lakehouse · Apache-2.0 · Alpha
OpenLakeForge is the open-source lakehouse for small data teams. Ingestion, validation, Iceberg storage, SQL, orchestration, governance and dashboards come assembled, wired and deployed, on your laptop, AWS or Azure.
$ uv tool install openlakeforge$ olf init # openlakeforge.yaml + lakehouse_code/$ olf deploy --provider local # kind cluster + the whole platformAssembled from open source you already know
How it works
Data moves through three medallion layers, each owned by one tool. Dagster orchestrates every run; around that path sit the catalog, the query engine and, when you want them, governance and dashboards.
Source files land as CSV in object storage.
dltTechnical contracts validate them into Iceberg tables.
FloeBusiness marts are modelled in SQL and run in the query engine.
dbt-trino on TrinoWhy OpenLakeForge
Small teams
Less operational work to run a modern lakehouse.
Modular
Run the core data path alone, add governance and dashboards when you need them.
Self-hosted
Your infrastructure, your storage, your data. Apache-2.0.
Portable
Local Kubernetes, AWS and Azure share the same platform contracts.
Open format
Storage stays independent from the engines that read it.
Batteries included
Kubernetes, Terraform and Helm ship with the platform, pinned and tested.
Everything as code · AI-ready
Infrastructure, data contracts, SQL, pipelines, dashboards and CI are all declarative files in Git. An AI agent reads the same source of truth as your team, proposes changes as pull requests, and the platform validates them like any other change.
| InfrastructureTerraform + Helm, pinned in the release | infra/ · component-catalog.yaml |
|---|---|
| PlatformProvider, stages, preset, identity | openlakeforge.yaml |
| Data productsDomains, products, sources | lakehouse.yaml · source.yaml |
| Bronze → SilverIngestion and technical contracts | bronze/ · silver/ |
| GoldBusiness marts in SQL | gold/ (dbt) |
| OrchestrationOne job per product | pipelines/dagster/ |
| DashboardsReports over Gold | dashboards/superset/ |
| DeliveryBuild once, promote DEV → PROD | GitHub Actions · revisions |
> Add our daily orders export and a revenue-by-region mart.reads openlakeforge.yaml, lakehouse.yaml$ olf source new orderswrites silver/sales/orders.yaml # Floe contract$ olf product new sales/revenue_by_regionwrites gold/revenue_by_region/models/*.sqlopens pull request #42✓ build-revision sha256:3f9c…✓ deploy-stage dev · e2e passed… prod waits for your approvalStages
A change is built once into an immutable project revision, activated in DEV, tested, approved, then activated unchanged in PROD. PROD never rebuilds, and no data is copied between stages.
Your project
olf init creates a writable project. Terraform, Helm and images stay in the installed distribution, so your repository holds only what is yours.
Ingestion, validation, Iceberg, catalog, Trino, dbt and Dagster.
The shortest path to a working lakehouse.
Slim + OpenMetadata governance + Superset dashboards.
You also want lineage, a catalog UI and dashboards.
my-lakehouse/├── openlakeforge.yaml # provider, stages, preset└── lakehouse_code/ ├── lakehouse.yaml # domains and data products ├── bronze/ # sources and their dlt loaders ├── silver/ # Floe contracts per domain ├── gold/ # dbt projects per product ├── pipelines/dagster/ # one job per product └── dashboards/superset/Deploy anywhere
Local
The whole platform on your machine. Plain HTTP on *.olf.localhost, no certificates.
olf deploy --provider localAWS
Managed Kubernetes, storage, database and catalog behind the same contracts.
olf deploy --provider awsAzure
The in-cluster platform services on Azure Kubernetes Service.
olf deploy --provider azureIs it a good fit?
Get started
Docker and uv are all you need. olf provisions its own pinned Terraform, Helm, kubectl and kind.