Sovereign Query Engine

The query engine for the Iceberg lakehouse.

One binary. Embedded like DuckDB, or a server that scales out like Trino — same SQL, same Iceberg semantics, same per-query identity. Every query runs as the authenticated user, no service account, no shared root.

Build from source: cargo install --path crates/sqe-cli, Apache-2.0, Rust, no JVM.

Embedded
Server

Same query. Same result. Same identity model.

Why SQE

The lakehouse engine you actually own.

90.7%

Scored on the public Iceberg matrix

147/162 cells across V2 and V3 — scored against the public rubric, not a vendor spec sheet.

See the matrix →
8/8

Benchmark suites faster than Trino 481 at SF1

Every query differentially validated. Up to 7.2× faster at SF1, and ahead at SF10 too. Reproducible with one script.

See the receipts →
0

Service accounts. Zero shared roots.

Every query runs as the authenticated user. The bearer token flows through to the catalog and storage. Policy is enforced before the optimizer runs.

vs Trino →
1

Binary, laptop to cluster

A DuckDB-class embedded engine and a distributed coordinator share one SQL surface. Cross-catalog joins, runtime ATTACH, persistent local warehouse.

vs DuckDB →
What it is

Everything in one engine.

Iceberg-native read + write

Native Iceberg V2 + V3

Read and write, not read-only. Position & equality deletes, merge-on-read, copy-on-write, schema evolution.

7 catalog backends

Polaris, Nessie, Unity Catalog OSS, AWS Glue, S3 Tables, Hive Metastore, JDBC, plus Hadoop storage. Multi-cloud.

Per-query identity

Per-query identity

OIDC password grant; the user's bearer token is passed through to the catalog and S3 on every query.

Policy as plan rewriting

Row filters and column masks from Apache Ranger policies, shared with Spark and Kyuubi, enforced at the LogicalPlan layer before the optimizer runs.

Column-level lineage

Native OpenLineage 2-0-2 emitter with column-level lineage on writes. File and HTTP sinks, disk-spool fallback.

Open + everywhere

One binary, two modes

Embedded single-process engine and distributed coordinator + stateless workers, the same SQL surface, the same binary.

Three wire protocols

Arrow Flight SQL, Trino HTTP and MCP from the same coordinator. Trino clients connect unchanged; AI clients connect as the token's user, with no service account.

Rust, no JVM

Sub-second cold start. A C++/DuckDB-class footprint with a distributed story the JVM engines charge for.

How to run it

Two commands to a SQL prompt.

Embedded — one binary, no cluster

git clone https://github.com/schubergphilis/sqe && cd sqe
cargo install --path crates/sqe-cli
sqe-cli --embedded          # persistent warehouse at ~/.sqe/warehouse/

sqe> SELECT * FROM '/data/sales.parquet' LIMIT 5;
sqe> SELECT * FROM read_csv('s3://bucket/orders.tsv.gz');
sqe> ATTACH 'http://catalog.example.com/api/catalog' AS partner_cat
       (TYPE iceberg_rest, WAREHOUSE 'analytics');
sqe> SELECT * FROM partner_cat.sales.orders LIMIT 10;

Server — Polaris + Keycloak + SQE locally

git clone https://github.com/schubergphilis/sqe
cd sqe/quickstart/polaris-keycloak-client-id
docker compose up -d        # Polaris + Keycloak + MinIO + SQE

# Connect over Arrow Flight SQL
docker compose exec sqe sqe-cli --port 50051 --user adminuser

sqe> SHOW CATALOGS;

Full quickstart covering all seven catalog backends → docs.getsqe.com

SQE vs Trino vs DuckDB

One engine instead of two.

SQETrinoDuckDB
Embedded mode (one binary) yesnoyes
Distributed mode yesyesno
Iceberg V2 + V3 read + write nativeV2 + partial V3read-only
Per-query OIDC passthrough yesservice acct onlyn/a
Ranger policy at LogicalPlan yesnono
Multi-catalog in one engine 7 backendsone at a timeper-extension
Wire protocols Flight SQL + Trino + MCPTrino HTTPextension
Runtime Rust, no JVMJVMC++
Cold start sub-secondtens of secondssub-second
OpenLineage emitter native, column-levelpluginno

Performance — SF1, vs Trino 481

SuiteSQETrinoSpeedupPass
TPC-H (22) 12.6s 32.6s 2.6x 22/22
SSB (13) 3.2s 5.5s 1.7x 13/13
TPC-DS (99) 34.2s 95.9s 2.8x 98/99
TPC-C (8 read) 1.1s 5.3s 4.9x 8/8
TPC-E (11) 0.7s 4.8s 7.2x 11/11
TPC-BB (10) 25.4s 96.5s 3.8x 10/10
ClickBench (43) 1.7s 4.8s 2.8x 41/43
Bank (8) 12.0s 37.7s 3.1x 8/8

Faster than Trino at SF1 on all eight industry suites, and on six of seven at SF10 as of the July run. Zero row differences across every run; the exceptions are shown on the performance page, not hidden. Run your own with BENCH_SCALE=1 ./scripts/benchmark-test.sh --compare-trino.

Performance

Faster than Trino — now at SF10 too.

8 / 8suites faster at SF1
6 / 7suites faster at SF10
7.2×top speedup

See the performance leaps →

Active development

Recently shipped

  • Oct 2026 Iceberg V3 by default
  • Aug 2026 MCP, governed by the caller's own token
  • Jun 2026 Read-only ops web UI
See the roadmap →