Skip to content

Configuration Reference

# seedcli.yaml - Complete configuration reference
# =============================================================================
# DATABASE CONNECTION
# =============================================================================
database:
# Adapter type: postgres, sqlite
adapter: postgres
# Individual connection fields
host: localhost
port: 5432
name: myapp
user: postgres
password: secret
ssl_mode: disable # disable, require, verify-ca, verify-full
# OR use connection URL (takes precedence over individual fields)
# url: "postgresql://user:pass@localhost:5432/myapp?sslmode=disable"
# For SQLite:
# adapter: sqlite
# path: ./myapp.db
# =============================================================================
# SEEDING SETTINGS
# =============================================================================
seeding:
# Default number of rows to generate per table
default_rows: 10
# Number of rows per batch insert (affects performance)
batch_size: 100
# Conflict handling strategy: error, skip, update
on_conflict: error
# =============================================================================
# DATA GENERATION SETTINGS
# =============================================================================
data_generation:
# Probability (0.0 - 1.0) of generating NULL for nullable columns
null_probability: 0.3
# Locale for generating localized data (names, addresses, etc.)
locale: en_US
# =============================================================================
# LOGGING SETTINGS
# =============================================================================
logging:
# Log level: debug, info, warn, error
level: info
# Write logs to .logseed/ directory
to_file: true
# Show logs in console
to_console: true
# Include timestamps in log messages
timestamp: true
# Use JSON format for log output
json: false
# =============================================================================
# PLUGIN SETTINGS
# =============================================================================
plugins:
# Directory containing plugin files
directory: ./plugins
# List of enabled plugins
enabled:
- my-custom-plugin
# Plugin-specific configuration
my-custom-plugin:
option1: value1
option2: value2
# =============================================================================
# TABLE-SPECIFIC SETTINGS
# =============================================================================
tables:
# Override settings for specific tables
users:
# Custom row count for this table
rows: 100
# Column-specific configuration
columns:
email:
# Force specific generator
generator: email
# Ensure uniqueness
unique: true
role:
# Use specific values only
values:
- admin
- moderator
- user
- guest
username:
# Pattern-based generation
pattern: "user_{a-z}{5}"
unique: true
age:
# Numeric range
min: 18
max: 65
bio:
# Set as nullable (override NOT NULL)
nullable: true
status:
# Default value
default: active
products:
rows: 50
columns:
price:
min: 0.99
max: 999.99
sku:
pattern: "SKU-{A-Z}{2}-{0-9}{4}"
unique: true
category:
values:
- electronics
- clothing
- home
- garden
orders:
rows: 200
columns:
status:
values:
- pending
- processing
- shipped
- delivered
- cancelled
total:
min: 10.00
max: 5000.00
FieldTypeDescriptionDefault
adapterstringDatabase type (postgres, sqlite)required
hoststringDatabase hostlocalhost
portintDatabase port5432
namestringDatabase namerequired
userstringDatabase user-
passwordstringDatabase password-
ssl_modestringSSL mode (PostgreSQL)disable
urlstringFull connection URL-
pathstringDatabase file path (SQLite)-
FieldTypeDescriptionDefault
default_rowsintDefault rows per table10
batch_sizeintRows per batch insert100
on_conflictstringConflict strategyerror
FieldTypeDescriptionDefault
null_probabilityfloatNULL probability for nullable columns0.3
localestringLocale for localized dataen_US
FieldTypeDescriptionDefault
levelstringLog levelinfo
to_fileboolWrite to log filestrue
to_consoleboolOutput to consoletrue
timestampboolInclude timestampstrue
jsonboolUse JSON formatfalse
FieldTypeDescriptionDefault
directorystringPlugin directory./plugins
enabled[]stringEnabled plugin names[]
FieldTypeDescription
generatorstringGenerator to use
values[]anyAllowed values (ENUM-like)
patternstringPattern for generation
uniqueboolEnsure uniqueness
nullableboolAllow NULL values
minnumberMinimum value
maxnumberMaximum value
defaultanyDefault value

Use environment variables with ${VAR:-default} syntax:

database:
host: ${DB_HOST:-localhost}
port: ${DB_PORT:-5432}
name: ${DB_NAME}
user: ${DB_USER}
password: ${DB_PASSWORD}

seedcli searches for seedcli.yaml in order:

  1. Current working directory (./seedcli.yaml)
  2. User config ($HOME/.config/seedcli/seedcli.yaml)
  3. System config (/etc/seedcli/seedcli.yaml)