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.

No spam. One email when the first build ships.