Skip to content

Quay CLI — overview

quay-cli is a small Rust binary that exists for one job: run the desktop app’s scheduled backups when the desktop app isn’t open.

The desktop app’s scheduler ticks every 60 seconds while Quay is running. That’s enough for “back this up at 3am, my Mac will be open” but not for “back up nightly even if my laptop is closed and the office Mac mini is asleep”. The CLI fills that gap:

  • Reads the same schedules.json the desktop app writes.
  • Reads the same connections.json for credentials.
  • Dumps to the same on-disk format (<conn-name>-<UTC stamp>.sql or .jsonl) at the same default path (~/Documents/Quay-backups/).
  • Persists last_run_at + last_status back so the desktop app’s schedule list shows progress next time you open it.

It’s stateless. Both files are read-mostly. The CLI doesn’t own schedule or connection definitions — those still live with the app where you can edit them visually.

ScenarioTool
”Back up at 3am, my workstation is on overnight”Desktop app’s scheduler is fine
”Back up at 3am whether or not the app is open”CLI as launchd / systemd unit
”Back up from a server with no display (headless box)“CLI only
”Back up from CI / a build pipeline”quay schedule run-once <id>
quay schedule list # print every schedule with last-run + status
quay schedule run-once <id> # fire one schedule immediately, ignoring cron
quay daemon # run the cron loop forever (the unit invokes this)

Installquay schedulequay daemonlaunchd / systemd unit.

EngineCLIDesktop app
PostgreSQL
MySQL / MariaDB
SQLite✅ (file copy)
Redis✅ (JSONL of KEYS * + GET)
MongoDB❌ — defer to v0.2 (mongodb crate dep churn)
MSSQL · DuckDB · ClickHouse · Cassandra · cloud warehouses · vector DBsnot yet

For engines the CLI doesn’t cover, leave the schedule on the desktop app — the daemon skips them with a clear status message instead of failing.

FilemacOSLinux
Schedules~/Library/Application Support/com.unclez.quay/schedules.json~/.config/quay/schedules.json
Connections~/Library/Application Support/com.unclez.quay/connections.json~/.config/quay/connections.json

If you’ve never opened the desktop app on this machine, those files won’t exist yet — quay schedule list returns “no schedules” and you need to either run the app once to create them, or hand-write the JSON (format reference).