Worldant uses PgPaw/Postgres as the source of truth.
user action
agent action
workflow step
external tool
-> authorized database write
-> PgPaw realtime notification
-> UI, agents, subscriptions, and workflows observe the same truth
The database is not only storage. It is the convergence point for every actor.
Authorization
Authorization belongs to Postgres row-level policy.
Worldant may generate typed functions, validate manifests, and expose MCP/HTTP tools, but it does not replace database policy. Every committed write and every reactive query must execute under a database role/session that Postgres can authorize.
Tables
Worldant expects two categories of data:
- application tables, owned by migrations in the world directory,
- runtime tables, owned by Worldant for snapshots, runs, steps, subscriptions, cursors, and idempotency records.
Application tables are the canonical state of the app. Runtime tables are the canonical state of execution.
Events
Worldant does not require all application state to be rebuilt from one infinite event log. Normal live queries read canonical tables. Cursor-backed event streams are used only when a consumer needs ordered resume semantics.
live query -> latest authorized value
event stream -> ordered changes after cursor
This keeps the common query path fast while still supporting durable consumers.
