Version 0.1.2 macOS 15 or newer · Apple silicon · Signed and notarized

The database client that belongs on a Mac.

One native app for PostgreSQL, MySQL, SQLite, SQL Server, Oracle, MongoDB and six more engines. Write queries, edit rows in place, design tables, draw your schema — with your Keychain, your Touch ID, and no account.

$brew install --cask az-code-lab/taps/dbclient

Free for the databases on your Mac. Pricing

Features

One window for the whole job.

A tour by the work you came to do. Each part is a real Mac control, not a web view — so it is fast at 900 tables, and it shows you the SQL before it sends it. Every picture is the app itself, and every feature links to its page in the docs.

Connect

Twelve engines. One app.

Every feature is built against one driver contract, so the grid, the designers and the assistant work the same whether the server speaks Postgres, Oracle or Redis.

Hosted services get a tile of their own with the port and SSL mode they expect: SupabaseNeonCockroachDBTimescaleDBYugabyteDBValkeyClickHouse Cloud

Guide: hosted services

New connection

Pick a tile, or paste a string.

Choose the engine or the service and the port and SSL mode follow. Paste a connection string and the fields fill themselves in. Test the connection before you save it; a new one is tried before it is filed.

  • Save Password starts off: the app asks when you connect, and forgets when it quits
  • A colour and a Production switch for the servers that matter
  • Folders in the sidebar, and a filter that never dials a server
Guide: the connection editor

Connect safely, wherever the server is.

Keychain and Touch ID

Passwords are Keychain items, never a file, and using one can ask for Touch ID or your login password first. Or save none: leave Save Password off and the app asks when you connect, then forgets the answer when it quits.

Guide: passwords

SSH, SSL, proxies

In-process SSH tunnels (password or ed25519 key) checked against known_hosts; SSL up to full certificate verification; SOCKS5 and HTTP CONNECT proxies, chained with SSH when you need both.

Guide: tunnels and proxies

Production mode

Mark a connection as production and every session starts with auto-commit off. Writes wait for your commit, and the status bar says so.

Guide: production mode

Reconnects that tell the truth

A dropped server is retried on a keepalive; a read is re-run for you, a write reports that it may have applied and asks you to check.

Guide: dropped connections

Move your set-up

Export connections, folders and saved queries as one readable file; import it on another Mac. Passwords come along only behind Touch ID.

Guide: moving connections

Files open as connections

Drop a SQLite or DuckDB file or a .sql script on the window or the Dock; DBClient reads the bytes, not the extension, and opens the right thing. CSV and Parquet files open from the Data File tile.

Guide: opening files

What each engine gets.

Every engine has the sidebar, the grid, the assistant and a door to its own console client. The kinds of object that exist on an engine are the kinds it shows.

EngineEditable gridDesignersUsers & RolesDiagram
PostgreSQL and Supabase, Neon, CockroachDB, TimescaleDB, YugabyteDBall kinds
MySQL and MariaDBtables, triggers, events, sequences on MariaDB
SQLitewith table rebuildstables, indexes, triggers
SQL Serverplus synonyms, partition functions and schemes
Oracletables, sequences, types, synonyms, triggers, tablespaces
IBM Db2tables with an enforced keytables, indexes, triggers, sequences
DuckDB and CSV filestables, sequences
ClickHouse and ClickHouse Cloudtables
Databricks SQL warehousesmanaged tablesDelta tables, views, routines
MongoDBdocumentsconsole
Redis and ValkeykeysconsoleACL users

Oracle and IBM Db2 need their makers' client libraries, which the app does not ship. The first Oracle or Db2 connection offers to download the client from Oracle or IBM, checks every file against the digests the app was built with, and keeps it in your Library folder, where the same sheet updates or removes it.

Databricks needs no client: it talks to a SQL warehouse over HTTPS with an access token, one Unity Catalog per connection. ClickHouse Cloud can sign in through your browser instead of a database password.

