Postgres and SQLite, at home on your Mac.

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.

macOS 15 or later Direct download, no app store Pay once, keep every update

Watch a real session.

Connect, find a table, fix a row, ship the change. No cuts, no narration you have to sit through.

One window, most of your day.

The same grid you already know, with the guardrails you wish it had. Scroll to walk through a normal afternoon.

Data

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.

Edits are staged

Nothing is written until you read the SQL.

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.

Guardrails

A DELETE without a WHERE stops and asks.

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.

⌘K

Everything is one keystroke away.

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.

Assistant

Ask in plain language. It runs on your Mac.

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.

Change journal

Every write is stored with its inverse.

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.

Relations

See how the tables fit together.

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.

Agentic

The model turns up in three places, and never holds the pen.

Taula 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.

Tab

Ghost text

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.

⌘I

Inline rewrite

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.

⌘L

Assistant

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.

How the assistant works

A tool loop, with the pen held back.

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.

01You ask

A question in plain language, in the sidebar or straight into the ⌘K bar.

You
02It reads the schema

list_tables and describe_table return real metadata, so relationships are looked up, not invented.

Model
03It looks at rows

sample_rows, then a capped read-only run_query through the same gate the MCP server uses.

Model
04It drafts the change

One statement, or a plan with numbered steps. Nothing has been written yet.

Model
05You approve

It arrives as SQL in a card. Approve it, decline it, or edit the statement first.

You
06Taula journals it

The commit is stored next to the SQL that undoes it. ⌘Z puts it back.

Taula

Runs on its own Read

Six tools the assistant may call without asking. They read; they never modify.

list_tablesdescribe_tablesample_rows run_querytop_queriesremember_fact
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.

Waits for you Write

Two tools that cannot run themselves. Both surface as a card with the exact SQL.

propose_writepropose_plan
Proposals go through the same guardrails as the query editor, so a DELETE without a WHERE still asks twice, and a production-marked connection asks again. Approved writes land in the change journal with their inverse, exactly like a grid commit.
SELECT * FROM orders WHERE status = 'pending'Allowed
SELECT replace_count FROM import_jobsAllowed · tokenized, not substring-matched
WITH gone AS (DELETE FROM orders RETURNING *) SELECT * FROM goneRejected · write keyword at depth 1
UPDATE orders SET status = 'shipped'Rejected · leading keyword not on the read allowlist

The 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.

8 toolsSix the model may call by itself, two it has to hand to you.
0 keysThe default model is a file on your disk, served by llama.cpp. Nothing to paste, nothing to bill.
0 bytesYour schema, your rows and your questions stay on the Mac.
87%Ghost-text accuracy on Taula's own execution-graded eval corpus, up from 73%.
For agents

Your saved connections, available to your coding agent.

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.

  • Read-only by default. Every statement passes a hard gate: only read keywords may lead, and no write keyword may appear at any depth.
  • Writes are opt-in. The execute tool only exists when you start the server with writes enabled, and it still returns guardrail warnings.
  • Row caps on everything. Results are truncated with a flag, so an agent cannot pull a whole table by accident.
list_connectionslist_tablesdescribe_table sample_rowsqueryexplain execute

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.

How the MCP server works

$ 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
Native

Built for the Mac, not ported to it.

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.

KeychainPasswords and API tokens live in the macOS Keychain. Connections are plain JSON you can read.
0 bytesof telemetry. No analytics, no crash uploads, no sign-in. Nothing leaves your Mac unless you ask.
Local modelThe assistant runs on llama.cpp on your machine. A hosted model is optional, never required.
One licenseEvery Mac you own, every future update, one payment of €25.

One price. No subscription, no seats.

You buy a tool, you own the tool. Every update is included, and the download comes straight from us.

€25once
  • All your Macs, one license
  • Every future update
  • Postgres, SQLite and Cloudflare D1
  • Local assistant and MCP server included
Requires macOS 15 or later. Your licence key arrives by email right after payment and unlocks your download page.

Questions

More on the support page.

Which databases does Taula support?

PostgreSQL, SQLite and Cloudflare D1. MySQL and MariaDB are on the list but will not ship until they are tested against a real server.

Is the assistant really local?

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.

Can it write to my database without asking?

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.

Does it need an account or send telemetry?

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.

What does the name mean?

Taula is Basque for table.

Stop reaching for psql.

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.