pawabase.toml

Override any of them for one run with the shared options: Environment variables PAWABASE_URL and PAWABASE_ENV do the same, which is how CI sets them.

.env

Local, never committed. The API key and any secrets your definitions read:
Real environment variables win over .env. See Secrets and env.

Definitions register themselves

Creating an object registers it. There is no list to maintain:
When you run any command, the CLI imports your entry and collects everything that was created.

Splitting across files

With entry = "infra", every .py file in the folder is run once, and files can import each other:
Pass a definition object where a name is expected (a table’s operations, a route’s handler, a subscription’s run) and the name is filled in for you, so renaming something updates every reference.

Several environments

The same code deploys to every environment. Choose with -e:
Keep differences small and in data (env("…") secrets, a different URL), not in code paths.

A typical layout

Validate

What is checked.

CI/CD

Automate it.