Overlapped stages
DuckDB keeps producing while earlier batches are compressed and encrypted. With TLS on, one stream runs as fast as plain HTTP.
Fast, secure, remote DuckDB. Every feature included.
Hardcharger™ puts DuckDB 2.0 on the network. Clients connect over Warp SQL, an open HTTP protocol that moves Apache Arrow record batches straight from DuckDB to your application. It is the successor to GizmoSQL, rebuilt for DuckDB 2.0, and it is free: no editions and no license keys.
Every result travels through an asynchronous pipeline. No stage waits for another unless a queue is full.
flowchart LR D[(DuckDB 2.0<br/>parallel execution)] --> P[Produce<br/>Arrow batches,<br/>122,880 rows each] P --> Z[Compress<br/>zstd worker pool,<br/>when asked for] Z --> T[Encrypt and send<br/>TLS in 1 MiB writes,<br/>overlapped with the next] T --> C1[connection 1] T --> C2[connection 2] T --> CN[connection N]
Overlapped stages
DuckDB keeps producing while earlier batches are compressed and encrypted. With TLS on, one stream runs as fast as plain HTTP.
Partitioned results
Ask for a large result as several partitions and read them over separate connections at
once. ORDER BY still holds.
Partitioned uploads
Large loads go up in parts over several connections and into DuckDB on all of its threads, in one transaction. A failed load leaves nothing behind.
Never at the cost of correctness
A result is complete only when every partition has arrived with its end-of-stream marker.
Over a real network (two AWS c8gn.8xlarge machines, TLS, median of five runs), against GizmoSQL 1.42 on the same data:
| Workload | Hardcharger | GizmoSQL 1.42 | |
|---|---|---|---|
| Fetch SF10 lineitem (60M rows, 10.5 GB of Arrow) | 0.97 s | 15.2 s | 15.7× faster |
| Fetch SF1 lineitem (6M rows) | 0.148 s | 1.74 s | 11.7× faster |
| Fetch 100M narrow rows | 0.45 s | 5.43 s | 12.0× faster |
| Fetch SF1 lineitem across regions (46 ms away) | 1.96 s | 12.26 s | 6.3× faster |
| Load SF10 lineitem (bulk ingest, 8 upload parts) | 3.00 s | 9.44 s | 3.1× faster |
| Load SF1 lineitem across regions (8 upload parts) | 2.91 s | 13.94 s | 4.8× faster |
The data is derived from TPC-H (DuckDB’s tpch extension at scale factor 1 or 10). Derived from
the TPC-H benchmark; not an official TPC-H result and not comparable to published TPC-H results,
as these results do not comply with the TPC-H specification. TPC-H™ is a trademark of the
Transaction Processing Performance Council (TPC). The method, every run and what Hardcharger
doesn’t win yet are on the benchmarks page. How the pipeline works is in the
performance model.
| 🦆 DuckDB 2.0, DuckLake and DuckDB’s extensions | ✅ |
🖥️ Built-in web UI: SQL editor, results grid, schema browser, exports (--web-ui) |
✅ |
| ⚡ Warp SQL: streamed and resumable results, bind parameters, prepared statements, bulk ingest, zstd | ✅ |
| 🔐 TLS and mTLS, password and token sign-in, SSO via OIDC/JWKS, browser sign-in, authorized e-mail filters | ✅ |
| 👥 Role-based access control: users, roles, grants, ownership, system privileges | ✅ |
| 🛡️ Row policies, column masking, tenants, per-catalog access rules, Open Policy Agent | ✅ |
| 🧾 Tamper-evident audit log | ✅ |
| 🔭 Session and statement instrumentation, catalog logging, query profiles | ✅ |
📈 Prometheus /metrics and SQL metrics |
✅ |
🚦 Statement queue, timeouts, KILL SESSION, graceful shutdown |
✅ |
| 💳 License key | Not needed |