Fake data, PII anonymization, and database seeding — in one local Mac app.
Generate realistic test data across 75+ field types, scrub sensitive data before it ever leaves prod, seed 14 different database engines, and mock a REST API on top of it — without a single byte touching the cloud.
macOS 14 (Sonoma) or later · Apple Silicon · 30-day free trial, no credit card
Everything a test-data pipeline needs, offline
One local app instead of five different scripts, SaaS trials, and CLI tools duct-taped together.
🧬 Data Generator
75+ field types, 5 locales, cross-field consistency, a formula engine, and streaming/parallel generation for millions of rows.
🛡️ PII Anonymizer
Detects and masks PII in files and live databases, with format-preserving masking and compliance audit reports.
🗄️ 14 Database Connectors
Postgres, MySQL, SQLite, MSSQL, MongoDB, Redis, Neo4j, Cassandra, ClickHouse, Elasticsearch, and more.
🔌 Mock API Server
Spin up a local REST API serving generated data — JSON, XML, or CSV — with pagination, custom headers, and CORS.
📦 30+ Export Formats
CSV, JSON, SQL dialects, Parquet, Avro, MessagePack, BSON, OpenAI fine-tuning JSONL, and more.
🔒 Encrypted, local-first
AES-256-GCM encrypted project files. Nothing is uploaded — your schemas, connections, and data stay on your Mac.
📥 Data Import
Discover schemas straight from CSV, TSV, JSON, Excel files, or any of the 14 connected database engines.
🖥️ CLI
A signed, headless CLI binary for CI pipelines and scripted, automated data generation. Also ships as a Docker image — build it locally with make docker-build.
📊 Data Quality Metrics
Every generated or imported dataset is scored for uniqueness, distribution, and completeness before you export it.
Realistic test data, not obviously-fake data
Every field is backed by 500+ locale-aware entries, and fields that should agree with each other — actually do.
- 75+ field types across 9 categories: Identity, Person, Contact & Location, Finance, Internet, Business, Commerce, Data, and Custom (list / template / formula)
- 5 locales —
en,es,pt,fr,de— with locale-correct names, cities, states, streets, phone formats, ZIP codes, and business fields - Cross-field consistency: a row's
FullNameflows into itsEmailandUsername— no moremary.williams@…next to "John Smith" - A formula engine (
this['field']/{field}syntax) for computed columns, plus per-field null %, blank %, and distinct % controls - Deterministic seeded generation for reproducible test fixtures, or fully random for load testing
- Streaming + multi-threaded generation scales to millions of rows without blowing up memory
| id | full_name | city | signup_date | |
|---|---|---|---|---|
| 1001 | Sofía Herrera | [email protected] | Valencia | 2025-11-02 |
| 1002 | Liam O'Connor | [email protected] | Dublin | 2025-11-04 |
| 1003 | Amara Nwosu | [email protected] | Lagos | 2025-11-06 |
| 1004 | Kenji Watanabe | [email protected] | Osaka | 2025-11-09 |
Locale: mixed · name → email consistency enabled · 4 of 1,000,000 rows shown
Scrub production data before it leaves prod
Point it at a file or a live database, and it finds and masks sensitive fields — without breaking their shape.
- Heuristic + regex PII scanner detects emails, phone numbers, SSNs, credit cards, and IPs — including PII buried inside nested JSON
- Format-preserving masking keeps values usable: credit cards stay PCI-DSS compliant (last 4 digits only), phone numbers keep their shape
- Strict type gating prevents false positives — a UUID segment won't get mistaken for a phone number or credit card
- Anonymize files directly, or run it against a live database with relational/referential-integrity-aware masking across tables
- Export the pseudonym mapping as CSV, and generate a compliance audit report of what was found and masked
Format-preserving masking — downstream code that parses these fields keeps working.
Push generated data straight into 14 database engines
Relational, document, key-value, graph, wide-column, time-series, and search — connect, test, and seed without leaving the app.
- Built-in connection testing before you ever push a row
- Discover schemas by importing table/collection structure directly from a live database
- Saved connections with encrypted credentials at rest
- Same schema, any target — build a dataset once and push it to Postgres today, MongoDB tomorrow
Relational, document, key-value, graph, wide-column, time-series, search, and analytical stores.
Serve your generated data over a real REST API
Frontend or mobile team needs an API before the backend exists? Point them at a local endpoint backed by your schema.
- Local Axum-powered REST server with dynamic endpoints per schema
- Response format is configurable per endpoint — JSON, XML, or CSV
- Pagination with a
page/per_pagemetadata envelope, built in - Custom response headers and configurable CORS for cross-origin frontend dev
- Import an OpenAPI spec to generate a matching schema instantly
GET /api/users?page=2&per_page=2
{
"data": [
{ "id": 3, "full_name": "Amara Nwosu",
"email": "[email protected]" },
{ "id": 4, "full_name": "Kenji Watanabe",
"email": "[email protected]" }
],
"meta": { "page": 2, "per_page": 2, "total": 1000000 }
}
Running locally on your Mac — no external hosting required.
30+ formats, from a CSV to a Parquet file
Whatever your pipeline speaks, Data Maestro can write it — including streaming output for datasets too large to hold in memory.
Delimited
Structured
SQL dialects
NoSQL
Streaming
Binary
ML / fine-tuning
Your data never leaves your Mac
Data Maestro is a native app that runs entirely locally — there's no server in the loop for generation, anonymization, or database seeding. The app does make a few network calls unrelated to your data (license activation, update checks) — see the privacy policy for exactly what those send.
🔐 Encrypted project files
Saved connections, templates, and datasets are encrypted at rest with AES-256-GCM. Database passwords are never stored in plaintext.
🖥️ Fully local execution
Generation, anonymization, and database pushes run inside the app's Rust core, on your machine — memory-safe by construction, which matters when the same engine is scanning and anonymizing real PII. No dataset is ever uploaded anywhere.
🔑 Your own encryption key
A per-install key lives at ~/.data_maestro_encryption.key with restrictive file permissions — never synced, never transmitted.
✅ Offline license verification
License keys are validated with an Ed25519 signature check on-device. The app works fully offline once activated.
A CLI for CI
Everything the Mac app does is backed by the same Rust core, exposed as a standalone binary — no GUI required.
- Generate schema-driven datasets straight to CSV, JSON, SQL, and every other supported format from the command line
- Stream millions of rows straight to disk with
--output, without holding the whole dataset in memory - Parallelize large generation jobs across threads with
--threads - A signed binary download — no toolchain or source access needed
- Free tier caps
generate-schemaat 100 rows per run — a Pro license (same key as the Mac app) removes the cap
# Download the signed CLI binary
curl -L -o data-maestro-cli \
https://github.com/rschalch/data-maestro-releases/releases/latest/download/data-maestro-cli-macos-arm64
chmod +x data-maestro-cli
# Stream rows straight to a file, 4 threads
./data-maestro-cli generate-schema \
--output data.csv --threads 4 \
schema.json csv 100000
Built for the people who need believable data fast
QA & test engineers
Generate realistic, edge-case-rich fixtures with deterministic seeds — the same dataset, every CI run, every time.
Backend & platform teams
Seed a fresh Postgres or MongoDB instance in seconds instead of writing another one-off seed script.
Frontend & mobile teams
Mock a REST API backed by realistic data before the real backend exists, and keep working in parallel.
Data & compliance teams
Anonymize a production export before handing it to a staging environment, a vendor, or a demo.
Solo developers & agencies
Populate a client demo with data that looks real, in every locale your client operates in.
ML & data science
Export directly to Parquet, Avro, or fine-tuning-ready JSONL for prototyping without touching real user data.
Start free. Upgrade when the 100-row cap gets in your way.
Data Maestro is under active development — new field types, export formats, and database connectors ship regularly. Pro is a subscription so every update is included automatically; prefer to pay once, up front? Take the lifetime license instead.
Free
- Up to 100 rows per export or DB push
- Up to 2 saved database connections
- All 75+ field types & 30+ export formats
- PII anonymizer — file anonymization, up to 100 rows
- Mock API server (trial only)
Pro
- Unlimited rows & database pushes
- Unlimited saved connections
- Full Mock API server hosting
- Unlimited-row & live-database PII anonymization, plus compliance reports
- Every new field type, format, and DB connector — included as we ship it
- Priority email support
Lifetime
- Everything in Pro
- One-time payment, no renewals
- Every new field type, format, and DB connector — included as we ship it
- Priority email support
Team
- Everything in Pro, for every seat
- Centralized license, one purchase for the whole team
- Priority support for your team
- 10+ seats? Email us for volume pricing
Questions, answered
Does any of my data ever leave my Mac?
No. Data generation, PII anonymization, and database seeding all run locally inside the app's Rust core. The only network calls the app makes are for license activation and update checks — never for the data you generate or anonymize.
What platforms does it run on?
Data Maestro is a native SwiftUI app for macOS 14 (Sonoma) or later, on Apple Silicon Macs.
Can I use it in CI/CD or on Linux?
Yes. The same Rust core also ships as a headless CLI binary, so you can generate schema-driven datasets from a pipeline without the GUI. It also ships as a Docker image — build it locally with make docker-build (not yet published to a registry). The free tier caps generate-schema at 100 rows per run — a Pro license key (same one as the Mac app) removes the cap. CLI docs →
Is there really a free tier, or just a trial?
Both. You get full, unlimited access for a 30-day trial. After that, the app keeps working forever on the Free tier — capped at 100 rows per export/push and 2 saved database connections — so you're never fully locked out.
Can I import my existing schema instead of building one from scratch?
Yes. Import a schema from a CSV, TSV, JSON, or Excel file, discover it directly from a live database table, or import an OpenAPI/JSON Schema document.
Does the anonymizer work on a live database, or just files?
Both, on Pro. Point it at a file to mask PII in place — that part is available on the Free tier, capped at 100 rows — or connect it to a live database for anonymization that's aware of relational structure across tables, which requires Pro.
What happens to my license if I switch Macs?
Use the "Deactivate this Mac" button in Settings to free up your seat, then activate the same license key on the new machine.
Why is Pro a subscription instead of a one-time purchase?
Data Maestro keeps shipping new field types, export formats, and database connectors — a subscription means you get all of that automatically, forever, instead of paying again for every major update. If you'd rather pay once and be done, the lifetime license is priced at a fixed premium over the annual plan and never expires.
How does Team pricing work — is it a different product?
No — Team is just Pro, purchased for more than one seat. Set the quantity at checkout to the number of Macs you need licensed; everyone gets identical features to a solo Pro license. Buying 10 or more seats gets you a volume discount — email us first.
What's your refund policy?
Full refund within 14 days of purchase, no questions asked, for Monthly, Yearly, or Lifetime alike. See the license agreement or email [email protected].
Stop hand-writing seed scripts.
Download Data Maestro and generate your first dataset in under a minute.