AN OPEN STANDARD FOR LAKEHOUSE-NATIVE STREAMING
The stream is the table.
Lakestream is an open architecture pattern and API for streaming on the lakehouse: logs live as open formats on object storage — readable as a stream, queryable as a table. One copy of data, nothing in between.
WRITE — A STREAM
append-ordered records · WAL objects
ONE COPY
OBJECT STORAGE
READ — A TABLE
columnar Parquet · Iceberg / Delta
topic → WAL objects → compacted Parquet → committed tables
PRINCIPLES
Three properties, one storage layer.
STREAM–TABLE DUALITY
Two views, same bytes
Every log is simultaneously a stream you can tail and a table you can query. The record that serves a tail read is the record committed to the table.
DISKLESS & LEADERLESS
Brokers without state
Durability moves to object storage. Any node serves any partition — no leader elections, no rebalancing storms, no cross-AZ replication bill.
ZERO-ETL
Tables appear, connectors don't
Ingestion writes open formats directly: WAL objects compact into Parquet and commit to Iceberg or Delta. There is no pipeline to build or babysit.
ARCHITECTURE
From protocol to Parquet.
PROTOCOL LAYER
LAKESTREAM API — THE CONTRACT
URSA STORAGE ENGINE
OBJECT STORAGE & LAKEHOUSE
The API is the contract — everything below it is replaceable.
THE SPECIFICATION
One API, three levels.
The Lakestream API is small on purpose: three levels, each usable on its own. An implementation that honors the levels — and the storage contract beneath them — is a conformant lakestream.
lakestream-api · io.streamnative.lakestream.api
IMPLEMENTATIONS
One standard, many runtimes.
The spec is open; these are the runtimes tracking it today.
Ursa
REFERENCE IMPLEMENTATIONThe storage engine behind the spec: WAL objects, compaction to Parquet, commits to Iceberg and Delta. Java, embeddable, proven at VLDB 2025.
ursaio/ursa-storageUrsa for Kafka
DISKLESS KAFKA · PREVIEWApache Kafka, forked to run diskless: topics live on Ursa, brokers hold no state, any broker serves any partition. One config flag per topic.
ursaio/ursa-for-kafkalakestream-rs
RUST PORTThe lakestream library in Rust — nine crates and the lsctl CLI, byte-compatible with the Java codecs.
ursaio/lakestream-rsKafka Connect
PLANNEDConnect sources and sinks that write Ursa storage directly from the Connect runtime — streams in, tables out.
design in progress — follow along on GitHubQUICKSTART
Diskless Kafka in five minutes.
Three brokers, Oxia, and MinIO from one compose file — then create a topic that never touches a broker disk.