Guide: engines and server versions

Query

An editor that knows your schema.

A hand-rolled SQL lexer drives the highlighting and the completion, so both stay exact and fast.

Editor

Write, run, repeat.

Tables, columns, keywords and functions complete as you type, scoped to the tab's database. ⌘↩ runs the statement under the cursor, ⇧⌘↩ runs everything, and a selection runs alone. Results land per statement, each with its own grid, log and pager.

  • Syntax highlighting and a formatter (⇧⌘F) that never touches your types
  • Explain before you run; Watch to re-run on an interval
  • Comment a block with ⌘/, duplicate or delete a line, find and replace
  • Tabs remember their editor, results and page — ⇧⌘T reopens the one you closed
Guide: the SQL editor
Palette

⌘K to anywhere.

The command palette searches tables and views, their DDL, the schema diagram, the app's actions and your other connections as you type. Arrows and ↩ run the choice.

  • Open a table, show its CREATE statement, start a designer
  • Switch connection without reaching for the sidebar
  • Works from any tab, on any engine
Guide: the command palette
Console

The engine's own client, in a tab.

A console tab is a real terminal running the client you already know — psql, mysql or mariadb, sqlite3, sqlcmd, clickhouse-client, mongosh, redis-cli, SQL*Plus or SQLcl, db2cli, dbsqlcli — signed in with the connection's own host, port, user and password, through its SSH or proxy tunnel too. Its prompt, history, pager and colours are the client's, not an imitation.

  • The door is always there; without the client, the tab names the Homebrew line that installs it, with a copy button and Check Again
  • The password never goes on the command line: the client reads it from its environment or its own prompt
  • MongoDB and Redis also get a command console as their first-class query surface
  • DuckDB is the one engine without a console: a file allows one process, and the app is it
Guide: console tabs
Tabs

Every tab, one grid.

The strip's grid button shows every open tab across every connection as a card with its first lines. Click one, or walk them with the arrow keys and press Return; Escape closes the overview.

  • One strip across connections, grouped in the sidebar's order
  • Cards preview the query, the browse, the designer
  • ⌘W closes, ⇧⌘T brings the last closed tab back
Guide: tabs and the overview

And around the editor.

A sidebar that scales

Folders of connections, one flat tree that stays quick with 900 tables open, a filter that never dials a server.

Guide: the sidebar

Watch and Explain

Re-run a statement on an interval and see the rows change; read the plan before you run it.

Guide: Explain and Watch

Saved queries and tabs

Queries saved per connection and database, tabs that remember their editor, results and page, ⇧⌘T to bring one back.

Guide: saved queries
Edit

A grid built for editing.

Drawn by AppKit, so 60 columns scroll as fast as 6, and every cell is a real control when you edit it.

Grid

Edit in place, review as SQL, commit once.

A single-table SELECT that covers the primary key is editable — typed editors per column kind, rows added and deleted from the row gutter, joins edited cell by cell against each owning table. ⌘S shows the statements; Commit runs them in one transaction.

  • Excel-style selection: rows, columns, cells, ranges
  • Sort from a header's menu, several columns with ranks
  • Long text and JSON open in their own editor, reformatted on demand
  • Set NULL, revert a cell, discard everything
Guide: editing rows in the grid
Design

Designers for every kind of object.

Tables, indexes, foreign keys, triggers, events, sequences, types, synonyms, aggregates, operators, extensions, casts, tablespaces, partition functions and schemes, users and roles — each one a tab, each one previewing its SQL. Kinds of object

Structure

Alter a table without writing the ALTER.

Columns load as drafts. Rename, retype, reorder, change a default, toggle NOT NULL, add and drop keys and indexes — the diff becomes ordered statements you can read before you apply them. On SQLite, the full rebuild recipe runs in one transaction.

  • Postgres emits USING casts for type changes
  • MySQL restates the full column, and says so
  • Collations picked from the server's own list, and kept when a column is restated
  • What an engine cannot do is a note, not a silent failure
