IntelligentDB is a Postgres database that governs what AI agents are allowed to write.
Your application connects and writes normally, at full speed. Agents write through an API that checks every change against rules you set, field by field. Routine updates commit immediately. Consequential ones wait for a person, who sees the exact before and after. Anything can be undone.
There are two ways into the database, and they are deliberately different.
Your application Your AI agents
(Prisma, psql, ORM) (MCP / REST)
| |
| Postgres wire protocol | IntelligentDB API
| full speed, no gate | policy checked
v v
+--------------+ +-------------------------------+
| direct write | | Auto -> commit now |
| | | Review -> queue for a human |
| | | Blocked -> rejected |
+------+-------+ +---------------+---------------+
| |
v v
+---------------------------------------------------------+
| Postgres, one schema per organization |
| your tables + an append-only record of governed writes |
+---------------------------------------------------------+
| Your application | Your agents | |
|---|---|---|
| Connects via | Postgres wire protocol | IntelligentDB API or MCP |
| Credentials | A connection string scoped to your schema | An API key. No database access at all. |
| Speed | Full, ungated | Policy checked on every write |
| Recorded | No | Yes, every write |
Credential separation is the enforcement mechanism. Guardrails written into application code are advisory, because anything holding a connection string can ignore them. An agent here cannot ignore the policy check, because the API is the only door it has.
There is no LLM anywhere in the write path. Every policy decision is deterministic and returns the same answer every time.
git clone <https://github.com/><your-org>/IntelligentDB.git
cd IntelligentDB
docker compose up --build
| Service | URL |
|---|---|
| Web UI | http://localhost:8081 |
| API | http://localhost:8000 (interactive docs at /docs) |
| MCP server | http://localhost:8080/mcp |
Row governance requires the Postgres backend:
IDB_STORAGE_BACKEND=postgres
IDB_STORAGE_DATABASE_URL=postgresql://user:pass@host:5432/intelligentdb
Sign in to the web UI and open Data. Create a customers table:
| Column | Type |
|---|---|
id |
text, primary key |
name |
text |
last_contacted_at |
timestamptz |
credit_limit |
numeric |