The table on fire
Its rack flashes on every query while the rest of the floor is calm.
PostgreSQL · MySQL · MariaDB · SQL Server · MongoDB
Every table is a rack. Every query is a pulse. Every user walks the floor. What you see above is a real Postgres, compiled to WASM, running in this tab.
A database is the busiest place in your stack and the one you can't see. You get a wall of numbers, a slow-query log and a hunch. 3d-db reads the catalog and the profiler and builds a room out of them. You understand the state of the system in two seconds, then click anything to go deep.
Each object maps to one thing in your database. Learn the map once, then read the room at a glance.
DB name.ROLE signIts rack flashes on every query while the rest of the floor is calm.
Red tags stack on one rack, and you can see who is waiting for whom.
Grey slabs are indexes nobody ever scanned. They cost you on every write and return nothing.
A new table rises from the floor in a cyan ring. A dropped one dissolves in red.
People walk to the tables their sessions touch. Idle accounts stay in their offices.
3d-db ships as a single npm package. npx downloads it, starts a local server and opens a browser tab connected to your database. Close the terminal and it is gone.
--type <type>postgres, mysql (or mariadb), mssql (or sqlserver), mongo (or mongodb), demo--server, --hostDatabase host. Default: localhost--port <n>Database port. Default: the type's standard port--user <name>Default: postgres, root or sa, by type--database, --dbDatabase to start from--string, --urlA full connection string instead of the flags above. Flags given with it override its parts.--sslUse TLS. Certificates are not verified, so self-signed servers work.--captureMySQL / MariaDB with performance_schema off: capture every statement through the general log. Restored on exit, needs SUPER.--ask-passwordPrompt for it. Recommended.THREEDDB_PASSWORDEnvironment variable.THREEDDB_URLWhole connection string from the environment.--password <p>Works, but stays in your shell history.--ui-port <n>Port for the web UI. Default: 4000, or the next free one--bind <address>Default 127.0.0.1. The UI has no login: bind elsewhere only on networks you trust.--no-openDon't open the browser-h, -vHelp, versionCumulative counters are read every second and turned into per-second rates and events. The catalog is re-read as soon as its digest changes, so a CREATE TABLE shows up live.
Some views need privileges (pg_read_all_stats, VIEW SERVER STATE, performance_schema). When one is missing, that part of the room stays empty and the rest keeps working.
3d-db never writes to your database. The SQL console only exists in the sandboxed demo.
It listens on 127.0.0.1. Nothing leaves your machine, and there is no account to create.
Use --ask-password or an environment variable. Errors are scrubbed of passwords before they reach the UI.