Prove read-only, do not promise it.
LEDAR asks PostgreSQL what the role is permitted to do and shows the answer. A role that turns out to be a superuser is refused, and there is no button to override that.
An AI employee on your own machine
You inherited a database you did not build. LEDAR reads it without writing to it, explains what is in there in plain language, and tells you exactly where its knowledge stops.
The situation
Not a data engineer. Not looking for a query tool. You have a connection string and a system that has to keep working.
Pointing a language model at the whole codebase is the obvious idea, and it is the wrong one: it is slow, it costs a lot, and the answer it gives you comes from code rather than from the rows that actually exist. LEDAR reads the running database instead, then answers from what it measured there.
How it works
Five fixed questions, one scan, and a map. After that you ask in your own words and get a timeline back.
LEDAR asks PostgreSQL what the role is permitted to do and shows the answer. A role that turns out to be a superuser is refused, and there is no button to override that.
Constraints, relationships, row counts and sizes. Foreign keys the database declares, plus implicit links it measures and marks as measured — never a link it merely guessed from a column name.
Type "I paid but no order appeared". LEDAR walks the map from the customer to the payment to the order and answers with a timeline, naming the point where the trail breaks.
The product contract
Every answer states what was not looked at. A negative claim with no coverage boundary is refused rather than softened.
Every answer states what it looked at and still cannot explain. A route it could not afford to walk is named, not dropped.
What the database enforces, what you told it, and what it merely observed never look alike on screen.
It never writes to your database. Not a migration, not a fix, not once. The most it will do is print SQL for you to run yourself.
What leaves your machine
Not a sample. Not a redacted one. Not a count of one person’s orders.
When you ask a question, LEDAR sends your question and a list of table and column names to the model you configured, so it can pick which part of the database the question is about. That is schema, not data — but it is not nothing, and calling it nothing would break the two letters in the middle of the name.
Measured, not asserted
Hover any figure on this site and it will name the command that produced it and the day it was run.
The scanner has been run against a 344 million row MusicBrainz copy and a 12 GB crates.io copy, not only against a toy sample. On MusicBrainz it found that all 758 declared foreign keys are marked NOT VALID — meaning the database is not enforcing a single one of them. That is the kind of thing nobody types a query to look for.
Admit
A product whose middle letters are Disclose and Admit does not get a landing page that only lists wins.
The full list, including the measurements that came out badly, is on the status page.
Run it
You need Node 22 or newer and a PostgreSQL connection string. There is no account and no sign-in.
git clone https://github.com/ledar1106/ledar-src.git
cd ledar-src
npm ci
npm run desktop
The first launch downloads the Electron binary, about ~100 MB, once. Then you paste a connection string and LEDAR proves the connection is read-only before it reads anything.
Source-available, runs on your machine, and tells you what it did not look at.