DATAFUSION · RUST · ARROW
Simple, Fast Lakehouse Engine
A lightweight alternative to Trino for querying Iceberg, Delta Lake, Paimon and Hive.
The shell installer supports Linux and macOS. For Windows, grab a build from releases/nightly.
Interfaces
Two ways to query
The same engine behind both, reading the same catalogs. Pick whichever fits how you work.
Server
Serve Arrow Flight SQL to ADBC clients, with a built-in web console on the same port.
CLI
Query lake tables directly from your terminal. Point it at a catalog and start typing SQL.
Coverage
One engine across your lake
A metastore-backed catalog reads whichever format each table declares. The two single-format catalogs serve exactly what their name says.
| Catalog | Iceberg | Delta Lake | Paimon | Hive |
|---|---|---|---|---|
| β | ||||
AWS Glue |
β | |||
| — | — | — | ||
| — | — | — |
Supported Experimental Not served by this catalog
Console
Query from the browser
Run the server and it serves a web console on the same port as Flight SQL — catalog explorer, SQL editor and results, no extra process.
lakelet --config config.toml --server · http://localhost:32010
Terminal
Query from the CLI
The same binary, started without --server, is a SQL shell. Pick a catalog,
type a statement, end it with a semicolon.
$ ./lakelet --config config.toml Enter SQL ending with ';'. Type 'quit;' to disconnect. sql> show catalogs; ╭──────────────┬──────────────╮ │ catalog_name │ catalog_type │ ╞══════════════╪══════════════╡ │ glue_catalog │ GLUE │ ├──────────────┼──────────────┤ │ iceberg_rest │ ICEBERG-REST │ ├──────────────┼──────────────┤ │ internal │ INTERNAL │ ╰──────────────┴──────────────╯ 3 row(s) fetched. Elapsed 0.004 seconds. sql> use glue_catalog.tpch_sf300; 0 row(s) fetched. Elapsed 0.001 seconds. sql> show tables; ╭────────────╮ │ table_name │ ╞════════════╡ │ customer │ ├────────────┤ │ lineitem │ ├────────────┤ │ orders │ ╰────────────╯ 3 row(s) fetched. Elapsed 0.088 seconds.
sql> select -> o_orderpriority, -> count(*) as orders, -> round(avg(o_totalprice), 2) as avg_price -> from orders -> where o_orderdate >= date '1998-01-01' -> group by o_orderpriority -> order by o_orderpriority; ╭─────────────────┬─────────┬───────────╮ │ o_orderpriority │ orders │ avg_price │ ╞═════════════════╪═════════╪═══════════╡ │ 1-URGENT │ 5763412 │ 151243.77 │ ├─────────────────┼─────────┼───────────┤ │ 2-HIGH │ 5761905 │ 151198.02 │ ├─────────────────┼─────────┼───────────┤ │ 3-MEDIUM │ 5764880 │ 151322.41 │ ├─────────────────┼─────────┼───────────┤ │ 4-NOT SPECIFIED │ 5762233 │ 151176.95 │ ├─────────────────┼─────────┼───────────┤ │ 5-LOW │ 5763004 │ 151259.63 │ ╰─────────────────┴─────────┴───────────╯ 5 row(s) fetched. Elapsed 2.184 seconds. sql> select * from lineitm limit 5; Error during planning: table 'glue_catalog.tpch_sf300.lineitm' not found sql> quit; Goodbye!
$ ./lakelet --version Lakelet: compiled with a0f747f 2026-09-21 13:47:20 UTC $ ./lakelet --config config.toml --command "show catalogs;" +--------------+--------------+ | catalog_name | catalog_type | +--------------+--------------+ | glue_catalog | GLUE | | iceberg_rest | ICEBERG-REST | | internal | INTERNAL | +--------------+--------------+ 3 row(s) fetched. Elapsed 0.004 seconds. $ cat daily.sql use glue_catalog.tpch_sf300; select count(*) as n_orders from orders; $ ./lakelet --config config.toml --file daily.sql 0 row(s) fetched. Elapsed 0.001 seconds. +-----------+ | n_orders | +-----------+ | 450000000 | +-----------+ 1 row(s) fetched. Elapsed 1.204 seconds.
./lakelet --config config.toml
Start querying
curl -fsSL https://lakelet.dev/install.sh | sh
Apache-2.0 · Built on Apache DataFusion & Arrow
AWS Glue