Open a table and start reading.
Tables grouped by schema in the sidebar. A WHERE box for filters, click a header to sort, scroll for more rows. Foreign keys are marked, and a right-click on one jumps to the row it points at.
Taula is a native database manager. Browse tables, edit cells, and read the exact SQL before anything is written. Fast enough that you stop reaching for psql.
Connect, find a table, fix a row, ship the change. No cuts, no narration you have to sit through.
The same grid you already know, with the guardrails you wish it had. Scroll to walk through a normal afternoon.
Tables grouped by schema in the sidebar. A WHERE box for filters, click a header to sort, scroll for more rows. Foreign keys are marked, and a right-click on one jumps to the row it points at.
Change cells, insert rows, delete rows. It all stays pending until you press ⌘S and see the exact statements Taula is about to run. Every commit lands in a journal with its inverse, so one click undoes it.
Tables, columns, snippets, query history, databases, connections, and actions in one fuzzy bar. Type SQL straight into it and get results inline, without opening a tab.
The assistant inspects your schema, writes the query, and shows you the rows. Anything that would write data comes back as a proposal you approve. The model runs locally with llama.cpp, so nothing leaves the machine and there is no key to paste.
Every foreign key drawn as an edge. Click a table to focus its relations, double-click to open it. Schema diff and data diff live one menu away when two databases have drifted.
Everything a day of database work asks for, without a plugin store or a settings safari.
Syntax highlighting, context-aware autocomplete, multiple tabs, several result sets per run, and run-selection-only when you want to test one statement.
The local model suggests the rest of the line as dimmed text. Tab accepts, Esc dismisses. It never touches your text until you say so.
UPDATE or DELETE without a WHERE, TRUNCATE, DROP TABLE: each gets a confirmation before it runs. Connections you mark as production get an extra warning.
Every committed edit is recorded with its inverse SQL. Undo any of them with one click, or copy the undo statement for a colleague.
Compare tables, columns, indexes and foreign keys across two connections. Diff two tables row by row, keyed on the primary key.
Import CSV with column mapping in a single transaction. Export any result or table as CSV, JSON, or INSERT statements.
Key or agent authentication, opened in-process, local port picked for you. Saved with the connection.
pg_dump and pg_restore for Postgres, .dump and replay for SQLite, with your Homebrew tools found automatically.
Live pg_stat_activity: state, duration, wait events, who is blocking whom. Cancel or terminate from the same view.
Add, rename, retype and drop columns with the ALTER statement previewed first. Indexes, foreign keys and triggers listed alongside.
Date pickers for timestamps, one tap for booleans, a Generate button for UUIDs, a JSON editor, and a hex inspector for blobs.
Connect to D1 databases next to your Postgres and SQLite ones. Same grid, same editor, same guardrails.
EXPLAIN and EXPLAIN ANALYZE rendered as a readable tree, for Postgres plans and SQLite query plans alike.
Tint a connection so production always looks like production. Snapshot a table before a risky change with one click.
Taula ships an MCP server. Claude Code or any other agent can list tables, describe schemas, sample rows and run queries over the connections you already set up, using the same Keychain credentials. It never sees a password.
$ claude mcp add taula -- taula-mcp Added stdio MCP server taula > which tables reference customers? list_connections · list_tables · describe_table orders.customer_id, invoices.customer_id, support_tickets.customer_id → customers.id > how many orders shipped last week? query (read-only gate passed) 2,481 rows in orders where status = 'shipped' and shipped_at ≥ 2026-09-01
You buy a tool, you own the tool. Every update is included, and the download comes straight from us.
PostgreSQL, SQLite and Cloudflare D1. MySQL and MariaDB are on the list but will not ship until they are tested against a real server.
Yes. Taula starts a llama.cpp server on your Mac and downloads a small open model on first use. Your schema and your data stay on the machine. If you prefer a hosted model, you can add an Anthropic key in Settings and pick one there.
No. Grid edits are staged until you commit and review the SQL. The assistant returns writes as proposals you approve. Destructive statements in the query editor get a confirmation first. The MCP server is read-only unless you start it with writes enabled.
No account, no sign-in, no analytics. Passwords live in the macOS Keychain. Connections, history and settings are plain JSON files in your Application Support folder.
Taula is Basque for table.
| id🔑 | customer_id↗ | status | total_centsint8 | currency | placed_attimestamptz | note |
|---|---|---|---|---|---|---|
| 10432 | 88213 | pendingshipped | 12 900 | EUR | 2026-09-11 08:14 | NULL |
| 10433 | 40017 | paid | 4 350 | EUR | 2026-09-11 08:20 | gift wrap |
| 10434 | 88213 | shipped | 27 800 | EUR | 2026-09-11 09:02 | NULL |
| 10435 | 51940 | paid | 1 29012 900 | EUR | 2026-09-11 09:31 | price fixed by hand |
| 10436 | 23388 | refunded | 8 990 | USD | 2026-09-11 10:05 | duplicate of 10431 |
| 10437 | 23388 | pending | 8 990 | USD | 2026-09-11 10:05 | NULL |
| 10438 | 77102 | paid | 3 200 | GBP | 2026-09-11 11:48 | NULL |
| 10439 | 40017 | shipped | 15 600 | EUR | 2026-09-11 12:12 | NULL |
| 10440 | 19005 | paid | 62 000 | EUR | 2026-09-11 13:40 | B2B, net 30 |
| 10441 | 88213 | pending | 2 150 | EUR | 2026-09-11 14:03 | NULL |
1SELECT c.email, count(*) AS orders, 2 sum(o.total_cents) / 100.0 AS revenue 3FROM orders o 4JOIN customers c ON c.id = o.customer_id 5WHERE o.placed_at > now() - interval '30 days' 6GROUP BY c.email 7ORDER BY revenue DESC LIMIT 20;
| orders | revenue | ||
|---|---|---|---|
| ane.etxeberria@example.com | 14 | 4 812.00 | |
| l.moreau@example.fr | 9 | 3 205.50 | |
| studio@kaltenbach.de | 6 | 2 970.00 | |
| m.rossi@example.it | 11 | 2 418.90 | |
| hello@northlab.co | 3 | 1 860.00 | |
| j.okafor@example.com | 7 | 1 533.20 | |
| ops@ferrytickets.eu | 5 | 1 402.75 | |
| p.svensson@example.se | 4 | 1 118.00 |
UPDATE public.orders SET status = 'shipped' WHERE id = 10432; UPDATE public.orders SET total_cents = 12900 WHERE id = 10435; DELETE FROM public.orders WHERE id = 10437;