Skip to content
LowBloatPublic

About

A light SQL client for people who work with many databases. PostgreSQL and Oracle through native drivers, no Oracle Client needed.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

LowQuery logo

LowQuery

A light SQL client for people who work with many databases.
Each one through its own native driver, the way it is meant to be used.

Latest release Build and tests License: AGPL-3.0-only

Download the app · Get started · How it works · Contribute


LowQuery is an open-source desktop SQL client for Windows, Linux and macOS. It connects to PostgreSQL, Oracle, MySQL, MariaDB, SQL Server, SQLite, Redis and Apache Cassandra, and treats each one as itself: every engine goes through its own native driver and protocol, with server-side row limits, exact values and the script rules of that engine. Oracle needs no Oracle Client or Instant Client. The app is built with Tauri and Rust, so it starts fast and stays small.

Database How LowQuery connects
PostgreSQL Extended protocol with tokio-postgres
Oracle oracledb, Oracle's official thin driver in pure Rust
MySQL and MariaDB Native protocol with mysql_async
SQL Server and Azure SQL TDS protocol with tiberius, SQL logins or Windows accounts
SQLite Embedded engine (rusqlite), opens local database files
Redis and Valkey RESP3 with redis-rs: redis-cli commands, results as tables, keys browsed by type
Apache Cassandra CQL native protocol with scylla (Cassandra 3.x to 5.x): keyspaces, tables, views, types and functions from system_schema, exact CQL values

LowQuery on Windows with the schema browser, SQL editor and result grid

A PostgreSQL query in LowQuery, with the schema browser on the left and the result grid below the editor.

Why LowQuery?

  • Native per database. No ODBC or JDBC layer in the middle. Types, transactions, scripts and errors follow each engine's own rules.
  • Exact values. NUMERIC and NUMBER keep every digit, dates keep their precision, and infinite dates, intervals, arrays and ranges show up the way the server writes them.
  • Large tables are safe to open. The row limit is applied by the server, so SELECT * on a big table does not pull it across the network.
  • Oracle without the client install, and with yours when you have it. No Oracle Client is required, yet LowQuery reads the tnsnames.ora your machine already uses: from TNS_ADMIN, ORACLE_HOME, the Oracle homes in the Windows registry or an Instant Client on PATH. Pick an alias, import many at once, or connect by service name, SID, descriptor or Easy Connect, as SYSDBA when needed.
  • Passwords stay in your keychain. Profiles are a plain JSON file; passwords live in Windows Credential Manager, macOS Keychain or Linux Secret Service.
  • Works with AI agents. A built-in MCP server lets Claude, Cursor, VS Code, Codex and other agents list the connections you open to them, read schemas, find tables and run SQL. Each connection is off, read-only or read-write for agents, read-only is enforced by the database session itself, and every call is logged. See docs/AI.md.
  • Bring your connections with you. Import them from DBeaver, DataGrip, pgAdmin 4, Oracle SQL Developer or tnsnames.ora. DBeaver's saved passwords go straight to your system keychain.
  • Edit rows where you read them. When a result comes from one table and includes its primary key, change cells, add, duplicate or delete rows in the grid and save them in one transaction. LowQuery asks the database which table and key each column comes from instead of guessing from the SQL, binds every value with its column type, and undoes the whole save when a row's key no longer matches exactly one row.
  • Manage objects from the tree. Right-click a connection, schema or table: create, edit, rename, duplicate, empty or drop tables in a designer that writes each engine's own ALTER TABLE, show any object's DDL as the database itself scripts it, generate SELECT/INSERT/UPDATE/DELETE, create schemas and databases, or see the server's sessions. Every change shows its SQL before it runs and can open in the editor instead.
  • Export and import in two clicks. Right-click a table or a schema and choose Export…: a SQL script that recreates it with its rows (or only the structure, or only the data), CSV, CSV ready for Excel, or JSON, streamed from the server so large tables are fine. Import data… reads CSV or JSON, detects the encoding, delimiter and header, matches columns by name, understands 1.234,56 and 31/12/2024, and loads everything in one transaction; a file can also become a new table. Run SQL file… runs a script, such as an export, with progress.
  • Errors you can act on. Native codes (SQLSTATE, ORA-NNNNN), detail and hint, with the failing token underlined in the editor.
