Dynamic database seeder with schema self-discovery, FK-aware ordering, and AI enrichment. Works with MySQL 8+ and PostgreSQL 13+.
Go install
go install github.com/AxeForging/seedstorm/cmd/seedstorm@latestLinux / macOS — download binary
# macOS ARM64 (Apple Silicon)
curl -L https://github.com/AxeForging/seedstorm/releases/latest/download/seedstorm-darwin-arm64.tar.gz | tar xz
sudo mv seedstorm /usr/local/bin/
# macOS AMD64
curl -L https://github.com/AxeForging/seedstorm/releases/latest/download/seedstorm-darwin-amd64.tar.gz | tar xz
sudo mv seedstorm /usr/local/bin/
# Linux AMD64
curl -L https://github.com/AxeForging/seedstorm/releases/latest/download/seedstorm-linux-amd64.tar.gz | tar xz
sudo mv seedstorm /usr/local/bin/
# Linux ARM64
curl -L https://github.com/AxeForging/seedstorm/releases/latest/download/seedstorm-linux-arm64.tar.gz | tar xz
sudo mv seedstorm /usr/local/bin/All releases and checksums at github.com/AxeForging/seedstorm/releases.
# 1. Discover schema from your database
seedstorm introspect \
--db postgres \
--dsn "postgres://user:pass@localhost/mydb" \
--out schema.yaml
# 2. (Optional) AI-enrich faker mappings for domain-meaningful data
GEMINI_API_KEY=xxx seedstorm ai-enrich \
--schema schema.yaml \
--prompt "Mexican taco shop" \
--out schema.enriched.yaml
# 3. Seed 100 rows per table
seedstorm seed \
--db postgres \
--dsn "postgres://user:pass@localhost/mydb" \
--schema schema.enriched.yaml \
--rows 100
# 4. Fill any empty tables added later
seedstorm gaps \
--db postgres \
--dsn "postgres://user:pass@localhost/mydb" \
--schema schema.yaml \
--fill --rows 100- Schema self-discovery — introspects tables, columns, PKs, FKs, enum values, UNIQUE and CHECK constraints; no manual editing required
- FK-aware seeding — topological sort guarantees parent tables are seeded before children; handles self-referential FKs, near-cycles, junction tables, and deep multi-level chains
- Constraint-aware faker mapping — UNIQUE →
uuid, CHECK IN →randomstring(a,b,c), CHECK range →number(min,max); seed data always satisfies your constraints - Semantic faker — maps column names (
email,first_name,price,city…) to realisticgofakeitgenerators automatically - Enum coverage — every enum value appears at least
--rowstimes, independently per column - AI enrichment — Gemini rewrites faker hints for domain-meaningful data; supply
--promptfor richer context - Gap analysis —
gapsshows which tables are empty with row counts and FK context;--fillseeds only the empty ones - Interactive TUI — wizard for table selection, config, and review before seeding
- Web UI —
seedstorm serveexposes an interactive graph workspace with click-to-select tables, live SSE job logs, multi-DB session switcher, and connection presets inlocalStorage - Dry-run — preview the seed plan and INSERT SQL without touching the database
- Export — generate fake data as YAML, JSON, or SQL without a live connection
| Document | Contents |
|---|---|
| Command Reference | All flags, examples, and sample output for every command |
| Schema YAML Format | Schema file format, column fields, faker hints reference |
| Development & Testing | Local setup, unit + integration tests, CI, env vars, Makefile |
| Examples | End-to-end walkthroughs with GIF demos |
