01/Foxlume Query

Database client · macOS 13+

All projects
Foxlume Query app icon
01Foxlume QueryAlpha 0.1.0

Query with confidence.

A native macOS database client for PostgreSQL, MySQL, SQLite, DuckDB, MongoDB, Redis and MariaDB. Light enough to keep open all day, careful enough to point at production.

v0.1.0 · alphaNo prebuilt download yetRoadmap
git clone https://github.com/dannymaster1995-developer/foxlume-query.git
Category
Database client
Requires
macOS 13 Ventura+
Chip
Apple silicon
Engines
7 · 2 supported, 5 beta
Safety
Prod confirm · WHERE check · read-only
Secrets
macOS Keychain
Licence
GNU AGPL v3+
Telemetry
None
FIG. 01 — Production connection, read-onlyProd Postgres
PostgreSQLMySQLMariaDBSQLiteDuckDBMongoDBRedis

02/Overview

What it is

What is Foxlume Query?

Foxlume Query is a free, open-source database client for macOS, written in Swift with AppKit and SwiftUI. It connects to PostgreSQL, MySQL, MariaDB, SQLite, DuckDB, MongoDB and Redis, with no Electron, no JVM and no drivers to install, and it asks before it changes data on a production connection.

Built by Vu Nguyen. Inspired by TablePro, not affiliated with it.

P-01Privacy

No telemetry

The app makes no network connections other than the ones you configure.

P-02Privacy

No account

Nothing to sign up for. Connections and history stay in a folder on your Mac.

P-03Privacy

Free software

Licensed under the GNU AGPL v3 or later. Read it, change it, build it yourself.

03/Safe by default

Four checks, in order

It asks before it touches production.

Scroll through what happens between pressing Run and the database. The prompts, their wording and their order are the ones Foxlume Query shows.

  1. Mark it Production.

    Every saved connection carries an environment: Local, Development, Staging or Production. The badge follows it into the connection list and the window toolbar, so you always know where you are.

  2. A DELETE without WHERE stops.

    Before an UPDATE or DELETE that would change every row of its table runs, Foxlume Query shows the statement and asks. The button says Run Anyway, on purpose.

  3. Writes on production ask first.

    On a connection labelled Production, every statement that may change data asks before it is sent. Grid saves and staged truncates and drops ask too.

  4. Read-only, enforced by the server.

    Turn on Read-only and, on PostgreSQL, MySQL and MariaDB, the database session itself refuses writes. SQLite and DuckDB files open read-only too.

FIG. 03 — Environment on every connectionConnection list
Try it yourself

Pick a statement, flip the settings, press Run.

Try itorders-db
Connection environment
Settings › Safety
Connection
orders-db
PRODUCTIONPostgreSQL 18shop · public12 ms
Tablesorderscustomersinvoicesproductsrefunds
DELETE FROM orders;

Run a statement without WHERE?

These change every row of their table:

DELETE FROM orders

Run a statement without WHERE? These change every row of their table:

04/Features

12 items · available today

Everything you reach for, every day.

FIG. 04 — Editor, completion, historyLocal Postgres
Available
F-01

A query editor that keeps up

Run the statement under the cursor with ⌘↩, run everything, or cancel with ⌘. Format SQL, open and save .sql files.

Available
F-02

Completion from your schema

Tables, columns, aliases, functions and types for SQL; collections and operators for MongoDB; commands and keys for Redis.

Available
F-03

Edit data in place

Change cells, add, duplicate or delete rows, with undo and redo. Changes are coloured until you save them.

Available
F-04

Filters without writing SQL

13 operators per column, or a raw WHERE, a MongoDB filter or a Redis key pattern. Paging and sorting run on the server.

Available
F-05

Schema at a glance

Tables, views, collections or Redis keys in a filterable sidebar. Columns, indexes, foreign keys and DDL for every table.

FIG. 05 — Structure and DDLLocal MySQL
Available
F-06

History you can search

Every query is kept, up to 10,000, with full-text search across one connection or all of them.

Available
F-07

Copy and export

CSV, TSV, JSON, SQL INSERT or Markdown, to the clipboard or to a file, with or without a header row.

Available
F-08

SSH tunnels and TLS

Connect through ssh with your agent, a key file or a password. TLS modes from Disabled to Verify Full.

Available
F-09

Passwords in the Keychain

Saved connections never hold a password. They live in the macOS Keychain.

Available
F-10

Open from a URL or a file

Paste a postgres://, mysql://, mongodb:// or redis:// URL, or double-click a .sqlite, .duckdb or .parquet file.

Available
F-11

Reconnects on its own

A health check every 30 seconds by default. A query on a dropped connection reconnects first.

Available
F-12

13 themes, or bring yours

Dracula, Nord, One Dark, Solarized, Catppuccin and more, one for light and one for dark. Import VS Code themes.

05/Databases

07 engines · 02 supported

Seven databases, one way of working.

Most drivers are written in Swift inside the app, so there is nothing else to install. PostgreSQL and MySQL come first; the other five work and are marked Beta while they get more testing.