Writing queries Reading results
CodeMirror editor with each engine's dialect Virtualized grid for thousands of rows
Autocompletion from the schema browser Local sorting, resizable columns, keyboard navigation
Run the statement under the cursor, a selection or the whole script Value viewer with formatted JSON
PL/SQL blocks with /, PostgreSQL $$ bodies, MySQL DELIMITER, SQL Server GO Copy as TSV, export to CSV or JSON
One session per tab, autocommit or Commit/Rollback RAISE NOTICE, DBMS_OUTPUT and MySQL warnings in the Messages tab
Script results in separate tabs Edit cells, add and delete rows, then save or discard

Get started

Download

The latest release includes these builds:

Platform Available formats
Windows x64 Setup .exe, .msi, portable .zip
Linux x64 .AppImage, .deb, .rpm, Arch .pkg.tar.zst, portable .tar.gz
macOS (Apple Silicon and Intel) Universal .dmg

Arch Linux, Omarchy and other Arch-based systems. Install the native package with sudo pacman -U LowQuery-<version>-linux-x86_64.pkg.tar.zst. Each release also publishes a PKGBUILD with real checksums that builds the same package from the portable archive with makepkg -si.

Verify a download. Each release has .sha256 files, a SHA256SUMS file, an SPDX software bill of materials (*-sbom.spdx.json) and GitHub build provenance attestations. With the GitHub CLI:

gh attestation verify LowQuery-<version>-linux-x64.AppImage --repo LowBloat/LowQuery

Updates. Installed copies on Windows, macOS and AppImage update themselves: LowQuery checks for a new release in the background, shows what changed and installs it when you choose Install and restart. Updates are signed and verified before installation. .deb, .rpm and portable copies are told when a new version is out and link to the download.

First launch on Windows and macOS. The installers are not code-signed yet, so the system warns on first launch:

  • Windows: SmartScreen shows "Windows protected your PC". Choose More info → Run anyway.
  • macOS: Gatekeeper may say the app "is damaged" or "cannot be opened". Right-click LowQuery in Applications and choose Open, or run xattr -dr com.apple.quarantine /Applications/LowQuery.app once.

Run your first query

  1. Open LowQuery and choose New connection.
  2. Choose the database by its logo, fill in the server and user (or the file, for SQLite), and choose Test connection. For Oracle, TNS alias lists the aliases from the detected Oracle client. Already use another tool? Import connections in the sidebar brings them from DBeaver (with user names and saved passwords), DataGrip, pgAdmin 4, Oracle SQL Developer or a tnsnames.ora, without changing anything in the other tool.
  3. Save. The connection appears in the sidebar; expand it to browse schemas, tables and columns, and right-click any of them for its actions.
  4. Type SQL in the editor and press Ctrl+Enter (⌘+Enter on macOS) to run the statement under the cursor, or Ctrl+Shift+Enter / F5 to run the whole script.
Shortcut Action
Ctrl+Enter Run the selection or the statement under the cursor
Ctrl+Shift+Enter, F5 Run the script, one statement at a time
Ctrl+T / Ctrl+W New tab / close tab
F2 on a tab, double-click Rename the tab
Ctrl+C / Ctrl+Shift+C in the grid Copy the value / the row
Double-click, Enter or F2 in the grid Edit the cell (or open the value viewer when the result is read-only)
Typing over a cell Replace its value
Insert / Delete in the grid Add a row / mark the row for deletion
Ctrl+Z in the grid Revert the cell
Ctrl+S in the grid Save the changes

How it works

