Three engines. One grid, one editor, one set of rules.
Taula speaks to PostgreSQL, SQLite and Cloudflare D1 through three drivers that share one model of a table, a value and a query. Where an engine has something the others do not, Taula shows it. Where it does not, Taula says so instead of pretending.
PostgreSQL
Over PostgresNIO, with typed decoding for numeric, uuid, jsonb, arrays and timestamps. SSH tunnels, an activity monitor, functions, sequences, enums and extensions in their own tab, database create and drop, VACUUM and ANALYZE, pg_dump and pg_restore.
SQLite
Over the system libsqlite3, isolated in an actor so the UI never blocks. Multi-statement scripts, attached databases, triggers, rowid editing for tables without a key, query plans as a tree, .dump backup and replay.
Cloudflare D1
Over the D1 HTTP API with an account id, a database id and an API token kept in the Keychain. The same grid, editor, staged edits and guardrails as a local SQLite file, against the database your Worker uses.
What works where.
Most of Taula is engine-neutral. This table lists the parts that are not, so you know before you buy.
| Feature | PostgreSQL | SQLite | Cloudflare D1 |
|---|---|---|---|
| Browse, filter, sort, infinite scroll | Yes | Yes | Yes |
| Staged edits with SQL review, change journal | Yes | Yes | Yes |
| Editing tables without a primary key | ctid | rowid | Read-only |
| Query editor, autocomplete, ghost text, ⌘K | Yes | Yes | Yes |
| Multiple result sets per script | Yes | Yes | Yes |
| Cancel a running query | pg_cancel_backend | sqlite3_interrupt | No |
| EXPLAIN visualizer | Plan tree, ANALYZE | Query plan tree | Query plan |
| Structure editing with ALTER preview | Yes, ALTER … USING | Yes | Yes |
| Objects tab | Functions, sequences, enums, extensions | Attached databases, triggers | No |
| Relations view, schema diff, data diff | Yes | Yes | Yes |
| Activity monitor, cancel and terminate sessions | pg_stat_activity | Not applicable | Not applicable |
| Assistant top queries | pg_stat_statements | No | No |
| Backup and restore | pg_dump, pg_restore | .dump, replay | Use Wrangler |
| SSH tunnel | Yes | Not applicable | Not applicable |
| Database-level operations | Create, drop, VACUUM, ANALYZE | VACUUM, ANALYZE | No |
| Assistant and MCP server | Yes | Yes | Yes |
Tunnels that use your ssh, not a copy of it.
A Postgres connection can carry an SSH hop. Taula opens the tunnel in-process with your key or your ssh agent, picks a free local port, and tears the tunnel down when the session closes. The hop is saved with the connection, so it comes back next time without a second dialog.
- Test before save. Every connection form has a Test button that opens a real session and reports the server version.
- Colors and a production flag. Tint the window, and get an extra warning on destructive statements. More on that.
- Several sessions, tabs across the top. Postgres, a local SQLite file and a D1 database open side by side.
MySQL and MariaDB, for now.
They are not in Taula. The driver exists as an idea, not as code tested against a real server, and shipping untested engines is how you end up with a grid that corrupts a column type. If you need MySQL today, Taula is the wrong purchase; if that changes, it will be in the changelog and on this page.
Also not planned: Windows, Linux, cloud sync, team features. Taula is a Mac app for one person and their databases.
Ready when you are.
One payment, every update, no subscription. Download the DMG, add a connection, and you are reading rows in under a minute.