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 36 · Services

Ingestion and rules

PlannedUpdated 2026-10-11View on GitHub
Versions
Not released yet
Roadmap
Seconds-fresh data and ingestion, Technical preview
Related
14. Hot tier and seconds-fresh reads, 37. Data to events, 42. Edge gateway

Summary

A library-first pipeline for ingestion with in-stream rules (thresholds, flatlines, heartbeats, anomalies), deployable embedded, on Lambda, as a container or at the edge, writing alarms to an events table and real-time sinks.

Design

A pipeline that does ingestion and in-stream analytics in one place. It is a library first: the same pipeline code runs in every deployment form, and the binary, container, and Lambda handler are thin wrappers around it.

Deployment forms

FormTriggered byBest for
Embedded library (Rust; Python via bindings)User code calls pipeline.push(batch)Apps that already receive data
AWS Lambda (and other FaaS)Kinesis, SQS, IoT Core rules, API Gateway, S3 object-created events, EventBridge scheduleBursty or low-volume fleets; scale to zero; no ops
Container / microserviceLong-lived consumers: MQTT, Kafka/Redpanda, NATS, HTTP, Arrow FlightSteady high volume; persistent MQTT connections
Edge binarySame as container, on a gatewayFactories and sites with unreliable uplinks: buffers locally, then catches up

All forms share a single config file (inputs → processors → rules → outputs), so a pipeline can move from Lambda to a container without changes.

Pipeline

  • Inputs: MQTT (IoT first-class), HTTP (JSON/NDJSON), Arrow Flight / Arrow IPC, Kafka/Redpanda, Kinesis, NATS, InfluxDB line protocol, OTLP metrics. OPC-UA and Sparkplug B are candidates.
  • Stages: decode → schema validation and evolution → enrichment (join with series metadata) → transforms (DataFusion SQL) → rules → buffer → WAL / hot tier → lake commit.

Rules

  • Built-in rules (configurable per series or group):
    • Threshold and range (with hysteresis)
    • Rate of change / spike
    • Flatline or stuck sensor
    • Missing data / heartbeat timeout
    • Out-of-order or late beyond tolerance
    • Unit and schema anomalies
    • Statistical anomalies (rolling z-score, EWMA)
  • Outputs of rules: Rows in an events Iceberg table (queryable history of alarms) plus real-time sinks (webhook, Kafka, SNS/SQS, MQTT topic). Generalized to any event type and any event stream in F3 (spec 37).

Rule state without a server (draft — Q17, #110)

Rule typeState neededHow it works serverless
Stateless (threshold, range, schema)NoneRuns anywhere, any instance
Short windows (rate of change, flatline, z-score, hysteresis)Small per-series state (last values, running stats)Affinity via the source's partitioning (Kinesis shard / Kafka partition keyed by series), so one consumer sees a series in order. State is checkpointed with the source offset to object storage or the hot store, and restored on cold start.
Absence of data (heartbeat, missing data)"Last seen" per seriesCan't be triggered by data that never arrives. A scheduled sweep (e.g. EventBridge every minute, or a timer in the container) checks the last-value index / hot store for overdue series.

Scaling

  • Horizontal.
  • Stateless stages scale freely.
  • Stateful rules scale with the number of source partitions.
  • Containers use consistent hashing on the series key when the source has no partitioning (e.g. MQTT).

Decisions

IDDecisionStatus
D11Ingestion is a library-first pipeline (ingest + rules) deployable embedded, as AWS Lambda, as a container, or at the edge (spec 36)Accepted

Open questions and issues

  • #109 Question: rule engine scope, a rules DSL or YAML presets with a SQL escape hatch
  • #110 Question: rule state on Lambda, and the sweep cadence for heartbeat rules

History

  • 2026-10-11: D11 accepted (SPEC.md §13)
  • 2026-10-19: moved from SPEC.md into its own spec.
  • 2026-10-19: was spec 35; specs regrouped one per feature, with milestones on the roadmap.