Use cases
Built for the work most clients hand off to a CLI.
Six scenarios where Quay earns its keep — picked from the patterns that come up over and over in real database work.
-
Case 01
Restoring after an incident
Where it hurts
Most dumps fail to restore on the first try. Foreign keys reference rows that haven't been inserted yet, charsets don't match, AUTO_INCREMENT is gone, triggers parse wrong. You spend the outage hand-editing SQL.
How Quay handles it
Quay's exporter computes a topological order from the FK graph, emits CREATE TABLE → INSERT → indexes → FKs → triggers → views/routines in dependency order, preserves charset and collation at every level, and wraps the dump in a transaction with foreign-key checks disabled around the data load. Encrypted (.qenc) dumps decrypt automatically on import. Each dialect has an integration test that exports → drops the schema → re-imports and verifies row counts match.
- ↳ FK-ordered exports
- ↳ Encrypted .qenc envelopes
- ↳ Round-trip verified
-
Case 02
Editing production data safely
Where it hurts
Every other client treats a stray double-click on a prod cell the same as a dev cell. One Enter and the change is gone — no preview, no diff, no friction.
How Quay handles it
Edits stage in a per-session pending buffer — SQL rows, Mongo fields, Redis hash/list/set/zset members all go through the same flow. ⌘S opens a review with each old → new diff. Production-tagged connections require typing the connection name before the commit fires. Same gate fires for raw mutating SQL, ALTER TABLE, CREATE/DROP INDEX, restore, and copy-table.
- ↳ Edit-as-draft buffer
- ↳ Tier-1 prod confirmation
- ↳ Same flow across all six engines
-
Case 03
Catching schema drift
Where it hurts
Dev, staging, and prod silently diverge. A column type drifts, an index disappears, a default value changes — and you don't find out until the next deploy.
How Quay handles it
Open two connections. Quay walks every table on both sides, surfaces tables present on only one, and per-column compares the rest — type, nullability, primary key, default. Pills show how many tables match and how many differ at a glance. Click a table to expand the column-level diff. Same-dialect copy-table is one click away when you find what's wrong.
- ↳ Side-by-side schema diff
- ↳ Per-column compare
- ↳ Same-dialect copy table
-
Case 04
Handing off a backup safely
Where it hurts
You need to send a snapshot to a contractor, a vendor, or another team — but the .sql contains real customer data, and email/Slack/S3 aren't safe channels for cleartext dumps. Manually piping through gpg works but everyone forgets the right flags.
How Quay handles it
Tick "Encrypt the file" in the backup dialog. Quay seals the .sql in a single-file .qenc envelope: AES-256-GCM with an Argon2id-derived key (m=64 MiB, t=2). Wrong-password and tampered files fail fast. The Suggest button proposes a strong four-word + four-digit passphrase. Restore picks up .qenc automatically.
- ↳ AES-256-GCM + Argon2id
- ↳ Passphrase suggestion
- ↳ Tamper-evident on restore
-
Case 05
Onboarding to an unfamiliar database
Where it hurts
You inherit a database with two hundred tables, no documentation, and column names like 'cd' and 'flg'. You'd like to know what anything means — and what your queries cost — before you touch it.
How Quay handles it
Run any SELECT and click Explain. Quay parses the dialect-specific plan (MySQL row format, Postgres FORMAT JSON, SQLite QUERY PLAN) and surfaces the actual issues — Seq Scan on a 14M-row table, filesort on the ORDER BY, Sort spilled to disk — with concrete fixes. Deterministic, no AI. Save the queries you find useful to a per-connection bookmark list; persistent history covers everything else.
- ↳ EXPLAIN plain-language tips
- ↳ Saved queries + history
- ↳ All deterministic, no AI
-
Case 06
Air-gapped or private databases
Where it hurts
Compliance, healthcare, finance, government — a lot of databases can't see the internet, can't have third-party CLIs installed, and definitely can't have schema content sent to an LLM. Most modern clients fail at least one of those constraints.
How Quay handles it
Every export, import, encryption, EXPLAIN, schema diff, and structure operation is implemented natively in Rust. Zero external CLI dependency — no mysqldump, pg_dump, mongodump. Zero AI dependency — no API keys, no LLM round-trips. Schema and queries never leave the machine. The integration test suite proves it: every dialect's flow runs offline.
- ↳ Zero external CLIs
- ↳ No AI dependency
- ↳ Native end-to-end
See your use case?
Join the waitlist — we'll email you the first build.