DBWarp Shape · Available now
See what DBWarp could do for your databases — without giving anyone access.
DBWarp Shape is a small command-line tool you run inside your own environment. It connects to PostgreSQL, MySQL, or SQL Server, reads database metadata, and writes a plain-text shape file you can review line-by-line before sharing with us. No upload. No telemetry. No credentials leave your network.
Why
Why we ask you to run it
A useful migration estimate needs facts about your database — table counts, row counts, index and column shapes, optional compression measurements. Those facts are enough for us to estimate transfer size and migration time. They are not enough to reconstruct your schema or your data. Running Shape locally lets you control exactly what we see.
- Number of tables
- Approximate row counts
- Table and index sizes
- Column types and widths
- Index and foreign-key shape
- Optional compression measurements from a small local sample
What Shape captures
Guarantees
What Shape doesn't do
The trust model is the product. Shape is open source, narrow on purpose, and does only what's documented.
No telemetry, no callbacks
Shape does not phone home, call DBWarp servers, or upload the output file. The only network connection is the database connection you specify on the command line.
No ambient credentials
Shape will not read ~/.pgpass, ~/.my.cnf, cloud credentials, SSH keys, or default password environment variables like PGPASSWORD or MYSQL_PWD. Pass credentials explicitly.
No real names in output
Table names, column names, index names, schema names, and row values never appear in the shape file. Identifiers are replaced with stable placeholders before anything is written.
Output
Output you can read line by line
Shape writes a plain-text TOML file. Open it, review every line, decide whether to share it. The format is documented and stable.
# dbwarp-shape v1
# Schema shape only. No table/column names. No row data.
# Safe to share via email.
schema_version = 1
generated_at = "2026-04-26T00:00:00Z"
engine = "postgresql"
engine_version = "16.2"
source_kind = "production"
[totals]
table_count = 28
row_count = 12500000
table_bytes = 4200000000
index_bytes = 1100000000
[tables.table-001]
rows = 12500000
table_bytes = 4200000000
index_bytes = 1100000000
schema = "schema-A"
has_clustered_index = false
[tables.table-001.cols.col-1]
ordinal = 1
type = "bigint"
nullable = false
Get it
Two ways to get it
Pick whichever fits your security policy. Building from source is the trust-first path; the binary path is provided for convenience on quick trials and sales engineering calls.
Build from source
Small Rust source tree pinned with Cargo.lock. A vendored source bundle is published with every release for strict offline dependency audits. License: Apache-2.0 OR MIT.
Download a binary
Prebuilt binaries are attached to every GitHub Release with SHA256 checksums. Best for a quick trial or a sales engineering call on an isolated test host.
Quick start
Quick start
Dry-run prints what would happen without reading the database. Then run for real with TLS, an explicit password file, and a small compression sample.
PostgreSQL
./dbwarp-shape \
--connect postgresql://app@db.internal/payments \
--password-file /etc/dbwarp/db.pass \
--tls-mode verify-full \
--tls-ca /etc/pki/internal-root.crt \
--measure-compression --yes \
--sample-rows 1000 \
--max-wall-secs 300 \
--out shape.toml \
--audit-log audit.txt
MySQL and SQL Server use the same flags with engine-appropriate connection URIs. Full reference, Kerberos / SSPI / Entra ID, and internal-CA examples in the GitHub README.
Ready to see your numbers?
Run Shape once. Review the output. Send it our way if it looks right.