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.
Taula knows the statements that end badly — UPDATE or DELETE with no WHERE, TRUNCATE, DROP TABLE — and makes you confirm before one runs. On a connection you marked production it asks twice and snapshots the table first, so there is something to go back to.
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.
Each commit — from the grid, from a script, from a proposal you approved — is journaled next to the SQL that undoes it. Open it with ⌘K, read what actually happened, and put one entry back without going looking for a backup.
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.
Each one has its own page, with the details a paid tool should be willing to write down: what it does, what it does not, and which engines it works on.
Filter, sort, scroll any row count. Edits stay pending until you commit and read the exact SQL. Every commit is journaled with its inverse.
Browse and editContext-aware autocomplete, ghost-text completions, several result sets per run, EXPLAIN as a tree, and a ⌘K bar that jumps anywhere.
Write SQLA small model on llama.cpp, launched by Taula, no key to paste. It reads your schema and data freely and returns every write as a proposal.
Ask in plain languageAn MCP server that exposes your saved connections to Claude Code or any client, behind a hard read-only gate and row caps.
Wire up an agentConfirmations for destructive statements, production tinting, snapshots, schema and data diff, pg_dump and .dump backups.
What protects youPostgreSQL over PostgresNIO, SQLite over the system library, Cloudflare D1 over its API. One grid, one editor, one set of guardrails.
Engine supportTaula runs a small open model on your Mac through llama.cpp. It finishes the line you are typing, rewrites the SQL you selected, and answers questions about the database on its own. Anything that would write comes back as a statement you read first.
Keep typing and a completion appears in grey at the caret, built from the schema you are actually in, not from a guess about it. Tab takes it, Esc drops it, and it never runs anything.
Select a statement, say what you want in a sentence, and read the change as a diff before it replaces anything. Apply it and ⌘Z still puts the old text back.
It inspects tables, samples rows and runs read queries by itself. A change arrives as a propose_write card — the SQL, an Approve and a Decline — and only then touches your data.
The model never gets a connection string. It gets a small set of tools that Taula implements, and the read tools are the only ones that touch the database without you in the room.
A question in plain language, in the sidebar or straight into the ⌘K bar.
Youlist_tables and describe_table return real metadata, so relationships are looked up, not invented.
sample_rows, then a capped read-only run_query through the same gate the MCP server uses.
One statement, or a plan with numbered steps. Nothing has been written yet.
ModelIt arrives as SQL in a card. Approve it, decline it, or edit the statement first.
YouThe commit is stored next to the SQL that undoes it. ⌘Z puts it back.
TaulaSix tools the assistant may call without asking. They read; they never modify.
run_query passes the read-only gate and every result is row-capped, so a curious model cannot pull a whole table. remember_fact stores a durable note about that one connection — “amounts are in cents” — as plain JSON you can edit or delete.
Two tools that cannot run themselves. Both surface as a card with the exact SQL.
SELECT * FROM orders WHERE status = 'pending'AllowedSELECT replace_count FROM import_jobsAllowed · tokenized, not substring-matchedWITH gone AS (DELETE FROM orders RETURNING *) SELECT * FROM goneRejected · write keyword at depth 1UPDATE orders SET status = 'shipped'Rejected · leading keyword not on the read allowlistThe same gate guards the assistant's run_query and the MCP server. It is a well-tested keyword scanner, not a parser with a proof — give an agent a database role whose own permissions are the real boundary. The docs say this too, on purpose.
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.
execute is not registered at all unless you start the server with TAULA_MCP_ALLOW_WRITES=1. An agent cannot ask for a tool that does not exist.
$ 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
Swift and SwiftUI, with an AppKit table view underneath the grid so a million rows scroll like a hundred. No Electron, no web view, no login screen.
You buy a tool, you own the tool. Every update is included, and the download comes straight from us.
More on the support page.
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.
The app has no account, no sign-in and 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.
Taula is €25 once, with every update included and nothing to subscribe to. Download it, add a connection, and read your first table in under a minute.