Database Row limit Values Server messages Cancel Scripts
PostgreSQL Portal executed with max_rows Binary format decoded per type into server-style text: exact NUMERIC, infinite dates, intervals, arrays, ranges NOTICE, WARNING Server cancel protocol ;, $$ bodies, nested comments, E'' strings
Oracle prefetch_rows and fetch size sized from the limit NUMBER, DATE, TIMESTAMP with time zone, RAW/BLOB, CLOB, JSON, VECTOR, intervals DBMS_OUTPUT Not in the driver yet; scripts stop before the next statement ; for SQL, / for PL/SQL, q'[...]' strings
MySQL, MariaDB sql_select_limit on the server Text protocol: exact DECIMAL, unsigned BIGINT, zero dates, binary as hex SHOW WARNINGS KILL QUERY from a second connection DELIMITER, # comments, backticks, backslash escapes
SQL Server, Azure SQL SET ROWCOUNT for plain SELECT batches Exact decimal, datetime2 and datetimeoffset precision, uniqueidentifier, binary as hex Not exposed by the driver yet TDS attention GO batches, BEGIN...END blocks, [brackets]
SQLite Stops stepping at the limit Storage class and declared type; blobs as hex — sqlite3_interrupt Trigger bodies, [brackets], backticks
Redis, Valkey Long replies cut at the limit; the tree uses SCAN RESP3 types: maps as field/value, WITHSCORES as member/score, INFO as rows — CLIENT UNBLOCK for blocking commands One redis-cli command per line, # comments
Apache Cassandra Paging: the page size comes from the limit and reading stops there Exact varint and decimal, timestamp, date, time, duration, uuid, blobs as hex; collections, tuples, UDTs and vectors as CQL literals Server warnings (tombstones, aggregations without a partition key) Stops waiting; CQL cannot cancel on the server ;, BEGIN BATCH ... APPLY BATCH as one statement, $$ bodies, --, // and /* */ comments

Network configuration. PostgreSQL, MySQL, MariaDB and SQL Server use host, port and database, with disable, prefer, require or verify-full TLS. SQL Server also takes a named instance (found through SQL Server Browser) and can sign in with the Windows account running LowQuery. Oracle reads the tnsnames.ora found through TNS_ADMIN, ORACLE_HOME, registered Oracle homes or an Instant Client on PATH, or a folder you pick (IFILE, NAMES.DEFAULT_DOMAIN and Latin-1 files are supported), and accepts TCPS descriptors. SQLite opens or creates a local file. Redis takes host, port, an optional ACL user and the database index. Cassandra takes one or more contact points (comma separated), the port (9042), an optional user and password, a default keyspace, the local datacenter and the TLS mode; it has no transactions, so every statement commits on its own.

Connection profiles are stored in connections.json in the user configuration folder (%APPDATA%\LowBloat\LowQuery\config on Windows, ~/Library/Application Support/dev.LowBloat.LowQuery on macOS, ~/.config/lowquery on Linux). Open query tabs and their SQL are restored on the next start.

Read docs/ARCHITECTURE.md for the code layout and how a new database engine is added.

Build from source

Install Bun, the stable Rust toolchain and the Tauri prerequisites.

git clone https://github.com/LowBloat/LowQuery.git
cd LowQuery
bun install
bun run tauri dev

bun run tauri build --no-bundle builds the app for your system. Installers are also signed for the updater, so a full bun run tauri build needs the signing key; without it, disable that step with bun run tauri build -c '{"bundle":{"createUpdaterArtifacts":false}}'. To work only on the interface, bun run dev serves it at http://localhost:1420 with a development mock backend.

Roadmap

  • Interrupt a running Oracle call when the driver exposes it.
  • Bind variables (:name, $1) with a value dialog.
  • Fetch more rows on demand without running the query again.
  • Execution plans (EXPLAIN, DBMS_XPLAN).
  • Query history per connection.
  • Editing results that join several tables, one table at a time.

Suggestions and database requests are welcome in the issue forms.

Contributing

Bug reports, database support and pull requests are welcome. See CONTRIBUTING.md for setup and checks, SECURITY.md to report a vulnerability privately, and the code of conduct.

License

LowQuery is released under the GNU Affero General Public License v3.0 only.

About

A light SQL client for people who work with many databases. PostgreSQL and Oracle through native drivers, no Oracle Client needed.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages