Skip to main content

SeedKit

Generate realistic, constraint-safe seed data for any database.

SeedKit connects to your PostgreSQL, MySQL, or SQLite database, reads the schema, and generates seed data that respects foreign keys, unique constraints, check constraints, and enum types -- all without copying production data.

Install

pip install seedkit

Or with pipx for isolated installation:

pipx install seedkit

Quick Start

# Generate 1000 rows per table as SQL
seedkit generate --db postgres://localhost/myapp --rows 1000 --output seed.sql

# Insert directly into database
seedkit generate --db postgres://localhost/myapp --rows 1000

# JSON or CSV output
seedkit generate --db postgres://localhost/myapp --rows 100 --output data.json

# Deterministic output with seed
seedkit generate --db postgres://localhost/myapp --rows 100 --seed 42 --output seed.sql

Database Connection

SeedKit automatically finds your database URL by checking (in order):

  1. --db CLI flag
  2. DATABASE_URL environment variable
  3. .env file in the current directory
  4. seedkit.toml config file

Supported URL formats:

# PostgreSQL
seedkit generate --db postgres://user:pass@localhost:5432/mydb

# MySQL
seedkit generate --db mysql://user:pass@localhost:3306/mydb

# SQLite
seedkit generate --db sqlite://path/to/db.sqlite

AI-Enhanced Classification

SeedKit can use an LLM to improve column classification beyond the built-in 50+ regex rules. This helps with ambiguous column names that the rule engine classifies as Unknown.

# Set one of these environment variables:
export ANTHROPIC_API_KEY=sk-ant-...    # Uses Claude Sonnet (default)
export OPENAI_API_KEY=sk-...           # Uses GPT-4o (default)

# Run with --ai flag
seedkit generate --db postgres://localhost/myapp --rows 1000 --ai --output seed.sql

# Override the model
seedkit generate --db postgres://localhost/myapp --rows 1000 --ai --model claude-opus-4-20250514

The AI classification is cached locally so subsequent runs with the same schema don't re-query the LLM. Results are also stored in the lock file for team reproducibility.

Smart Sampling

Extract statistical distributions from a production database to generate data that mirrors real patterns:

# Sample distributions (read-only, PII auto-masked)
seedkit sample --db postgres://readonly-replica:5432/myapp

# Generate using sampled distributions
seedkit generate --db postgres://localhost/myapp --rows 1000 --subset seedkit.distributions.json

All Commands

Command Description
seedkit generate Generate seed data (SQL, JSON, CSV, or direct insert)
seedkit sample Extract production distributions with PII masking
seedkit introspect Analyze schema and show classification results
seedkit preview Preview sample rows without full generation
seedkit check Detect schema drift against lock file (CI-friendly)
seedkit graph Visualize table dependencies (Mermaid or Graphviz)

Configuration

Create a seedkit.toml in your project root:

[database]
url = "postgres://localhost/myapp"

[generate]
rows = 500
seed = 42

[tables.users]
rows = 1000

[tables.orders]
rows = 5000

# Custom value lists with optional weights
[columns."products.color"]
values = ["red", "blue", "green", "black", "white"]
weights = [0.25, 0.20, 0.20, 0.20, 0.15]

Performance

Operation Throughput
Generation (10 cols, semantic providers) ~480K rows/sec
Generation (FK references only) ~3.7M rows/sec
Classification (100 tables x 20 cols) ~2.1M cols/sec
SQL output formatting ~1.5M rows/sec

Documentation

Full documentation, architecture details, and benchmarks: github.com/kclaka/seedkit

License

MIT

Metadata

Release files for seedkit 1.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for seedkit 1.5.1
File
seedkit-1.5.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
seedkit-1.5.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
seedkit-1.5.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl Python 3 none Linux glibc 2.5+ x86-64 Details
seedkit-1.5.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
seedkit-1.5.1-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 25.5 MB

Release files / seedkit-1.5.1-py3-none-win_amd64.whl

Download URL seedkit-1.5.1-py3-none-win_amd64.whl
Size 5.3 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
4b4b9f308292a6e1d44279a429557e4e631b168a281f06fe6de8f4f637c09013
BLAKE2b-256 checksum
How to use checksums
7566574c8fa66229e9223bf5b5c30a26a378ca6dd33efddbdf092aa097c152e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.4

Release files / seedkit-1.5.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL seedkit-1.5.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.0 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
2e26ec8b6dd57f8a6b1a7e7f9123e3c54efdb59e6b3df7ab58f1a6b835861684
BLAKE2b-256 checksum
How to use checksums
1f4fafe6c0cdd383171994aa5c24148cb6bbf1d1adab12141017547600cfa572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.4

Release files / seedkit-1.5.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl

Download URL seedkit-1.5.1-py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Size 5.4 MB
Tags Linux glibc 2.5+ x86-64 Python 3
SHA-256 checksum
How to use checksums
95a3720f437929e72477bc0fdefdcaccd948e0fc7f21bbc3a32e018ae734bd2c
BLAKE2b-256 checksum
How to use checksums
d325955af5f0555708f29e2c13caa4cbf12d32d73f9c9c8b5a5bfb54452ca7d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.4

Release files / seedkit-1.5.1-py3-none-macosx_11_0_arm64.whl

Download URL seedkit-1.5.1-py3-none-macosx_11_0_arm64.whl
Size 4.7 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
eb9ca1b9222a3c97d7b885b5aff5948666760f84cafa960ded5154ee78bfd40c
BLAKE2b-256 checksum
How to use checksums
e55d10ff59dcad2ebafaa0d39f68edb0e5ecd53fbac27c33afad2c5c25b0dbab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.4

Release files / seedkit-1.5.1-py3-none-macosx_10_12_x86_64.whl

Download URL seedkit-1.5.1-py3-none-macosx_10_12_x86_64.whl
Size 5.0 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6f024fbc81a0fb742bc81c7202e352095e1c20cf188af48cb06426a20770144f
BLAKE2b-256 checksum
How to use checksums
fe1561c9519495f7c0d911c9f5bdf018be273647170d5a7a47ebabad5106d292
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.4

Release history Release notifications | RSS feed

This release

1.5.1 This release

5 release files

1.5.0

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page