- Hardcharger
- Integrations
Hardcharger™ Integrations
Drivers for Python, Go, Java and JavaScript, a command-line client and a web UI, an MCP server for Claude, dbt, PySpark-style DataFrames and replication from other databases. Every one speaks Warp SQL, so results arrive as Apache Arrow, and every one is Apache-2.0.
Jump to an integration
Every entry is a shareable deep link. Categories: Drivers · Tools · AI & Agents · Transformation · DataFrames · Data Loading · SQL Clients.
- Python, Go and ADBC driverDrivers01
- JDBC driverDrivers02
- JavaScript and TypeScript clientDrivers03
- hardcharger command-line clientTools04
- Web UITools05
- Hardcharger™ MCP serverAI & Agents06
- dbt-hardchargerTransformation07
- SQLFrame for HardchargerDataFrames08
- adbc-replicate-hardchargerData Loading09
- DBeaverSQL Clients10
Python, Go and ADBC driver
adbc-driver-hardcharger: query Hardcharger from Python, Go, C/C++, R, Rust or any ADBC language.
A native Go driver, built on the Warp SQL ADBC driver and compiled to one shared library that every ADBC language loads. Python gets a DB-API 2.0 interface with Arrow results; Go programs import it directly; C/C++, R and Rust load it through an ADBC driver manager as driver = "hardcharger".
On top of Warp SQL it adds what is particular to Hardcharger: hardcharger:// URIs, query and session tags, hardcharger.* settings, browser sign-in (SSO) and client-certificate sign-in. Large results are read over several connections at once and bulk ingests are sent in parallel parts by default.
What it provides
- hardcharger:// URIs, port 31337 by default, TLS by default (?tls=false for plain HTTP)
- Bind parameters and Arrow results end to end
- Bulk ingest (adbc_ingest) in parallel parts, all or nothing
- Password, token, browser sign-in (auth_type="external") and mTLS
- Partitioned reads and lz4/zstd chosen from the link’s round trip
- Go package github.com/gizmodata/hardcharger-adbc/go/v2/hardcharger
pip install adbc-driver-hardcharger
# Go
go get github.com/gizmodata/hardcharger-adbc/go/v21from adbc_driver_hardcharger import dbapi as hardcharger
2
3with hardcharger.connect(uri="hardcharger://localhost?tls=false", username="hardcharger", password="change-me") as conn:
4 with conn.cursor() as cur:
5 cur.execute(operation="SELECT 42 AS answer, ? AS greeting", parameters=["hello"])
6 print(cur.fetch_arrow_table())Python 3.11 or later. pip install "hardcharger[adbc]" also installs the Python server package.
JDBC driver
hardcharger-jdbc: Hardcharger for Java applications, DBeaver and other JDBC tools, in one jar.
A single standalone jar for Java 17 and later, with no gRPC, Netty or protobuf inside: jdbc:hardcharger://host[:port] URLs on the Warp SQL JDBC driver. It names itself “Hardcharger JDBC Driver” to the tools that show it, and DatabaseMetaData reports the server as Hardcharger.
What it provides
- jdbc:hardcharger:// URLs, port 31337 by default
- TLS by default (useEncryption=false for plain HTTP)
- Partitioned reads (resultPartitions, 8 by default)
- Password, token and mTLS sign-in
- Driver class com.gizmodata.hardcharger.jdbc.HardchargerDriver
<dependency>
<groupId>com.gizmodata</groupId>
<artifactId>hardcharger-jdbc</artifactId>
<version><!-- the release version --></version>
</dependency>Properties properties = new Properties();
properties.setProperty("user", "hardcharger");
properties.setProperty("password", "change-me");
properties.setProperty("useEncryption", "false"); // plain HTTP on localhost
try (Connection connection = DriverManager.getConnection("jdbc:hardcharger://localhost", properties);
ResultSet rows = connection.createStatement().executeQuery("SELECT 42 AS answer")) {
rows.next();
System.out.println(rows.getInt("answer"));
}Java 17 or later. Bulk ingest has no JDBC API; use the ADBC driver for loads.
JavaScript and TypeScript client
@gizmodata/hardcharger: hardcharger:// URLs in, Arrow out, in Node, browsers, Deno, Bun and Cloudflare Workers.
A thin layer on @gizmodata/warp-sql, the generic JavaScript client for any Warp SQL server, which it re-exports. Plain fetch and Apache Arrow JS, no native code and no gRPC, so the same code runs on a server, in a browser page (allow its origin with --cors-origins) or at the edge.
What it provides
- Arrow JS Tables, or record-batch streams for large results
- Bind parameters, transactions and bulk ingest
- Split results over several connections (8 in Node, 4 in browsers)
- Cancellation with an AbortSignal
- Password, token and mTLS sign-in
npm install @gizmodata/hardcharger apache-arrowimport { connect } from "@gizmodata/hardcharger";
const conn = await connect({ url: "hardcharger://localhost?tls=false", username: "hardcharger", password: "change-me" });
const table = await conn.query("SELECT 42 AS answer, ? AS greeting", ["hello"]);
console.log(table.toArray().map((row) => row.toJSON()));
await conn.close();Node 22.19 or later; apache-arrow is a peer dependency.
hardcharger command-line client
An interactive SQL shell and a scripting tool, shipped with every server.
hardcharger ships beside hardcharger-server in every tarball, MSI and container image. Run it with no statement for an interactive shell with history, tab completion, syntax highlighting and a pager, or pass one statement, a file or a heredoc for scripts: the exit status is 1 when a statement fails.
What it provides
- Output as tables, CSV, JSON or Markdown
- Ctrl-C cancels the running statement and keeps the shell
- Large results read over up to 8 connections, in order
- Browser sign-in (--auth-type external) and client certificates
- hardcharger:// URIs with the Python driver’s rules
Web UI
A SQL editor, results grid, schema browser and file upload, built into the server.
Start the server with --web-ui and open /ui on its own port and certificate. Each editor tab is its own session; the schema browser and autocomplete show each user only what their roles allow; Upload data loads CSV, TSV, Excel, Parquet, JSON or Arrow files into a table; and the API page shows the server’s Warp SQL API in Swagger UI.
What it provides
- Up to 20 editor tabs, scripts with a result tab per result set
- Results grid for up to a million rows, copy to Excel or Google Sheets
- Upload data with a preview and editable column types
- Downloads as CSV, TSV, JSON, Excel, Parquet or Arrow
- SSO and certificate sign-in
Hardcharger™ MCP server
Explore and query Hardcharger from Claude Desktop, Claude Code and any MCP client.
A Model Context Protocol server and Claude Desktop extension, the Hardcharger port of the GizmoSQL MCP server. Claude lists catalogs, schemas and tables, describes columns, explains plans and runs read-only SQL against a Hardcharger server you can reach, and it can serve a team over Streamable HTTP behind OAuth.
What it provides
- Read-only by default; writes only when you allow them
- Password, token, mTLS and browser sign-in
- Several connections, switchable in one chat
- A remote connector over Streamable HTTP with OAuth 2.1
- Pure JavaScript, built on @gizmodata/hardcharger
claude mcp add hardcharger \
-e HARDCHARGER_URI='hardcharger://localhost?tls=false' \
-e HARDCHARGER_USERNAME=hardcharger \
-e HARDCHARGER_PASSWORD=change-me \
-- npx -y @gizmodata/hardcharger-mcpNode 22.19 or later for npx. Claude Desktop: install hardcharger-mcp.mcpb from the releases, no Node needed.
dbt-hardcharger
Build your dbt project on Hardcharger: remote DuckDB 2.0, over Warp SQL.
The dbt adapter for Hardcharger, the port of dbt-gizmosql, passing the same dbt adapter test suite. It connects through adbc-driver-hardcharger, so models run on the server and seeds load through DuckDB’s own CSV reader.
What it provides
- Every materialization, including incremental (append, delete+insert, merge, microbatch) and snapshots
- Python models, run locally in DuckDB and bulk-loaded
- External files written by the server
- DuckLake catalogs, enforced constraints, persist_docs
- Password, token, mTLS and browser sign-in
pip install dbt-hardchargershop:
target: dev
outputs:
dev:
type: hardcharger
host: localhost
port: 31337
user: hardcharger
password: "{{ env_var('HARDCHARGER_PASSWORD') }}"
tls: false # a local server without TLS
database: demo
schema: main
threads: 4dbt-core 1.12, Python 3.11 or later. The grants config is not applied yet; use GRANT in a post-hook.
SQLFrame for Hardcharger
Run your PySpark DataFrame code on Hardcharger, with no Spark cluster.
The Hardcharger backend for SQLFrame: PySpark-style transformations become DuckDB SQL that runs on the server, so Spark and Databricks jobs move over by swapping the session builder. activate() lets unchanged pyspark imports run on Hardcharger.
What it provides
- The PySpark DataFrame API, plus activate() for unchanged imports
- session.ingest() bulk loading
- Client-local spark.read.json / csv / parquet
- Every sign-in method
- OpenTelemetry traces
pip install sqlframe-hardcharger1from sqlframe_hardcharger import HardchargerSession, functions as F
2
3spark = HardchargerSession.builder.config(map={
4 "hardcharger.uri": "hardcharger://localhost?tls=false",
5 "hardcharger.username": "hardcharger",
6 "hardcharger.password": "change-me",
7}).getOrCreate()
8
9spark.table("nation").groupBy("n_regionkey").agg(F.count("*").alias("nations")).show()Python 3.11 or later. Python UDFs can’t run on the server.
adbc-replicate-hardcharger
Copy whole schemas from Oracle, PostgreSQL, Snowflake, DuckDB or another Hardcharger, on a schedule.
Config-driven ADBC-to-ADBC replication into Hardcharger. List the schemas, tables and views to copy in a YAML file; it streams them as Arrow, masks columns inside the source, reads every table at the same instant, copies only what changed on later runs and translates views to DuckDB SQL. Run it from the command line, the container image or a Helm CronJob.
What it provides
- Masks evaluated inside the source: raw values never leave it
- Consistent snapshots and change detection by fingerprint
- Views translated with sqlglot
- Parallel, atomic per-table swaps and a run log in the target
- Container image and Helm chart
pip install "adbc-replicate-hardcharger[all]" # or [oracle], [postgresql], [snowflake], [duckdb]version: 1
name: shop-to-hardcharger
source:
type: duckdb
path: ./shop.duckdb
target:
type: hardcharger
uri: hardcharger://localhost?tls=false
username: hardcharger
password: ${HARDCHARGER_PASSWORD}
objects:
- db_schemas: [sales]
columns:
- tables: [sales.customers]
mask:
ssn: hash
parallelism: 2Run it with adbc-replicate-hardcharger run --config replicate.yaml (also plan, validate and test-connection). Python 3.11 or later.
DBeaver
Browse and query Hardcharger in DBeaver through the JDBC driver.
Add the Hardcharger JDBC jar in DBeaver’s Driver Manager and connect with jdbc:hardcharger:// URLs. Built-in Hardcharger support in DBeaver is coming; until then the manual setup takes a minute.
What it provides
- Driver class com.gizmodata.hardcharger.jdbc.HardchargerDriver
- URL template jdbc:hardcharger://{host}[:{port}][/{database}]
- Default port 31337
- useEncryption=false for a local server without TLS
Which Hardcharger driver should I start with?
For Python, Go, R, Rust or C/C++, use the ADBC driver (pip install adbc-driver-hardcharger). For Java and JDBC tools such as DBeaver, use hardcharger-jdbc. For Node, browsers, Deno, Bun and Cloudflare Workers, use @gizmodata/hardcharger. For a shell, use the hardcharger client that ships with the server.
Do GizmoSQL drivers work with Hardcharger?
No. GizmoSQL speaks Arrow Flight SQL over gRPC; Hardcharger speaks Warp SQL over HTTP. The main ones have Hardcharger counterparts: adbc-driver-gizmosql → adbc-driver-hardcharger, the GizmoSQL JDBC driver → hardcharger-jdbc, dbt-gizmosql → dbt-hardcharger, the GizmoSQL MCP server → hardcharger-mcp, SQLFrame’s GizmoSQL backend → sqlframe-hardcharger and adbc-replicate → adbc-replicate-hardcharger. The migration guide on docs.hardcharger.gizmodata.com(opens in a new tab) covers the move.
Can I call Hardcharger without a driver?
Yes. Warp SQL is plain HTTP: get a token, open a session and post a statement with curl or any HTTP library, and ask for Accept: application/vnd.apache.arrow.stream to get the rows as an Arrow IPC stream. Every server serves its OpenAPI 3.1 description at /warp/v1/openapi.json.
Which integrations support SSO?
The ADBC driver (and so dbt-hardcharger and SQLFrame), the MCP server, the hardcharger command-line client and the web UI can sign in through the server’s browser sign-in with your OpenID Connect provider. The JDBC driver signs in with a password, a token or a client certificate.
Are the integrations open source?
Yes. Every driver and integration on this page is published by GizmoData under the Apache-2.0 license.