Postgres stays exactly where it is, serving your application. It becomes a datasource: a named, governed
connection the agent reads through and a pipeline can query — marked read-only wherever nothing should
ever write. The agent's SQL runs against your real schema with a key you issued and can revoke; the
database password itself never leaves the deployment.
The scratch engine is per run, so there is nothing new to operate when the second source arrives — the
join happens in an H2 workbench that exists for exactly that execution. And when the result of a pipeline
belongs back in Postgres — a rollup table a dashboard reads, say — a write-back node lands it in a
database you already run. You only meet a second deployment if you decide the data volume, not the
question count, has earned one.
The order of operations matters, and it is the order this page is written in: the datasources register in
minutes, the agent's first draft is a review artefact rather than a commitment, and the release step only
appears when a second person cares what ran. Postgres was never demoted; it gained a governed front door
for the questions that stopped fitting inside a single engine. If and when a warehouse genuinely arrives —
volume, retention, a modelling practice — the pipelines you built in the meantime speak the same endpoint
contract into it, which is a migration path, not a cliff. And nothing here is a rewrite of how your team
works: the database stays the database, and the new arrivals plug into it rather than around it.