Databases Foxlume Query connects to, with their status and the version tested
DatabaseStatusTested withHow it connects
PostgreSQLSupported18Own Swift driver: SCRAM-SHA-256, MD5, TLS. Schemas, views, materialized views and foreign tables.
MySQLSupported8.4Own Swift driver: caching_sha2_password (fast path, RSA, TLS) and mysql_native_password.
MariaDBBetaNot yet testedSame driver as MySQL.
SQLiteBeta3.51The system libsqlite3. Opens .sqlite and .db files and creates new ones.
DuckDBBeta1.5.6Bundled DuckDB library. Opens .duckdb files, and Parquet, CSV, TSV and JSON files directly.
MongoDBBeta8.2Own Swift driver: SCRAM-SHA-1/256, TLS, mongodb+srv. A JavaScript shell runs MQL.
RedisBeta8.xOwn Swift driver: RESP2/RESP3, ACL, TLS, Sentinel and Cluster. Keys shown as a tree.

06/Keyboard

10 shortcuts

Your hands stay on the keys.

Real macOS menus mean every command has a shortcut you can see. These are the ones you will use most.

⌘↩
Run the statement under the cursor
⇧⌘↩
Run everything in the editor
⌘.
Cancel a running query
⇧⌘L
Format SQL
⇧⌘P
Preview the SQL a save will run
⌘S
Save grid changes in one transaction
⇧⌘F
Filter the table
⌘K
Switch database
⌘Y
Show query history
⇧⌘T
Reopen a closed tab

07/Telemetry

Counted in the source · v0.1.0

Counted in the code, not guessed.

Every number below comes from the Foxlume Query repository. Launch time and memory will be published once they are measured on a release build.

T-01 · Databases7

PostgreSQL and MySQL supported, five more in beta.

T-02 · Editor themes13

Built in, plus any VS Code theme you import.

T-03 · Export formats5

CSV, TSV, JSON, SQL INSERT and Markdown.

T-04 · Automated tests317

In the repository, run on CI with macOS 15.

08/Who it is for

Three kinds of user

Built for people who live in their database.

U-01

Developers who touch production

Label the connection Production and every write asks first. Make it read-only and PostgreSQL or MySQL refuse writes for the whole session.

U-02

Mac users tired of heavy clients

A real AppKit app with native menus, windows, tabs and shortcuts. No browser engine underneath.

U-03

Teams with more than one database

Postgres for the app, Redis for the cache, Mongo for events, a Parquet file from the data team: one window each, one way of working.

09/Roadmap

Phase 04 of 05

Where it is, and where it is going.

Foxlume Query is in early alpha (0.1.0). It is usable day to day but has not seen wide use yet.

Phase 01

Foundations

Connection manager, SSH tunnels, Keychain, environment labels, safety prompts

Done
Phase 02

PostgreSQL and MySQL

Own Swift drivers, server-side read-only sessions, server-side paging

Done
Phase 03

Editor and grid

Completion, in-place editing, filters, history, export

Done
Phase 04

Five more engines

MariaDB, SQLite, DuckDB, MongoDB and Redis, in beta today

In progress
Phase 05

First public release

A signed download and the public repository

Planned
Not there yet

So you know before you try it.

The README lists these as missing today. None of them is promised a date.

  • SQL Server and other engines
  • Editing table structure or creating tables
  • Importing data
  • Exporting many tables at once, or Excel files
  • ER diagrams
  • A prebuilt download (build from source for now)
  • A download signed with an Apple Developer ID (the app is signed ad hoc)
  • Intel Macs (Apple silicon only)

10/Release notes

No release yet

Every release, what changed.

The three latest releases, from the changelog in the Foxlume Query repository. Every older release, with its download and checksum, is on GitHub.

Soon

No release yet

The first public release is being prepared. Until then, Foxlume Query builds from source.

Planned

11/FAQ

08 questions

Questions, answered.

A native macOS database client written in Swift. It connects to PostgreSQL, MySQL, MariaDB, SQLite, DuckDB, MongoDB and Redis, edits data in place, and asks before it changes data on a production connection.

PostgreSQL and MySQL are supported. MariaDB, SQLite, DuckDB, MongoDB and Redis work and are marked Beta in the app: they have had less testing and some features are missing. SQL Server is not supported yet.

Yes. Foxlume Query is free software under the GNU AGPL v3 or later. There is no paid tier and no licence key.

That is what it is built for. Label the connection Production and it asks before every statement that may change data. Turn on Read-only and, on PostgreSQL and MySQL, the database session itself refuses writes.

No. The app sends no telemetry and makes no network connections other than the ones you configure. Passwords stay in the macOS Keychain.

macOS 13 Ventura or later on Apple silicon. Intel Macs are not supported yet.

It is in early alpha (version 0.1.0) and there is no prebuilt download yet. You build it from source with Swift 6 from Xcode or the Command Line Tools.

Foxlume Query is inspired by TablePro and is not affiliated with it.

12/Get it

macOS 13+ · Apple silicon

Alpha 0.1.0 · Free software

Point it at production. It will ask first.

Build it from source today, report what breaks, and watch the beta engines grow up.