GizmoSQL UI

March 4, 2026 · View on GitHub

A web-based SQL interface for GizmoSQL servers. GizmoSQL UI provides a modern, responsive interface for connecting to and querying GizmoSQL databases using Apache Arrow Flight SQL.

GizmoSQL UI Screenshot

Features

  • Connection Management: Connect to GizmoSQL servers with support for TLS and authentication
  • SQL Editor: Monaco-based SQL editor with syntax highlighting and autocomplete
  • Results Grid: View query results in a responsive table with type-aware formatting
  • Schema Browser: Browse catalogs, schemas, tables, and columns
  • Export Options: Export results to CSV, TSV, JSON, or Parquet formats

Quick Start

macOS (Homebrew)

brew install gizmodata/tap/gizmosql-ui
gizmosql-ui

Windows (MSI Installer)

Download GizmoSQL-UI-x64.msi from the releases page and run the installer.

GizmoSQL UI will be available from:

  • Desktop shortcut
  • Start Menu → GizmoSQL UI
  • Command line: gizmosql-ui (added to PATH)

Using Pre-built Executable

The development server runs at http://localhost:3000

Download the appropriate executable for your platform from the releases page, then run:

./gizmosql-ui

The UI will automatically open in your default browser at http://localhost:3000.

Building from Source

Prerequisites

  • Node.js 22+
  • pnpm 9+

Development

# Install dependencies
pnpm install

# Run in development mode
pnpm dev

The development server runs at http://localhost:3000

Production Build

# Build for production
pnpm build

# Start the production server
pnpm start

Creating Standalone Executables

You can package the app into standalone executables for Linux, macOS, and Windows:

# Build executables for all platforms
pnpm package

The executables will be created in dist/. Run them directly:

./dist/gizmosql-ui-macos-arm64   # macOS
./dist/gizmosql-ui-linux-x64     # Linux
dist\gizmosql-ui-win-x64.exe     # Windows

The executable will start the server and automatically open your browser to http://localhost:3000.

Starting a GizmoSQL Server (Optional)

If you don't have a GizmoSQL server running, you can start one using Docker. Note that we use INIT_SQL_COMMANDS to generate some TPC-H tables (and data) for the demo:

docker run --name gizmosql \
           --detach \
           --rm \
           --tty \
           --init \
           --publish 31337:31337 \
           --env TLS_ENABLED="1" \
           --env GIZMOSQL_USERNAME="gizmosql_user" \
           --env GIZMOSQL_PASSWORD="gizmosql_password" \
           --env PRINT_QUERIES="1" \
           --env INIT_SQL_COMMANDS="CALL dbgen(sf=0.01);" \
           --pull always \
           gizmodata/gizmosql:latest

Then connect GizmoSQL UI using:

  • Host: localhost
  • Port: 31337
  • Username: gizmosql_user
  • Password: gizmosql_password
  • Use TLS: enabled
  • Skip TLS Verify: enabled (for self-signed certificate)

Configuration

Connection Parameters

ParameterDescriptionDefault
HostGizmoSQL server hostname or IPlocalhost
PortGizmoSQL server port31337
UsernameAuthentication username(required)
PasswordAuthentication password(required)
Use TLSEnable TLS encryptiontrue
Skip TLS VerifySkip TLS certificate verificationfalse

Environment Variables

VariableDescriptionDefault
PORTHTTP server port3000

Architecture

┌──────────────────────────────────────────────────┐
│  GizmoSQL UI (Next.js)                           │
├──────────────────────────────────────────────────┤
│  React Frontend (App Router)                     │
│  ├── Monaco SQL Editor                           │
│  ├── Results Grid                                │
│  └── Schema Browser                              │
├──────────────────────────────────────────────────┤
│  Next.js API Routes                              │
│  ├── /api/* endpoints                            │
│  └── @gizmodata/gizmosql-client                  │
└──────────────────────────────────────────────────┘

                        │ gRPC (Arrow Flight SQL)

┌──────────────────────────────────────────────────┐
│  GizmoSQL Server                                 │
└──────────────────────────────────────────────────┘

Project Structure

gizmosql-ui/
├── app/                    # Next.js App Router
│   ├── api/               # API routes
│   │   ├── catalogs/
│   │   ├── columns/
│   │   ├── connect/
│   │   ├── disconnect/
│   │   ├── health/
│   │   ├── query/
│   │   ├── schemas/
│   │   └── tables/
│   ├── layout.tsx         # Root layout
│   └── page.tsx           # Main page
├── components/            # React components
├── context/              # React context providers
├── lib/                  # Utilities and services
│   ├── api.ts           # Frontend API client
│   ├── connections.ts   # Server connection manager
│   ├── services/        # Backend services
│   └── types.ts         # TypeScript types
└── public/              # Static assets

API Endpoints

EndpointMethodDescription
/api/healthGETHealth check
/api/connectPOSTConnect to GizmoSQL server
/api/disconnectPOSTDisconnect from server
/api/queryPOSTExecute SQL query
/api/catalogsGETList catalogs
/api/schemasGETList schemas
/api/tablesGETList tables
/api/columnsGETList columns

License

Apache License 2.0

Credits

Developed by GizmoData LLC

Powered by: