Studio
A SQL runner and table browser in the dashboard, with deliberate guardrails.
SQL runner
The Studio tab on a project runs SQL against the project database with bounded execution:
- 15 second statement timeout
- 1000 rows maximum per result (default 200; set
max_rowsup to the cap) - 20,000 characters maximum query length
Queries run inside a transaction; results stream back as columns + rows with the executed row count. Query history is kept per project, so you can re-run the thing you wrote last Tuesday.
By default the runner is in safe mode for data work. Advanced mode unlocks DDL (CREATE/ALTER/DROP) — flip it on deliberately when you mean to change schema, not data.
For anything long-running or interactive beyond the runner's bounds, connect with psql over the direct URL — Studio is a convenience, not a replacement for a real session.
Table browser
The Tables view lists schemas and tables with row counts, lets you page through rows, and supports editing:
- insert rows
- update rows in place
- delete rows
Column metadata (types, nullability, defaults) comes along, so the editor knows what it is editing.
From the CLI
The same bounded runner backs capydb sql:
capydb sql "select count(*) from users" --json
capydb sql "select * from orders order by created_at desc" --max-rows 50And capydb studio opens the dashboard page for the linked project:
capydb studio --page studioAuditing
Studio activity goes through the same control plane as everything else, so SQL execution and row mutations show up in the project audit trail.