Repository navigation
SQLPilot 1.0.0
Pre-releaseWarning
Superseded by 1.0.1. Do not install this version.
1.0.0 cannot open a connection store written by 0.4.0 or earlier — which is
every earlier release, because the schema-migration framework shipped for the
first time here. It starts with an empty connection list and a banner.
Nothing is lost. The file is left untouched by design; 1.0.1 opens it and
your connections come back. Do not delete connections.db to fix the empty
list — that is the only way to actually lose them.
SQLPilot 1.0.0 — the release where the backlog reached zero.
194 commits since 0.4.0. Every open issue that survived being questioned is
fixed and verified against MySQL 8.0.46 and MariaDB 11.8; the one that remains
waits on Rust, not on us.
Agents, on your terms
The headline. SQLPilot never calls a model, never holds an API key, and never
signs in for you. It hands your databases to the agent CLI you already
have — Claude Code or GitHub Copilot — over the Model Context Protocol, on
terms you set.
- A session in the app. Pick the harness that is installed and it runs in a
panel beside the editor: streaming answers, tool calls, its plan, and its own
permission prompts as buttons in this window rather than in a terminal you
cannot see. Any other MCP client can use the same endpoint from a terminal or
an editor. - Nothing is shared until you share it, per connection, with a posture —
schema only, samples, or full — and optionally for one database out of
twenty. Production defaults to schema only. - Writes are approved here, always. The statement runs inside a transaction
that is not committed, so the question you answer says 4,213 rows, not
some rows, and saying no rolls it back. No harness flag —--yolo
included — reaches this. - Schema changes are refused on production unless you unlock that
connection, because both servers commit before a schema change and there is
nothing to roll back afterwards. - Credential columns never leave.
password,api_key,ssnand the rest
return no values at any posture, and a connection can add the patterns its
own schema uses. - It can see what you are looking at — the statement in the editor, the
result underneath it, the error you just hit — and offers changes as a diff
you accept, reject, or edit first. - The endpoint is loopback-only, behind a rotatable bearer token, and
refuses anything a browser sent.
There is an end-to-end test that asks a real agent, over a real endpoint,
about a real database, and checks it answers from the data rather than from
memory.
Query history, rebuilt
Moved out of localStorage into SQLite, and now worth using: every statement
recorded with where it came from, a multi-statement run recorded one statement
at a time rather than as one opaque failure, filtering and sorting and export,
a retention period, repeated statements collapsed, a keyboard picker over the
editor, and passwords stripped on the way in rather than on the way out.
The grid
Per-column filters and paging, multi-column sort, drag-to-reorder, row
selection with copy in the formats people actually paste into, readable BLOBs,
column types in the header, NULL from the context menu, and an honest row count
instead of "some rows are missing".
Administration
Replication monitoring, role management, in-place variable editing, a process
list you can filter by user, database and state, and user editing that goes
beyond the password.
Everywhere else
Themes you can choose, edit and export. Favourites in nested categories, with
import and export, and no passwords stored in a saved query. Backup and restore
streamed in the backend instead of built in memory. Query plans as JSON or an
iterator tree. Connection health watching with pool statistics. Schema events,
system databases, drag-into-editor. TypeScript bindings generated from Rust, so
the two halves of the app cannot drift.
What the fixes were mostly about
Not features: correctness under the conditions nobody tests. Backups silently
dropped DATETIME(6) precision and rounded BIGINTs through f64. A view restored
into the wrong database. A timed-out statement never returned its connection on
MariaDB. MariaDB JSON columns arrived as hex. Four startup failures panicked
before a window existed. Grid edits addressed the wrong row when a table had no
primary key. Every one of those is now a test that runs against both servers.
Upgrading
In-app update as usual. Existing connections, favourites and settings are
carried forward; query history migrates from localStorage on first launch.
The agent surface is off until you turn it on: Settings → Agents.
Downloads
| Platform | File |
|---|---|
| Windows (portable) | SQLPilot.exe |
| Windows (installer) | SQLPilot_1.0.0_x64_en-US.msi or SQLPilot_1.0.0_x64-setup.exe |
| macOS (Apple Silicon) | SQLPilot_1.0.0_aarch64.dmg |
| macOS (Intel) | SQLPilot_1.0.0_x64.dmg |
| Linux | SQLPilot_1.0.0_amd64.deb, SQLPilot-1.0.0-1.x86_64.rpm, or SQLPilot_1.0.0_amd64.AppImage |