Understand your database's structure. Never hand over its data.
SSDO reads the structure of your database (tables, columns, keys, links), explains it in plain language, watches it change while your team codes, and tells you what a change will affect before you run it. It never reads a row.
Try it free No card, no real database needed: start with a sample
Start in 60 seconds
- Open a sample. Try the Online shop. No sign-up and no database of yours is needed: a sample holds only structure.
- Read the map. Each box is a table and each line is a link between tables. A solid line is declared by the database; a dashed line is SSDO's inference, with its evidence.
- Click a table to see its columns, or open the sample in the console to ask a question or simulate what must exist before one row can be written.
What it does
Live workspace
ssdo watch runs next to your code and shows each structure change the moment it happens, to you and the teammates you choose. Your database password never leaves your machine.
Review a change on paper
Write an ALTER TABLE and SSDO explains what changes and what depends on it, then writes it as an Alembic revision. Nothing is run until you type yes in your own terminal.
In your pull requests
A GitHub Action comments on each pull request with what the migration really does to the structure, and what needs care.
Ask about your database
“Which tables does orders depend on?” Answered from the structure, with every fact marked as declared or inferred, and what SSDO cannot know said plainly.
Works with your AI tools
ssdo context and a read-only MCP server let Claude Code, Gemini or ChatGPT see your structure, never your data. They can only propose: you decide.
Learn and coach
Academy mode for students and classes, and a room where an experienced mentor can review your work for a time you choose.
What a pull request comment looks like
This is real output from ssdo diff on two small snapshots.
SSDO · base → head · postgres
2 columns added, 1 column removed
fact Column customers.phone added (text).
fact Column orders.total_kobo added (bigint).
fact Column orders.total removed.
Needs care (2)
! [can_lose_values] Column orders.total is removed: whatever it holds is discarded.
SSDO does not read data, so it cannot say whether it is empty.
! [can_fail_on_rows] New column orders.total_kobo is required (NOT NULL). If it has no default,
adding it fails on a table that already has rows.
SSDO read only the structure of the two databases. No data was read.
Works with PostgreSQL, MySQL and MariaDB, Microsoft SQL Server, Oracle and SQLite. Reading, watching, comparing and explaining work on all of them; drafting, applying a change and writing Alembic revisions work on all of them except SQLite, which is read only.
Structure only: the promise
- SSDO reads table and column names, types, keys and links. It does not read rows, ever.
- Your database password is used once and never stored. Run
ssdo watchon your own machine and it never leaves it; if you use the Connect form instead, it goes to our server for that one read and is never stored or logged. Use a read-only account either way. - Every statement is marked as a fact the database declares, or an inference with its confidence. No hidden model decides what is true.
- For companies that need to touch data, a separate, gated product (SAS) answers approved questions with counts and masked lookups, with a tamper-evident audit trail. That is an Enterprise feature, kept apart from SSDO by design.
Who it is for
Developers and freelancers
Know a database you inherited, and change it without surprises.
Teams
See the same changes together, review migrations in pull requests, and keep an audit of who approved what.
Schools and bootcamps
Classes, assignments, grading and certificates anyone can verify.