zanith

Studio · 01 — Overview

A web UI bundled with the engine. No separate install.

Studio runs in-process with the same engine your app uses. Browse, edit, plan migrations, restore drops, watch locks — all against the same connection. Two levels. Eight tabs. One binary.

zanithSTUDIOprod_db · postgrestablescatalogsecuritysqlschemamigraterecoversearchTABLES · 7filter…users4,218orders12,440products312sessions8,902audit_log219,440_zanith_migrations14_zanith_migration_steps86users· 4,218 rowssearch rows…+ newviewsIDEMAILACTIVECREATED_ATa4c8…[email protected]true2026-04-30b1f2…[email protected]true2026-04-29c702…[email protected]false2026-04-12d955…[email protected]true2026-03-30e8a2…[email protected]true2026-03-28connected · 5 of 4,218⌘K palette
two levels · workspace + databasepostgres · sqlitessh tunnelread-only modeshipped · v0.2

02 — How it stacks up

Browsing tables is the easy part.

Every database GUI handles row browsing. Studio earns its place when something goes wrong on a Friday afternoon — locks, drift, a destructive op nobody tested, a query that wants to be a chart.

CapabilitypgAdminTablePlusPosticoDrizzle StudioPrisma StudioZanith Studio
Browse + edit rows
the table-first surface
yesyesyesyesyesyes
FK drilldown by any column
follow refs that aren't the PK
partialpartialpartialnopartialyes
Bulk edit + find/replace
single-click value-fill across a selection
partialpartialpartialnonoyes
Sensitive-column masking
passwords / tokens hidden by default
nononononoyes
Lock graph + RLS inspector
see who's blocking, what policies attach
partialnonononoyes
Migrations + recovery built in
apply, plan, restore — no separate tool
nononopartialpartialyes
EXPLAIN with plan history
compare plans across edits
partialpartialnononoyes
Result charts (bar / line)
ad-hoc visualization on a query result
partialnonononoyes
Watch query · auto-rerun
tail metrics in a SQL tab
nononononoyes
Two-level workspace
many DBs at once + drill into one
partialyesyesnonoyes

Drizzle and Prisma Studio cover the table surface and their own migrations, but stop there. pgAdmin reaches for the operational depth but is its own UI culture. Studio tries to be both: the daily tool and the on-call tool, in the same window.

03 — Two levels

Many databases up here. One database down here.

Workspace is the cross-database view — every server you connect to, recent activity across all of them, a global command palette. Database is what you drop into. The chrome stays the same; the surfaces specialize.

LEVEL 1 · WORKSPACEhomeserversactivitysettingsprod_dbprod14 tables · 4.2M rowsstagingstaging14 tables · 4.2M rowsdev_localdev14 tables · 4.2M rowsanalytics_roro14 tables · 4.2M rowsclick prod_db ↓LEVEL 2 · DATABASE · prod_dboverviewtablescatalogsecuritysqlschemamigraterecoversearchTABLES · 7usersordersproductsusersIDEMAILACTIVEa4c8…[email protected]truea4c8…[email protected]truea4c8…[email protected]true

04 — Eight surfaces

Each tab does one thing well.

Eight tabs, ordered the way teams actually use them. Browse first. Inspect when something looks off. Migrate when ready. Recover when wrong.

Tables

tab

Browse, edit, bulk-update. The daily surface.

  • FK drilldown by any column
  • Bulk edit · find & replace · fill NULLs
  • Sensitive columns mask values until you reveal

Catalog

tab

Views, sequences, triggers, functions. The objects browsing tools forget.

  • REFRESH MATERIALIZED in one click
  • nextval / setval / RESTART for sequences
  • Index UI on every table

Security

tab

Lock graph, RLS, roles, permissions. Built for on-call.

  • Cancel or kill blocking PIDs inline
  • RLS-enabled with no policies → flagged
  • Permission matrix · grantee × table

SQL

tab

Multi-tab editor. Plans persist. Charts render in place.

  • :name parameter prompts
  • Plan history · click any prior run
  • Result charts · bar / line, group-by + agg

Schema

tab

Drag tables, save the layout, export markdown.

  • ERD with persisted positions
  • Hover a table to highlight relations
  • Markdown export · TOC, columns, FKs

Migrate

tab

Apply, plan, verify — with the engine's gates intact.

  • Per-step risk and audit
  • Shadow-DB verify before apply
  • Same flow as the CLI

Recover

tab

Restore artifacts, export archives, sweep cleanups.

  • One-click soft-drop restore
  • Export archives as CSV / JSONL / JSON
  • Cleanup window visible per artifact

Search

tab

Cross-database table and column search.

  • Every table, every column
  • Jump straight to a filtered table view
  • Workspace-wide saved queries

05 — Bundled, in-process

Same engine. Same connection.

Studio isn't a separate service. It's a UI layer that sits inside the same Node process — sharing the engine your app uses, the migrations your CI runs, the recovery artifacts your team trusts.

ONE NODE PROCESSapp coderoutes · workers · jobsdb.users.findMany(…)studiothe 8-tab UIstartStudioServer()zanith engineparser · graph · compiler · adapterpool · migration runner · recovery hookssame clientsame clientpostgresone connection pool

One pool

Studio reuses the connection pool your app already runs against. No second set of credentials, no second TLS config.

One graph

The schema parsed at startup powers both the typed query API and Studio's table list. Drift in one is drift in both.

One migration runner

Apply from CI or apply from the Migrate tab — the same risk gates, the same audit rows, the same recovery artifacts.