GizmoSQL is a lightweight, high-performance SQL server built on:
- π¦ DuckDB or ποΈ SQLite for query execution
 - π Apache Arrow Flight SQL for fast, modern connectivity
 - π Middleware-based auth with optional TLS & JWT
 
Originally forked from sqlflite β and now enhanced into a more extensible, production-ready platform under the Apache 2.0 license.
- π°οΈ Deploy Anywhere β Run as a container, native binary, or in Kubernetes
 - π¦ Columnar Fast β Leverages Arrow columnar format for high-speed transfers
 - βοΈ Dual Backends β Switch between DuckDB and SQLite at runtime
 - π Built-in TLS + Auth β Password-based login + signed JWT tokens
 - π Super Cheap Analytics β TPC-H SF 1000 in 161s for ~$0.17 on Azure
 - π§ͺ CLI, Python, JDBC, SQLAlchemy, Ibis, WebSocket β Pick your interface
 
| Component | Version | 
|---|---|
| DuckDB | v1.4.1 | 
| SQLite | 3.50.4 | 
| Apache Arrow (Flight SQL) | 21.0.0 | 
| jwt-cpp | v0.7.1 | 
| nlohmann/json | v3.12.0 | 
For detailed instructions and configuration information, see our full documentation:
docker run --name gizmosql \
           --detach \
           --rm \
           --tty \
           --init \
           --publish 31337:31337 \
           --env TLS_ENABLED="1" \
           --env GIZMOSQL_PASSWORD="gizmosql_password" \
           --env PRINT_QUERIES="1" \
           --pull always \
           gizmodata/gizmosql:latestduckdb ./tpch_sf1.duckdb << EOF
INSTALL tpch; LOAD tpch; CALL dbgen(sf=1);
EOF
docker run --name gizmosql \
           --detach \
           --rm \
           --tty \
           --init \
           --publish 31337:31337 \
           --env TLS_ENABLED="1" \
           --env GIZMOSQL_PASSWORD="gizmosql_password" \
           --pull always \
           --mount type=bind,source=$(pwd),target=/opt/gizmosql/data \
           --env DATABASE_FILENAME="data/tpch_sf1.duckdb" \
           gizmodata/gizmosql:latestUse with DBeaver or other JDBC clients:
jdbc:arrow-flight-sql://localhost:31337?useEncryption=true&user=gizmosql_username&password=gizmosql_password&disableCertificateVerification=trueMore info: Setup guide
import os
from adbc_driver_flightsql import dbapi as gizmosql, DatabaseOptions
with gizmosql.connect(uri="grpc+tls://localhost:31337",
                      db_kwargs={"username": os.getenv("GIZMOSQL_USERNAME", "gizmosql_username"),
                                 "password": os.getenv("GIZMOSQL_PASSWORD", "gizmosql_password"),
                                 DatabaseOptions.TLS_SKIP_VERIFY.value: "true"  # Not needed if you use a trusted CA-signed TLS cert
                                 },
                      autocommit=True
                      ) as conn:
  with conn.cursor() as cur:
    cur.execute("SELECT n_nationkey, n_name FROM nation WHERE n_nationkey = ?",
                parameters=[24]
                )
    x = cur.fetch_arrow_table()
    print(x)See: https://github.com/gizmodata/generate-gizmosql-token for an example of how to generate a token and use it with GizmoSQL.
gizmosql_client   --command Execute   --host localhost --port 31337   --username gizmosql_username   --password gizmosql_password   --query "SELECT version()"   --use-tls --tls-skip-verifygit clone https://github.com/gizmodata/gizmosql --recurse-submodules
cd gizmosql
cmake -S . -B build -G Ninja -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build build --target installThen run:
GIZMOSQL_PASSWORD="..." gizmosql_server --database-filename ./data/your.db --print-queries- β DuckDB + SQLite backend support
 - β TLS & optional mTLS
 - β JWT-based auth (automatically issued, signed server-side)
 - β
 Server initialization via 
INIT_SQL_COMMANDSorINIT_SQL_COMMANDS_FILE - β Slim Docker image for minimal runtime
 
# DuckDB (default)
gizmosql_server -B duckdb --database-filename data/foo.duckdb
# SQLite
gizmosql_server -B sqlite --database-filename data/foo.sqlite- π SQLAlchemy dialect
 - πΏ Apache Superset compatible SQLAlchemy driver
 - π Ibis adapter
 - π Flight SQL over WebSocket Proxy
 - π Metabase driver
 - βοΈ dbt Adapter π NEW!
 
π‘ On Azure VM Standard_E64pds_v6 (~$3.74/hr):
- TPC-H SF 1000 benchmark:
β±οΈ 161.4 seconds
π° ~$0.17 USD total 
π Speed for the win. Performance for pennies.
Apache License, Version 2.0
https://www.apache.org/licenses/LICENSE-2.0
Questions or consulting needs?
π§ [email protected]
π https://gizmodata.com
Built with β€οΈ by GizmoDataβ’