Favicon of Lakekeeper

Lakekeeper

Lakekeeper is an Apache-2.0 Apache Iceberg REST catalog written in Rust: a single binary with multi-tenant warehouses created at runtime, fine-grained authorization through OpenFGA or Cedar, vended credentials for S3, ADLS and GCS, and change events emitted to Kafka or NATS.

LicenseOpen source (permissive)· Apache-2.0
DeploymentSelf-hosted
PricingFreeSubscription
Operational complexityLow
WorkloadInteractiveBatch
LanguageRust

Use it when

  • You self-host and want the catalog to be operationally small: a single Rust binary, no JVM, stateless and horizontally scalable.
  • Authorization is the point: fine-grained permissions through OpenFGA or Cedar, OIDC identity, and an OPA bridge so engines enforce the same rules.
  • Storage credentials must be vended, not shared; the matrix is the widest here, covering S3, MinIO, Ceph, R2, ADLS, OneLake, and GCS.
  • The catalog should reach past Iceberg: Lance, Delta, or Parquet register as governed generic tables, and change events publish to Kafka or NATS.

Think twice when

  • "Single binary" hides the checklist: production wants highly available PostgreSQL, an OpenFGA service, an identity provider, and a reverse proxy for TLS.
  • Automated snapshot expiry and orphan-file removal sit in the paid Lakekeeper Plus edition; open source trims metadata logs only.
  • You need branches, tags, or cross-table commits; that is Nessie's dimension, not this one.
  • Row filters or column masks are required; neither authorizer expresses them.

How it runs

A Rust service exposing the Iceberg REST API, a management API for projects, warehouses, users, and grants, and a data API for generic tables. PostgreSQL is the only backend; warehouses are created at runtime for multi-tenant setups, and soft delete with undrop covers mistakes. Spark, PyIceberg, Trino, and StarRocks are integration-tested; a hosted edition is in private beta.

Details

Compare

How Lakekeeper answers the questions Table Catalogs turns on.

Table Catalogs
How it works
ProtocolThree HTTP APIs: the Iceberg REST specification at /catalog/v1, implemented on apache/iceberg-rust and described by the project as complete; a Management API at /management/v1 for projects, warehouses, users, roles and grants, which the spec has no equivalent for; and a Data API at /lakekeeper/v1 serving non-Iceberg tables. An OPA bridge publishes the catalog's permissions so an engine like Trino enforces the same rules the catalog would
What it catalogsProjects as the tenant boundary, warehouses beneath them, then namespaces, tables, views and generic tables, with users, roles and background tasks managed alongside. Governance tags, in preview, attach a controlled vocabulary (pii, sensitivity=restricted) as far down as an individual column
Branching and versioningIceberg's own and no more, snapshots and the native snapshot references that live in table metadata, with no repository-level branching, tagging or cross-table history. What this catalog adds sits around the drop instead: soft delete with time-bounded undrop, protection flags on warehouses, namespaces, tables and views, and a recursive drop for when it is meant
Running it
MaintenanceSplit across the licence, which makes this the sharpest paywall in the capability. The open-source edition honours Iceberg's write.metadata.delete-after-commit and trims the metadata log, on by default since 0.10.0. Snapshot expiry and orphan-file removal are Lakekeeper Plus, per-warehouse queues with per-table overrides, a 24-hour safety floor against a mistyped retention, a dry-run mode, and a scheduler that times the next run to the rate orphans actually accumulate rather than to a cron
What you runA single Rust binary with no JVM and no local state, horizontally scalable, with a Helm chart and an operator in development, and then a production checklist that is not light. PostgreSQL 15 or later is the only catalog backend, wanted highly available with separate read and write URLs; OpenFGA is a second service with its own database whenever authorization is enabled; an identity provider is expected, and a reverse proxy is required because Lakekeeper does not terminate TLS itself
Connections
Table formatsIceberg through the specification, and then deliberately past it, the Generic Table API registers Lance, Delta, Parquet, CSV or anything else as a governed object, with the format left an opaque string so a new one needs no catalog change. The trade is stated rather than hidden: those tables get identity, permissions, credentials and lifecycle, and the catalog does not arbitrate their writes
Engine supportAny Iceberg REST client, with Spark, PyIceberg, Trino and StarRocks integration-tested in CI and DuckDB documented, including DuckDB WASM querying from a browser. Two details are unusual: a shared engine can use OAuth2 token exchange so the catalog sees the end user rather than the engine's service account, and identifiers are case-insensitive but case-preserving through Postgres ICU collation, which is what stops Spark's lowercase and Snowflake's uppercase from creating two tables nobody can find
Access
Access controlOpenFGA in the open-source edition, where permissions are relationships stored as data and both admins and object owners change them at runtime; Cedar as deployed policy, built in and needing no extra service, in Lakekeeper Plus. Identity comes from any OIDC provider or natively from Kubernetes service accounts. The documentation is explicit about the ceiling, neither authorizer expresses row filters or column masks, and filtering within an object is not something Lakekeeper enforces
Storage credentialsThe widest storage matrix here, and both mechanisms, vended credentials and remote signing for S3, covering AWS with role assumption and session tags, MinIO and Ceph, Cloudflare R2 and Alibaba Cloud OSS, plus ADLS Gen2, Microsoft OneLake with SAS-token vending and Google Cloud Storage. Generic tables get vending on the same terms, and warehouse credentials sit in an encrypted Postgres store or a Vault-style KV rather than in the config
Cost
Billing unitNothing metered by the catalog, and the only row here whose open-source project has a paid edition rather than a hosted one. Lakekeeper Plus, from Vakamo who maintain the project, adds Cedar with per-decision audit trails, enterprise role providers, automated table maintenance, admission gates, customer-managed KMS encryption and an SLA, with no published pricing; a hosted Cloud edition is in private beta

Share:

Alternatives to Lakekeeper

Favicon

 

  
  
Favicon

 

  
  
Favicon