- Start the app.
- Create a connection: Connection → New Database Connection (or right-click Servers in the tree).
- Pick PostgreSQL, MySQL, SQLite, Redis, or MongoDB. For SQLite, select the database file; for other databases, fill in host, port, and credentials.
- Read-only mode: You can toggle the Read-only option to prevent write operations (a lock icon will appear in the workspace).
- Saved connections appear in the left tree.
The application menu and window title bar provide actions for managing database connections:
- Connect: Connect to the selected database connection.
- Invalidate/Reconnect: Refresh and re-establish the connection to the database.
- Disconnect: Safely close the active session.
- Read-only: Toggle read-only mode for the current session.
- Open the connection form and enable SSH tunnel.
- Enter the bastion host, port (default 22) and user, and choose the auth method: password, private key (path to the key file, optional passphrase) or SSH agent. For a second hop, fill the jump host fields.
- Optionally paste the server's SHA-256 host key fingerprint to pin it. Without it the first key seen is trusted.
- Click Test SSH Connection. On success, save the connection; Querya forwards the database port through a local loopback port automatically.
The database host and port in the form are the ones as seen from the bastion (for example a private RDS address).
Command Palette (Ctrl+P) → Export Team Profile… writes a team-profile.querya file with every connection but no passwords or SSH secrets. A teammate runs Import Team Profile…, then enters their own passwords when connecting. Existing connections are skipped.
- Connection list and settings: local SQLite (
querya.dbunder the app support directory). - Passwords / connection strings: OS secure store (see security.md).
Open Edit → Preferences… to change options that apply across the app:
- SQL statement timeouts (PostgreSQL and MySQL) — global defaults for every connection of that type, not per-server. You can still change the timeout from the SQL workspace toolbar; both places stay in sync.
- Max rows in results — how many rows are loaded into the grid after running a query (large results may be truncated with a status message).
- SQL editor font size — monospace size in the query editor.
Preferences (except secrets) live in the same local SQLite file as connection metadata. A settings icon next to the statement timeout in the PostgreSQL/MySQL SQL toolbar opens the same dialog.
Connection → Driver Manager lists built-in Dart drivers. You do not need to download a JDBC JAR to connect.
- Wayland: if you see Gdk pointer warnings, try
GDK_BACKEND=x11 flutter run -d linuxor run via./run_linux.shas documented in the README. - libsecret: release builds on Linux link against the system keyring stack; distro packages such as
libsecret-1-devare required to compile the Linux desktop binary (CI installs these headers).
High-level feature depth varies by database type. PostgreSQL, MySQL, and SQLite include rich object trees and SQL workspaces (with SQLite utilizing local .db files); Redis and MongoDB focus on data exploration and commands suitable for day-to-day development.
- Collections tree: collections expand under each database in the sidebar; the toolbar returns to the last open collection or key in one click.
- Document viewer: switch between Table, Tree and JSON modes of the same result.
- Aggregation builder: compose a pipeline stage by stage, preview and run it.
- Index manager: list, create and drop indexes visually.
- MQL console: run shell-style queries against the selected database.
- Redis keys: keys are grouped into folders by the
:delimiter; the Redis CLI console runs commands with Tab completion (preferSCANoverKEYSon large databases).
Preferences → Max rows in results caps how many rows the grid loads. For PostgreSQL and SQLite, ad-hoc SELECT / WITH / VALUES are bounded before execution:
- No author
LIMIT→ aLIMITequal to the preference is injected. - Author
LIMIT/LIMIT ALL/FETCH FIRST n ROWS ONLYlarger than the preference → clamped down to the preference (OFFSET kept when present).
Queries that already use a smaller LIMIT, and non-SELECT statements (INSERT, PRAGMA, …), are left unchanged. The UI may still truncate the displayed grid as a fallback. MySQL SQL workspace streams rows and stops at the cap client-side.
For troubleshooting build/run issues, see the main README.md.