QueryDeck Docs
CLI

Commands and flags

The full reference for qdeck arguments, flags, and subcommands.

For: developers.

Synopsis

qdeck [<target>] [--dry-run] [--yes] [--verbose] [--new-window] [--install-cli] [--uninstall-cli]
qdeck mcp install [<client>...]
qdeck mcp uninstall [<client>...]
qdeck mcp status

Arguments

<target>

Optional. Path to scan, database URL, or SQLite file.

FormBehavior
OmittedScan the current directory
. or any folder pathScan that folder for an ORM config
postgres://..., postgresql://..., mysql://..., mariadb://..., sqlite://...Use the URL directly, skip detection
something.db, something.sqlite, something.sqlite3Open the SQLite file directly

Examples:

qdeck                          # scan current directory
qdeck ./apps/api               # scan a subfolder
qdeck postgres://u:p@h:5432/db # direct URL
qdeck ./data.sqlite            # SQLite file

Flags

--dry-run

Show what would be detected without sending anything to the app. Useful in scripts or to check what qdeck sees before committing.

qdeck --dry-run

-y, --yes

Skip the confirmation prompt. The connection opens straight away.

qdeck --yes

Combine with a CI hook to launch a connected QueryDeck after a git pull:

git pull && qdeck --yes

-v, --verbose

Show the full detection trace: which detectors ran, which files were inspected, which env vars were resolved.

qdeck --verbose

If detection misbehaves, run with --verbose --dry-run and attach the output to your bug report.

--new-window

Force a new QueryDeck window even if the app is already running with a window open. Without this flag, qdeck reuses an existing window when possible.

qdeck --new-window

--install-cli

Create the /usr/local/bin/qdeck symlink that points to the binary inside the app bundle. Run once after installing QueryDeck.

qdeck --install-cli

You can also install from SettingsTools in the app, which has the same effect.

--uninstall-cli

Remove the symlink. Useful if you're upgrading QueryDeck or moving the app.

qdeck --uninstall-cli

Subcommand: mcp

The mcp subcommand manages MCP server installation for AI editors. See MCP install for the long form. The reference is:

qdeck mcp install [<client>...]

Install the MCP server config in one or more AI editor clients. Without arguments, installs into every detected client.

qdeck mcp install                          # install in all detected clients
qdeck mcp install claude                   # only Claude Desktop
qdeck mcp install claude-code cursor       # specific list

Supported clients: claude (Claude Desktop), claude-code, cursor, windsurf. See MCP install for full list and config paths.

qdeck mcp uninstall [<client>...]

Remove the MCP server config from one or more clients.

qdeck mcp uninstall claude
qdeck mcp uninstall                  # remove from all clients

qdeck mcp status

Show the install state of the MCP binary and every detected client.

qdeck mcp status

Output:

Binary:  /usr/local/bin/querydeck-mcp
App:     running, socket ready

Clients:
  Claude Desktop:  configured ✓
  Claude Code:     configured ✓
  Cursor:          installed (not configured)
  Windsurf:        not installed

Global behavior

Confirmation prompt

By default, qdeck shows what it detected and asks you to confirm before opening QueryDeck. Press Y or Enter to confirm, N to abort.

The detection summary includes the ORM, the database URL with the password redacted, the config file path, and the environment classification (local/staging/production).

To skip the prompt entirely, use --yes.

The app socket

qdeck communicates with the QueryDeck app via a Unix socket at ~/Library/Application Support/QueryDeck/cli.sock. The app starts listening on the socket the first time it launches.

If the app isn't running, qdeck will launch it for you. The launch takes about 1 second on Apple Silicon.

If the socket is stuck (rare), force-quit QueryDeck and try again.

Exit codes

CodeMeaning
0Success
1Unknown error
2No database config found
3App not installed or not reachable
4User declined the confirmation prompt
5License blocks the CLI (trial expired)

What's next