v0.1.1 · 2026-09-15
Your database deserves an IDE.
A fast, precise workspace for PostgreSQL and SQLite - careful with production, and honest with you. Every statement it writes, you read before it runs.
Windows 10+ · x64
SELECT id, email, name, created_at
FROM customers
WHERE created_at > now() - interval '30 days'
ORDER BY created_at DESC| id | name | created_at ▾ | ||
|---|---|---|---|---|
| 1 | 1042 | ada@example.com | Ada Lovelace King | 2026-08-24 09:12:03 |
| 2 | 1041 | grace@example.com | Grace Hopper | 2026-08-23 18:40:55 |
| 3 | 1040 | alan@example.com | Alan Turing | 2026-08-22 07:05:11 |
| 4 | 1039 | edsger@example.com | Edsger Dijkstra | 2026-08-21 22:31:47 |
| 5 | 1038 | barbara@example.com | Barbara Liskov | 2026-08-20 11:58:09 |
UPDATE public.customers SET name = 'Ada Lovelace King' WHERE id = 1042;
-
Fast
Opens in a blink and stays out of the way. It never loads your table into memory just to show you ten rows of it - so a table with forty million rows opens as quickly as an empty one, and the app is still light enough to leave running all day.
-
Honest
Every statement it generates is on screen before it runs. Nothing is truncated, sorted or refused quietly, and where an answer would be partial it tells you which part you are looking at.
-
Yours
Rebind any shortcut to any key, on any keyboard layout - ABNT2 and AZERTY included. Bring the editor theme you already use. And let a setting belong to one connection instead of all of them.
The difference
It won't lie to you.
A tool that is wrong quietly costs you more than one that is slow. You can see slow. Here are four moments where most tools stay quiet and this one speaks up - each of them a mistake somebody has already shipped to production.
-
Stopped at the row limit - this is not the whole result. Sort on the server
id created_at ▾ 1 1042 2026-08-24 09:12:03 2 1041 2026-08-23 18:40:55 You sorted a page, not the table.
Sort the ten thousand rows on screen when the table holds forty million, and "the ten most recent" is a wrong answer in the shape of a right one. Querium tells you which of the two you are looking at, and offers to ask the database for the real one.
one click, and the whole table is sorted
- Review the statement 1 row
UPDATE public.customers SET name = 'Ada Lovelace King' WHERE id = 1042;
Apply Copy DiscardNothing generated runs unseen.
Edit a cell and you get the statement, not a spinner. The
WHEREclause decides how many rows change, and it was written by a program - so you read it before anything is saved. Every time, for everything the app writes on your behalf.no exceptions, no silent writes
-
✕ ssh: bastion.internal - host key is not in known_hosts
Refused. Connect to it once from a terminal and confirm the fingerprint, or point this connection at a known_hosts file of its own.
An unknown host is refused, not trusted.
Plenty of clients accept any host key they are handed, which throws away the entire reason you put a tunnel there. Querium refuses, and tells you how to fix it. Certificates get the same treatment:
verify-fullreally does check the server's name - even through a tunnel, where it would be easy to quietly stop checking.the checks your own ssh config already makes
- ● production ● transaction open read only idle 4m 12s
The transaction you forgot is on screen.
A forgotten transaction is how a deploy stalls at two in the morning: it holds locks, and the next migration queues up behind it. Querium keeps that state in front of you the whole time, marks production in a colour you cannot miss, and carries the timeouts that prevent it on the connection - not in your memory.
statement_timeout · lock_timeout · idle_in_transaction_session_timeout
One object
One table. Four perspectives.
The rows, the query behind them, the definition of the table itself, and everything that points at it. One object, four answers, without leaving the tab or losing your place.
| id | name | created_at | ||
|---|---|---|---|---|
| 1 | 1042 | ada@example.com | Ada Lovelace | 2026-08-24 09:12:03 |
| 2 | 1041 | grace@example.com | Grace Hopper | 2026-08-23 18:40:55 |
| 3 | 1040 | alan@example.com | Alan Turing | 2026-08-22 07:05:11 |
Edit it here when the rows can be identified. Querium says plainly when they cannot, instead of failing on save.
SELECT id, email, name, created_at
FROM customers
WHERE created_at > now() - interval '30 days'
ORDER BY created_at DESC Ctrl+Enter runs the statement under the cursor, not the whole file.
CREATE TABLE public.customers (
id bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
email text NOT NULL,
name text,
created_at timestamptz NOT NULL DEFAULT now(),
CONSTRAINT customers_pkey PRIMARY KEY (id),
CONSTRAINT customers_email_key UNIQUE (email)
); Read back from the server, constraints and indexes included - for anything in the tree, not just tables.
References to customers
| from | column | on delete |
|---|---|---|
| orders | customer_id | CASCADE |
| invoices | customer_id | RESTRICT |
| support_tickets | customer_id | SET NULL |
Click one in the grid and the row it points at opens. Declared keys, and the ones only a naming convention ever agreed on.
The editor
It knows your schema.
Completion comes from the database you are connected to, not from words already in the file - every column with its type beside it, and whatever the schema says about it in the hover. F12 opens a definition, wherever in the database it lives.
The statement under your cursor is the one that runs, so a file full of them is safe to keep. And when the server rejects something, the exact character it objected to is underlined in your own text - not a line number you have to go and count.
formatter · snippets · multi-statement files
SELECT c. FROM customers ccolcreated_attimestamptzcolemailtextcolidbigint · pkcolnametext
Getting there
Production is usually behind something.
Every TLS mode your server offers, and each one means exactly what it says. Encrypting the connection and proving who is on the other end of it are two different questions - plenty of tools blur them, which is how people end up believing they verified something they did not.
SSH tunnels that actually check the host key, client certificates, connection parameters, and timeouts that belong to the connection rather than to your memory. Passwords live in your operating system's keychain - Querium can use one without ever being able to read it.
Windows and Linux, each using its own vault
Connection · production
| TLS | verify-full |
| Root certificate | ~/.postgresql/root.crt |
| SSH tunnel | bastion.internal:22 |
| Host key | known_hosts |
| Password | stored in the keychain |
| Environment | production · read only |
The cost of having it open
Small enough to leave running.
- 32 MB
- Memory in use with a connection open and a result on screen. Small enough that you stop closing it between tasks.
- 0
- Rows the app holds on to. It fetches the screenful you are looking at and nothing more, so the size of your table stops being the size of your session.
- 10 001
- Rows pulled from a table of forty million: the ten thousand you asked for, plus the one that proves there are more. The rest are never sent - which is what a slow connection notices most.
Make it yours
Configured like an editor, not an enterprise tool.
Everything the app can do is in one searchable list, and anything in that list can be given a shortcut. The shortcut you set is the key you physically press, wherever it sits on your keyboard - so an ABNT2 or AZERTY layout does not quietly break half of them.
Settings can belong to one connection instead of every connection, so the caution you want on production does not follow you to your laptop. And the editor theme you already use comes with you: drop the file in and it takes.
⌘ Command palette
Engines
Two today, and the shape for more.
Nothing here is bolted to one database. Both engines were built in together from the start, which is why neither behaves like the one that came second - and why the next one will not either.
-
PostgreSQL
14 through 17 - every one of them tested against a real server, not assumed
-
SQLite
Built in. Open a file and go - nothing to install
-
MySQL, SQL Server…
Not yet - see the roadmap
What's next
Visual query plans, schema diff, entity diagrams and more engines. A dated list of what exists and what does not, without promised dates.
See the roadmap →What it costs
Nothing, and everything on this page stays that way. Pro is being built on top rather than carved out of it.
See pricing →Get it
Ready to open your database?
Free, and everything on this page stays free. No account to create, nothing reported back about you, and your credentials never leave your own machine.
-
Windows
Windows 10+ · x64
-
Linux
x64 · AppImage, .deb and .rpm
Version 0.1.1 · 2026-09-15 · every build is signed, and updates are offered rather than installed behind your back.