Skip to content

Hardcharger

Hardcharger™ by GizmoData™: the DuckDB 2.0 server that speaks Warp SQL
GitHub container imageRelease binariesWarp SQL protocolDuckDB 2.0Apache ArrowApache 2.0 licenseSlack communityby GizmoData™

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