Timelaketimelake
DocsBenchmarksRoadmapSpecContribute
Apache 2.0 ·
Roadmap

DoneIn progressPlanned

Tables and storage

Done:1. Iceberg tablesDone:2. CommitsDone:3. Object-store catalogIn progress:4. Time-series table contractIn progress:5. File layout and encodingsIn progress:6. Last-value indexDone:7. One-request table state and version checksDone:8. Table format versions and upgradesDone:9. SettingsPlanned:10. Supplemental timestamps

Writing

Done:11. AppendsDone:12. Late data and dedup on readDone:13. Writes from WebAssemblyPlanned:14. Hot tier and seconds-fresh readsPlanned:15. BackfillIn progress:16. Import and migrationPlanned:17. DeletesPlanned:18. GDPR erasure

Maintenance

Done:19. CompactionIn progress:20. Maintenance runs, retention and expiry

Reading

In progress:21. Timelake readerDone:22. Block cacheDone:23. Filter pushdownDone:24. Pruning with long IN listsDone:25. Newest-first scansDone:26. Scans in series orderDone:27. Materialized rollups

SQL functions

In progress:28. Function libraryDone:29. Time buckets and gap fillingDone:30. Signal aggregatesDone:31. Downsampling with m4

Integrations

Planned:32. REST catalogPlanned:33. DuckDB extensionPlanned:34. Snowflake connectionPlanned:35. Multitenancy

Services

Planned:36. Ingestion and rulesPlanned:37. Data to eventsPlanned:38. Static read modelsPlanned:39. Computed metricsPlanned:40. Agent access with permission setsPlanned:41. Device syncPlanned:42. Edge gatewayPlanned:43. Server mode

Benchmarks

In progress:44. Benchmark harness: timebenchIn progress:45. Industrial IoT benchmarkPlanned:46. Agent benchmark

Background

ArchitectureDeployment and cost modelEmbedded engine: DataFusionLandscape and positioningLicense and open corePurpose and requirementsReleases
TimelaketimelakeThe open time-series lakehouse.
v0 · Apache 2.0 · Contribute · GitHubBuilt on Apache Arrow, Apache DataFusion, Apache Parquet, and Apache Iceberg.
DocsBenchmarksRoadmapSpecContribute

Spec 32 · Integrations

REST catalog

PlannedUpdated 2026-10-12View on GitHub
Versions
Not released yet
Roadmap
Any engine can attach, Technical preview
Related
3. Object-store catalog, 34. Snowflake connection, 35. Multitenancy

Summary

timelake-catalog, an Iceberg REST catalog that is optional and can scale to zero, so Snowflake, Trino, Athena and Spark attach to Timelake tables in place. Beyond the standard API it queues commits, caches metadata and plans scans with Timelake's indexes. Planned; the object-store catalog (spec 3) is what is built.

Design

A catalog alone doesn't make data faster to scan: file layout, compaction, and indexes do that, and they work with any catalog. What a catalog we control does optimize is everything around those:

LeverWhat timelake-catalog doesWithout it (third-party catalog)
Commit throughputQueues commits per table server-side and can coalesce concurrent append-only commits into one snapshot. No retry storms from optimistic concurrency (OCC) conflicts.Writers retry on conflict; need a single committer per table
Metadata latencyCaches table metadata, manifests, and Puffin indexes in memoryEvery reader re-fetches from object storage
Server-side scan planningImplements the Iceberg REST scan-planning endpoints using our series/time indexes, so any engine that delegates planning gets Timelake pruningEngines only use min/max statistics
Maintenance triggersEmits commit events that drive compaction and rollup refresh as work arrives, with no polling or schedulesCron schedules
Timelake stateStores hot-tier watermarks, rollup registry, retention policies, delete audit log, tenant configurationStored in table properties / snapshot summaries (works, but slower to query)
Security / multitenancyAuthN/Z, scoped credential vending (STS / presigned URLs), per-tenant quotas (spec 35)Whatever the third-party catalog offers

Design constraints (to stay true to R13):

  • Implements the standard Iceberg REST spec. DuckDB, Spark, Trino, PyIceberg, and Snowflake attach unchanged.
  • Stateless process:
    • Default backend is object storage only: the current-metadata pointer is swapped with conditional writes, so no database is needed. It serves the object-store catalog's layout, so tables don't change.
    • Postgres is an optional backend for very high commit rates or many tables.
  • Scale-to-zero friendly: Deployable as a Lambda / Cloud Run function, a container, or in-process as a library for single-node and edge setups.
  • Optional: All Timelake features degrade gracefully on S3 Tables, Glue, Polaris, or Lakekeeper (right-hand column above).

Build vs. extend: Lakekeeper is an Apache-2.0 Iceberg REST catalog written in Rust. We evaluate extending or forking it versus building a focused catalog on iceberg-rust (Q2, #105).

Decisions

IDDecisionStatus
D2Ship our own Iceberg REST catalog, timelake-catalog, that is optional and scales to zeroAccepted

Open questions and issues

  • #105 Question: build timelake-catalog on iceberg-rust or extend Lakekeeper
  • #108 Question: where rollup definitions live, table properties or the catalog
  • #129 timelake-catalog: an Iceberg REST catalog service

History

  • 2026-10-11: catalog design (SPEC.md §5, D2)
  • 2026-10-19: moved from SPEC.md into spec 4, then into this spec when the specs were regrouped one per feature.