Guest Article: This article was originally published on HackerNoon by Shawn Gordon and is republished here with permission from the author.
Introduction
A while back, I wrote What the Heck is GizmoSQL?, about Philip Moore's project that took DuckDB, an in-process library, and turned it into a proper server with concurrent sessions, authentication, TLS, and an Arrow Flight SQL endpoint. It solved a real problem. DuckDB is fantastic, but it lives in your process, and when multiple people or applications need to access the same data, you need something in front of it.
Well, the GizmoData folks have gone and replaced it. On October 21, 2026, they announced Hardcharger, a brand new open-source server for DuckDB 2.0, written from scratch rather than ported from the GizmoSQL codebase. It's licensed under Apache 2.0, with no editions or license keys, a notable change I will come back to.
Let's Dive In
Why did Hardcharger ditch Arrow Flight SQL in favor of a new protocol called Chargewire? Why did Phil build it?
Arrow Flight SQL runs on gRPC, which means HTTP/2 end to end, gRPC-aware proxies and load balancers, generated code in every client, and no plain browser client at all. GizmoData ran into this running their own cloud: every reload of a shared proxy sent long-lived gRPC connections a GOAWAY, and the next calls failed. Anyone who has tried to put gRPC behind standard infrastructure will recognize that pain.
Chargewire keeps the good part of Flight SQL, which is Apache Arrow as the columnar wire format, and throws out the transport. It runs SQL over ordinary HTTP/1.1 and TLS. Results, query parameters, and bulk uploads are Arrow IPC streams, while control messages are small JSON documents. The notes say that version 1.0 is final and will only change by addition going forward.
We get some interesting fallout from that design. Short queries are one round trip, so a single POST runs a statement and streams rows back in the same response. Long queries can submit, get a handle, poll, and fetch later, and a dropped download resumes from the batch where it stopped, so no request has to outlive a proxy timeout. Big results can be read as several partitions over separate connections at once. Anything that passes HTTP can pass Chargewire, including curl and a browser's fetch.
This is actually pretty nifty when you think about it. You can run a whole query with curl and no driver at all. For anyone wiring up AI agents or quick scripts, that is significantly easier than generating gRPC stubs.
The protocol has an OpenAPI 3.1 description that the server itself serves at /chargewire/v1/openapi.json, plus a black-box conformance suite of 282 tests. Chargewire is Apache 2.0 and lives in its own repository, separate from Hardcharger.
Built-In Security
The second reason they rebuilt rather than iterated is security. Flight SQL leaves sign-in, sessions, and handle ownership up to each server, so every server has to get them right independently, whereas Chargewire has them in the protocol.
Tokens are bearer tokens, not cookies, so a browser never sends a credential on its own and there is no CSRF to deal with. Every handle (sessions, statements, results, uploads) is bound to the identity that created it and checked on every use, so guessing someone else's handle won’t work. Single sign-on runs on the server's own port and certificate, with the server acting as the OIDC provider's confidential client. Under mutual TLS, a client can authenticate with its certificate alone, and tokens issued from a certificate sign-in are bound to that certificate per RFC 8705, so a copied token is useless without the private key.
Inside the server, access control is checked within DuckDB against each statement's actual plan, after binding and again before optimizing, so nested SQL, views, and macros cannot route around a grant. If it can’t classify the request, it's refused. They also refuse credential and system files on the host (SSH keys, cloud credentials, the server's own TLS key) at DuckDB's filesystem layer, administrator included.
Everything Included
I mentioned the license at the top, and I want to follow up on that tease. In GizmoSQL, access control, instrumentation, and SSO were Enterprise features that required a license key, but in Hardcharger they are included.
That means role-based access control with users, roles, and grants down to the column level, managed in SQL with CREATE ROLE, GRANT, and REVOKE. Row policies, column masking, tenants, per-catalog access rules, and Open Policy Agent support. A tamper-evident audit log. Session and statement instrumentation, query profiles, and a Prometheus /metrics endpoint. A statement queue, timeouts, KILL SESSION, and graceful shutdown. There is also a web UI compiled into the binary with a SQL editor, results grid, and schema browser that respects access control, turned on with --web-ui.
Going from gated to free is not the direction most companies move. Their stated reasoning is that every team running a shared DuckDB needs these things, which is hard to argue with.
Trying It Out
There are both package and command-line install options for pretty much any platform. The local version didn’t give me what I needed to solve what I wanted, but the cloud version seems perfect.
I want to describe what I wanted to test, though, because I saw this as a real opportunity to solve a problem I have. I have about half a dozen specialized data collectors on my laptop that load data into local DuckDB files. I need to share these with others, but I haven’t found a simple, inexpensive way to do it so far.
The one I used for this example pulls my analytics from Medium. They have no good way to get these numbers other than looking at them, and I needed to integrate them with other metrics. The screenshot below is just part of the dashboard I run locally so I can review it, but Claude also has DuckDB skills that let me do what I need with reporting and mixing in other analytics.
There are too many steps to detail out here, but using the web interface, it was really simple to load my Medium DuckDB file, and get it available on AWS (they also have Azure and Google Cloud regions). Here is a snapshot of the web console.
From here, I launched the SQL Editor for a quick test and previewed the data. I’ve censored the Publication in the result set for privacy reasons.
If you look at the previous WebGUI image, you’ll notice an option for AI/MCP. There is an MCP option available for Hardcharger, and this is where you can get what you need to include it in something like Claude. You can set your tokens to be read-only, admin, or whatever. For reporting, I just set it to read-only.
In this screenshot, you can see that I was able to run a natural-language query on the DuckDB database and get a chart. This is exactly what I needed. I just need to have a daily collection writer and then 'n’ readers.
I can’t stress enough how cool this was to get working, and it was extremely simple. I just need to update my data collection Python to write to the remote server now. Drivers cover ADBC for Go, Python, C/C++, R, and Rust; JDBC as a single jar for Java 17 and up with no gRPC, Netty, or protobuf; and a JavaScript client for Node, browsers, Deno, Bun, and Cloudflare Workers.
The docs are very good and provide examples for everything.
Summary
Hardcharger is nearly perfect for what I need right now, and they are working on the two features I’d like, so I expect to see them soon. The first is to have the cluster auto-spin up on a request. I don’t actually need this running perpetually; the access is very ad hoc. The other is a way to put my data collection apps on their server.
So, what the heck is Hardcharger? It is an open-source server that puts DuckDB 2.0 on the network, built on a new HTTP-based protocol called Chargewire that streams Apache Arrow and works with any proxy, load balancer, or curl command you already have. It is the successor to GizmoSQL, rebuilt from scratch, with everything that used to sit behind an Enterprise license key now included. If you have been wanting remote DuckDB with real access control and have not wanted to fight gRPC through your infrastructure to get it, this is worth your afternoon.
Check out my other What the Heck is... articles at the links below:
- What The Heck Is DuckDB?
- What the Heck is GizmoSQL?
- What the Heck Is Malloy?
- What the Heck is PRQL?
- What the Heck is GlareDB?
- What the Heck is SeaTunnel?
- What the Heck is LanceDB?
- What the heck is SDF?
- What the Heck is Paimon?
- What the Heck is Proton?
- What the Heck is PuppyGraph?
- What the Heck is GPTScript?
- What the Heck is WarpStream?
- What the Heck is Duckle?
- What the Heck is Renart?
- What the Heck is Jev?
About the author: Shawn Gordon describes himself as a software designer/developer, developer advocate, writer, and musician. He writes the “What the Heck is...” series on HackerNoon.
This article was originally published on HackerNoon by Shawn Gordon and is republished here with permission.