seedfaker-core 0.1.0-alpha.4

Core library for seedfaker — deterministic synthetic generator for realistic, correlated, and noisy test records
Documentation

seedfaker-core

Deterministic synthetic data generator for realistic, correlated, and noisy test records across 65+ locales. Rust CLI + Python + Node.js + Go + PHP + Ruby + MCP.

This is the core generation engine. For the CLI, install seedfaker. For language bindings, see the library docs.

Pre-1.0 notice: The API may change between minor versions until 1.0.0 is released. Pin your version and check CHANGELOG.md before upgrading.

Highlights

  • 214 fields across 17 groups — person, finance, auth, gov-id, internet, healthcare, dev, ops
  • 68 locales with native scripts (Cyrillic, CJK, Arabic, Devanagari, Thai, etc.)
  • Deterministic — same seed = same output, byte for byte, across all interfaces
  • RNG isolation — adding or removing fields does not change existing columns
  • Context mode — lock name, email, username to one identity per record
  • Corruption simulation — OCR errors, truncation, mojibake, field swaps (4 severity levels)
  • Zero dependencies beyond getrandom and itoa

Usage

use seedfaker_core::{hash_seed, field, pipeline, locale, rng::Rng};

let seed = hash_seed("demo");
let locales = locale::resolve(&[]).unwrap();
let f = field::lookup("email").unwrap();
let dh = pipeline::field_domain_hash(seed, f, "");

let mut ctx = seedfaker_core::ctx::GenContext {
    rng: Rng::derive_fast(dh, 0),
    locales: &locales,
    modifier: "",
    identity: None,
    tz_offset_minutes: 0,
    since: seedfaker_core::temporal::DEFAULT_SINCE,
    until: seedfaker_core::temporal::default_until(),
    range: None,
    ordering: field::Ordering::None,
    numeric: None,
};
let mut buf = String::new();
f.generate(&mut ctx, &mut buf);
// buf contains a deterministic email

Documentation

License

MIT