Guide: the table designer
Overview

Each database at a glance.

Click a database and see every kind of object it holds with a count, the server's version, and a door to create what is missing. Cards open the same listings the sidebar does.

  • Server-level kinds — extensions, casts, tablespaces, accounts — beside the schema's
  • New Schema, New Table, New Role from one place
  • The diagram and the console, one click away
Guide: the database overview
Users & Roles

Accounts, memberships and grants.

On every engine that has accounts, the sidebar files them under Users & Roles: superusers, connection limits, expiry, role membership and grants at every scope. The role editor writes the GRANTs and REVOKEs for you.

  • Postgres, MySQL, MariaDB, SQL Server, Oracle, IBM Db2, Databricks, MongoDB, Redis ACLs, ClickHouse
  • SQL Server's three-state DENY handled as its own thing
  • Every change previewed as SQL
Guide: users and roles
Understand

Pictures of your data.

Diagram

The schema as a diagram.

Drawn from real foreign keys, laid out by relationship, edges routed around boxes. Drag tables; the layout keeps your placements and arranges the rest around them.

  • Self-references and multiple keys between two tables drawn distinctly
  • Filter to a name and the picture narrows
  • Double-click a table to open it
Guide: the schema diagram
Charts

A chart of any result.

Bar, line, area, pie and scatter over the result you already have. Choose the X column, the measures, a series column and the aggregate; the chart follows re-runs.

  • A pie folds its long tail into Other
  • Eight-colour palette validated for both appearances
  • Toggle back to the grid at any time
Guide: charts
Assistant

An assistant that reads, never writes.

Ask in plain words. The assistant sees your schema, runs read-only queries to check its answer, and replies with tables and SQL. A statement that would change data is handed back to you as text — the guard is code, not a prompt.

  • Claude, OpenAI, Gemini, xAI, DeepSeek, Mistral — your key, your choice
  • Streaming replies; one click puts the SQL in the editor
  • Inline suggestions in the editor, which you can switch off
Guide: the AI assistant
Move data

In, out, and across engines.

A table is not stuck where it was made. Drag it to another server, or take its rows away as a file and bring others in.

Copy

Drag a table to another engine.

Drop a table from one connection onto another's database and a sheet shows what will run: the CREATE in the target's dialect, the rows to copy, structure or data or both. Tables move between any two of the ten SQL engines, columns and types translated; views and routines move where the dialect matches.

  • PostgreSQL to SQLite, MySQL to DuckDB, Oracle to Db2, and every other pair
  • Replace or keep what is already there
  • One transaction where the target has them
Guide: copying between engines
In and out

Export, read the DDL, import.

Export the rows in front of you as CSV, JSON or SQL inserts, copied or saved. Read any object's CREATE statement. Import a CSV into a table with a header check, column mapping and NULL handling, in one transaction.

  • All rows or the selection
  • DDL for tables, views, routines, types and the rest
  • The import opens the table it filled
Guide: importing a CSV
Built for the Mac

A Mac app, all the way down.

SwiftUI and AppKit, not a browser in a box. It launches in a blink, follows your appearance, zooms with ⌘+, and speaks twelve languages.

No account. No telemetry.

Nothing to sign up for. The app talks to your servers, to GitHub for updates, to Oracle or IBM for their client libraries only if you use those engines, and to an AI vendor only if you configure one.

Guide: network use

Twelve languages

English, Chinese (Simplified and Traditional), Japanese, Korean, German, French, Spanish, Italian, Portuguese, Russian and Indonesian.

Guide: languages and zoom

Updates that keep up

Install with Homebrew or the DMG; the app checks the same feed, and installs the next signed build when you say so.

Guide: updates

Try it on your own database.

Free for the databases on your Mac, and never asking you to sign in.

Download DBClient

$brew install --cask az-code-lab/taps/dbclient