Orbit: see what your database is shaped like, and what it is doing right now
Plenty of tools draw a diagram of your tables. Orbit draws your database as a world you fly through, every table a star and every foreign key a filament, and then it shows the traffic: statements travelling the graph as they run, and tables brightening as they take load.
Nothing in that recording is staged. It is a real Postgres with 500 tables and 1,987 relations, introspected by the app, and every packet on screen is a statement that a separate pool of sessions was really running, read back from the database's own activity view.
What it is for
The explorer is still the better way to read a schema. Orbit is for the questions a list cannot answer: what is this database shaped like, what is hot right now, what does this table actually touch, and why is that one table in the corner connected to everything.
Schemas settle into their own clusters. A table with many relations sits heavy in the middle of its neighbourhood and a lookup table drifts to the edge, so the shape you see is the shape the foreign keys give it, not one somebody arranged by hand.
Fly, find, isolate
Drag to turn the world and scroll to move in. Hover a star for its columns, its row estimate and its foreign keys. Hover a filament for the real constraint name and both ends of it. Click a star and its neighbourhood lights while the rest of the world dims, and the camera flies to frame it, close for a leaf table and further back for a hub with two hundred relations.
Find lights every match and its direct neighbours, and on a database with several schemas it tells two tables of the same name apart. Escape puts everything back: the isolation, the search, and the camera, which flies home rather than cutting, so you never lose where you just were.
Its colours come from your theme. Under the Gold theme it is gold, and under Light it is legible rather than a black hole in a white window.
Pulse: the traffic, in two honest halves
This session is what SnoutData itself ran: your queries from the editor, your flows, your agent's calls. It costs the database nothing and works on every database the app connects to, SQLite included. Its limit is in its name: it shows what this app did, not what the database did.
This database reads the database's own activity view on an interval you choose, so you see everybody's traffic, not just yours. It runs at background priority, so it can never hold up a query you are waiting for. It is off until you turn it on, because it is a query you did not type against a database you may be paying for by the read. It has been run against real Postgres, MySQL and MariaDB servers.
It never shows itself: every sample is marked, and the mark is filtered out. And the statement feed is redacted before it is painted, because a view of what the database is running may include a CREATE USER ... PASSWORD that somebody else typed.
Quiet is not the same as empty
Running Pulse against real servers found the failure that matters most in a live view: a picture that looks calm because it is broken.
MariaDB ships its performance schema switched off, and a switched-off view does not fail. It answers, with no rows, so Pulse showed a still world and reported nothing wrong. Postgres does the same thing more politely: a login without pg_read_all_stats gets a row per session with the query hidden. Orbit now reads the view that is always there on MariaDB, and on Postgres it counts the hidden sessions and names the grant that shows them, instead of drawing a database with nothing going on.
Big schemas, and a launch that never notices
We measured before tuning, and the drawing was never the problem. At 60,000 objects the work for a frame is about half a millisecond of the 16.6 ms a frame has, and the layout settles in about 600 ms. On large schemas indexes fold into their tables, and still count toward how big a table looks. Past 150,000 objects Orbit says so plainly rather than hanging the window.
None of it costs you anything until you open it. Orbit and the 3D engine under it load the first time you open the tab, and a launch never fetches them, which a test checks on every build.
No model on any frame
Layout, colour, picking and packets are all deterministic. Orbit draws the schema the app has already read and never reads your data rows. The assistant and your coding agent can open it and fly it to a table when you ask ("show me orders in Orbit"), and can ask for a table's neighbourhood as text, but nothing about what you see comes from a model.
Try it
Connect a database and open Orbit from the galaxy icon in the side bar, or from the command palette. Pulse's two halves are in its controls on the right. Download SnoutData, free.