Ingest
Use standard Kafka producers, Arrow FlightRPC, HTTP/2 Arrow payloads, or PostgreSQL streaming INSERT. Confluent Schema Registry-compatible Avro is supported on the Kafka path.
BoilStream accepts Kafka-protocol, Arrow FlightRPC, HTTP/2 Arrow, and PostgreSQL streaming INSERT traffic, makes rows queryable in a hot DuckDB tier, and writes durable Parquet snapshots into DuckLake-managed object storage.
Traditional streaming-to-lakehouse stacks often assemble a broker, a stream processor, object-storage writers, compaction jobs, and a separate query engine. BoilStream combines the ingestion, streaming SQL, hot visibility, and DuckLake write path in one deployable system.
The storage stays open: bulk data is Apache Parquet and the catalog follows the DuckLake specification. Remote DuckDB clients can connect through the BoilStream community extension and attach the selected catalog by UUID and execute SQL remotely.
Use standard Kafka producers, Arrow FlightRPC, HTTP/2 Arrow payloads, or PostgreSQL streaming INSERT. Confluent Schema Registry-compatible Avro is supported on the Kafka path.
Query recent events through PostgreSQL-compatible clients while BoilStream prepares analytical history in Parquet.
Completed data is written as Parquet to S3, Azure Blob, GCS, MinIO, or filesystem storage and registered with the DuckLake catalog.
| Stage | BoilStream component | Result |
|---|---|---|
| Producer connection | Kafka wire protocol, FlightRPC, HTTP/2 Arrow, or PGWire | Existing clients can send typed event batches. |
| Recent-data visibility | Per-topic hot DuckDB tier | PGWire can combine locally committed rows with cold files. |
| Continuous processing | Streaming views and windowed materialized views | Filters, transforms, and aggregates create derived topics. |
| Durability | Parquet files plus DuckLake catalog metadata | Open-format history lives in customer-controlled object storage. |
| Remote access | PostgreSQL-compatible clients and DuckDB with the BoilStream extension | Bring familiar SQL tools to analytics and applications. |
Streaming catalogs use the __stream suffix. Create the catalog, list its UUID, and attach it under a local alias. Then create and query tables with SQL.
INSTALL boilstream FROM community;
LOAD boilstream;
PRAGMA boilstream_login(
'https://your-server.example/user@example.com',
'password',
'123456'
);
PRAGMA boilstream_create_ducklake(
'events__stream',
'Real-time event catalog'
);
FROM boilstream_ducklakes();
-- Replace the placeholder with the catalog_id returned above.
PRAGMA boilstream_attach_ducklake('<catalog-uuid>', 'events');
USE events;
CREATE TABLE web_events (event_id BIGINT, event_time TIMESTAMP);
SELECT * FROM web_events
ORDER BY event_time DESC
LIMIT 100;
The table is initially empty. For inserts, expected results, and connection instructions, use the BoilStream Quick Start.
BoilStream is optimized for the ingestion-to-analytics path. Keep a general-purpose broker when your architecture depends on a broad connector ecosystem, long broker-side retention as the system of record, or application messaging semantics outside BoilStream's supported protocols and processing model.
DuckLake supports data inlining for small changes. BoilStream adds the continuous ingestion, hot query tier, Parquet finalization, and catalog coordination needed to operate a streaming data path around DuckLake.
Recent data is held in the hot DuckDB tier. Durable cold data is stored as Parquet in a configured S3-compatible, Azure, GCS, MinIO, or filesystem backend and registered in DuckLake.
Yes. BoilStream implements the Kafka wire protocol for producers and supports Confluent Schema Registry-compatible Avro on that ingestion path.
Clients can use PostgreSQL-compatible SQL tools or native DuckDB with the BoilStream extension. See the Quick Start for connection instructions.