Staging & dev databases

Give every developer a realistic Postgres copy — right-shaped schema, FK-intact rows, and not one byte of production PII.

Why synthetic staging data?

Real data in staging creates the same three problems on every team — regardless of size.

  • PII exposure. Production rows contain real customer data. A careless dump, a shared snapshot, or a staging breach leaks it — and "we only use hashed copies" is a process promise, not a guarantee.
  • Stale, broken fixtures. pg_dump snapshots rot. By the time staging reflects the schema again, the data no longer matches the columns, and foreign keys snap when anything is truncated and reloaded.
  • Hand-maintained seed scripts. SQL fixtures drift from the schema, nobody trusts them, and the developer who wrote them left two years ago.

The alternative isn't more scripts. It's generating data from the schema itself.

The Weavori approach

Weavori treats your source database as read-only — it introspects the schema and analyzes value distributions, and never reads a single production row into memory for output.

  • Foreign keys resolved for you. Weavori reads your constraints, orders tables by dependency, and generates parents before children — every generated row references a real parent.
  • Realistic by default. Column distributions come from pg_stats, so values look like production without being production.
  • New values, never copies. Nothing is scrambled or cloned — every value is generated fresh, so no PII survives by construction.
  • Zero configuration. No YAML, no mapping files. Point at a schema, pick a row count, done.

Generate a staging database

Install the CLI
npm install -g @weavori/cli

Point Weavori at your staging database

The first argument is the target — Weavori reads the schema, resolves the foreign-key order, and streams rows table by table.

weavori generate postgres://staging.example.com:5432/app --rows 100000

Watch the dependency order resolve
$ weavori generate postgres://staging.example.com:5432/app --rows 100000
✓ connected · 24 tables · 31 foreign keys
✓ resolved order · 6 tables generated as parents
✓ generating app.users … 100000 rows (2.1s)
✓ generating app.orders … 100000 rows (3.4s)
✓ generating app.order_items … 200000 rows (5.0s)
✓ done · 24/24 tables · 4.2M rows · referentially intact

Verify in psql
$ psql postgres://staging.example.com:5432/app -c "SELECT count(*) FROM app.orders;"
 count
--------
 100000
(1 row)

Your staging database now has the shape of production — with none of the liability.

Get started

Install Weavori, connect a database, and generate your first dataset in under five minutes.

i

Prefer to read first?

The end-to-end workflow guide walks through connecting, generating, and exporting a full dataset. The quickstart is the fastest possible start.

npm install -g @weavori/cli

Ready to generate your first dataset?

Install Weavori in one command and connect to any PostgreSQL database.

$npm install -g @weavori/cli
macOS · Linux · Windows/No dependencies required

No credit card required. Start with a 14-day free trial of Pro, then free tier or subscribe.