fullstack app comes with a managed Postgres database. These commands reach it
without a connection string. API detail: Database.
Every command takes an optional --app <id-or-name>. Omit it when the organization has one
fullstack app — that app is resolved for you. With several, the command fails with
ambiguous_app and lists the candidates; name one. With none, not_found: make one with
vetta app create <name> --type fullstack.
query and migrate require the agents:write scope; tables and migrations require agents:read.
Commands
query
tables
migrate
A migration is applied once per name: re-running the command with the same file is a no-op that
prints the existing ledger row, and re-running it with a changed file under the same name fails
with
version_conflict — write a new file instead. Names are lowercase letters, digits, _ and -.
For an app a project declares, put the files in the declaration instead — apps[].migrations in
naive.config applies them on every naive up.