A blazing-fast MySQL GUI — built with Rust & React.
Think MySQL Workbench, but actually good.
Features • Quick Start • Tech Stack • Contributing • License
SQLPilot is a modern, open-source, cross-platform MySQL database management tool. It combines a Rust backend (via Tauri 2) with a React frontend to deliver native desktop performance in a small binary — no Electron bloat, no JVM overhead. It works with MySQL 8 and MariaDB 11, and can also open local SQLite files.
Why this over MySQL Workbench, DBeaver, or SQLyog?
- ⚡ Instant startup — native binary, not Java
- 🪶 Small footprint — the OS webview instead of a bundled browser or JVM
- 🎯 Covers the most-used SQLyog features — everything you need, nothing you don't
- 🔓 Fully open source — MIT licensed, no telemetry, no paywalls
- Monaco Editor — the same editor engine as VS Code
- Schema-aware autocomplete — suggests tables after
FROM, columns afterSELECT, databases afterUSE, plus MySQL keywords and functions - SQL formatting — one-click beautify with
Ctrl+Shift+F - Find & replace —
Ctrl+F/Ctrl+Hwith Monaco's built-in search - Multi-tab editor — drag to reorder, middle-click to close, double-click to rename, unsaved indicators
- Query execution —
Ctrl+EnterorF9for the statement at the cursor,Ctrl+Shift+Enterfor all; multi-statement support with result tabs;Ctrl+.cancels
- Sortable columns with click-to-sort headers
- Inline cell editing — double-click to edit, generates
UPDATE/INSERT/DELETEstatements with primary key detection - Export — Copy, CSV, JSON, SQL, Markdown with one click
- Right-click context menus — copy cell, copy row, copy as INSERT statement
- Full object tree — databases → tables, views, procedures, functions, triggers
- Table structure viewer — columns, indexes, and DDL in a tabbed panel
- Context menus — SELECT top 100, view structure, copy name, drop, design table
- Double-click actions — tables open data, procedures open the viewer/executor
- Table Designer — create and alter tables with a visual form: column editor, index editor, foreign key editor, table options, DDL preview
- EXPLAIN Visualizer — color-coded execution plan with cost bars, access type legend, and tree view for
EXPLAIN ANALYZE
- Process list — auto-refreshing with time color-coding and kill process button
- Server variables — searchable, grouped by category, copy-to-clipboard
- Server status — metric cards (uptime, QPS, connections, buffer pool, threads, slow queries)
- User management — list users, view/edit privileges with checkbox grid, create/drop users, change passwords
- Backup — full SQL dump with options: structure only/data only/both, DROP TABLE, multi-row INSERTs, views/procedures/triggers inclusion, progress tracking
- Restore — SQL file execution with progress bar and error reporting
- SQL import — execute
.sqlfiles with statement splitting and progress tracking - CSV import — configurable delimiter, header detection, column mapping to target tables, batch INSERTs
- Export formats — CSV, JSON, SQL (
INSERTstatements), Markdown
- Connection profiles — save, test, color-code, and label connections
- SSL/TLS — configurable SSL mode (disabled → verify identity), CA cert, client cert/key
- Environment labels — tag connections as Development, Staging, or Production
- Production safety — confirmation dialogs before running
DROP/DELETE/TRUNCATEand other destructive statements on production - Read-only connections — enforced in the backend, not just the UI
- SQLite files — open a local SQLite database file and browse and query it in the same panes
SSH tunnelling is not supported yet: a profile configured for a tunnel is refused rather than connected directly.
- Query history — every execution recorded with timestamp, duration, row count, status; searchable and click-to-reload
- Query favorites — save queries with name, category, and description; organized in folders
- Stored procedure/function viewer — auto-detect parameters, execute with input form, display results
SQLPilot never calls a model, never holds an API key, and never signs in for you. It exposes your databases to the agent CLI you already have, on terms you set, over the Model Context Protocol.
- Your harness, your account — Claude Code and GitHub Copilot CLI run inside the app, logged in as you. 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
- Writes are approved in SQLPilot's window — the statement runs inside a
transaction that is not committed, so the question you answer says 4,213
rows, not some rows. Saying no rolls it back. No harness flag,
--yoloincluded, can skip this - Schema changes are refused on production unless you unlock that connection, because a server commits before a schema change and there is nothing to roll back
- Credential columns never leave —
password,api_key,ssnand the rest return no values at any posture, in queries, profiles, or the grid the agent is reading over your shoulder - 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 bearer token you can rotate, and refuses anything a browser sent
- Dark & light themes — toggle with one click, or follow system preference; Monaco editor theme syncs automatically
- Keyboard shortcuts —
Ctrl+Nnew tab,Ctrl+Wclose,Ctrl+Tabcycle,F1shortcuts help,F9execute,F5refresh schema, and more - Color-coded tabs — connection color stripe on every tab for quick identification
- Structured logging — console plus a daily JSON log file in the app data folder; connection passwords are never logged
Pre-built binaries are available on the Releases page for:
- Windows —
.msiinstaller, NSIS setup.exe, or portable.exe - macOS —
.dmg(Intel + Apple Silicon) - Linux —
.deb,.AppImage,.rpm
- Download and install for your platform
- Open SQLPilot
- Click Connect in the connection bar, then New Connection…, and enter your MySQL or MariaDB server details
- Configure SSL if needed (a tab in the connection dialog)
- Click Test Connection to verify, then Save
- Pick the profile from the Connect list to connect and start querying
Frontend: React 19, TypeScript, Vite, Monaco Editor, TanStack Table and TanStack Virtual, Zustand, Tailwind CSS, sql-formatter, Lucide.
Backend (Rust): Tauri 2, sqlx for MySQL/MariaDB, tokio, rusqlite for local storage and SQLite files, the OS credential store for passwords, rmcp for the agent endpoint, tracing for logs.
Architecture and design notes are indexed in docs/README.md.
Contributions are welcome. Setup, tasks, tests and the PR workflow are in CONTRIBUTING.md.
Built on top of these excellent open-source projects:
- Tauri — desktop app framework
- Monaco Editor — code editor
- TanStack Table — headless table library
- sqlx — async SQL toolkit for Rust
- Zustand — state management
- Lucide — icon library
Inspired by the best features of SQLyog, DBeaver, and MySQL Workbench — with none of their baggage.
This project is licensed under the MIT License.
Made with ❤️ and 🦀
SQLPilot — because your database tool shouldn't be the slowest thing in your stack.
