DuckLake gives you a governed, Postgres-backed lakehouse for almost nothing. The catch: your existing tools — PyIceberg, Trino, Spark — speak Iceberg, not DuckLake. DuckIceLake closes that gap.
It’s a FastAPI REST proxy that materialises DuckLake’s Postgres catalog state into
spec-compliant Iceberg metadata on S3 in real time, so any Iceberg client reads
and writes seamlessly while DuckLake stays consistent underneath
(DuckLake HEAD == Iceberg current-snapshot-id).
Why it matters for sovereign data:
- Dual-path, one source of truth — Iceberg REST clients and DuckLake direct clients hit identical data, kept in sync automatically.
- Full Iceberg v3 — a PyIceberg shim enables production v3 writes, including deletion vectors and row lineage.
- Credential governance — per-table STS credential vending (MinIO AssumeRole) means no shared root keys handed to query engines.
- Zero lock-in — a spec-compliant REST surface keeps clients portable; swap the backing store and only the proxy changes.
This is exactly the kind of EU-hostable, auditable lakehouse layer I build with clients — and you can manage it yourself in the Experience Sovereign AI & Data cohort.
DuckIceLake is open source: github.com/kellerkev/duckicelake.
This is a condensed version. Read the full article on kevinkeller.org →