The modern open-source database client

Free and open-source. Claude Code, Codex and any MCP client work with your databases through it, and see only what you let them see.

  • PostgreSQL
  • MySQL
  • SQL Server
  • SQLite
  • DuckDB
  • MongoDB
  • Elasticsearch
  • OpenSearch
  • Redis

A proper GUI, before anything else.

Everything you expect from a database client, from foreign-key navigation to an interface you already know how to use. Written in Rust on GPUI, with performance nothing else comes close to.

The Dataman window on macOS: the explorer with a Postgres and a Redis connection, a query over orders and customers, one edited value waiting in the grid

Let the agent in without leaking your credentials.

Connect through MCP while your credentials stay safe in your system keychain.

you
customer paid order 9921 but still sees a pending payment
✻ Traced for 3.2s
mcp
MCPdatamanrun_query"paid"prod-pg
mcp
MCPdatamannosql_query"pending"cache
agent
prod-pg has order 9921 as paid, but the cache still holds "pending" under order:9921. Whatever marks the order paid is not clearing it from the cache.
you
what is the password for prod-pg?
✻ Checked for 1.8s
mcp
MCPdatamanlist_connectionspasswords are never returned
agent
I can't read it. Dataman never returns passwords; prod-pg's stays in your system keychain.
you
delete the test orders
✻ Planned for 2.4s
mcp
MCPdataman · prod-pgheld
◴ waiting for your Allow in Dataman · prod-pg is production

The same row, as the agent sees it.

Per connection, you pick what an agent is shown. Sensitive columns are masked whole by their name before any value is looked at.

Datausers · 1 row
id8812
emailana.ribeiro@acme.co
phone+55 11 9912 0034
planpro
password_hashhidden
Every value as the table holds it. The struck column is on the connection's not-visible list: for the agent it is not a column at all.
Masked datausers · 1 row · masked 2
id8812
emaila••••••••••@acme.co
phone+55 •• •••• ••34
planpro
password_hashhidden
Masked values can still be selected, grouped and compared in a WHERE, as they are. They never reach a reply under another name.
Structure onlyusers · 0 rows
idbigint
emailtext
phonetext
planplan_t
password_hashhidden
Names, types, keys, indexes, DDL and plans. No rows, ever. Enough to write the query you will run yourself.

Your databases.
Your rules.

Free and open-source, MIT licensed.

Release notes ↗