Phony Documentation
Phony turns a small schema into realistic fake data — names that sound right for a locale, valid emails composed from them, coherent addresses, chronological event timelines, referentially-intact foreign keys — that looks real without being real. It's N-gram-powered (no LLM), and the same schema + seed produces byte-identical data on every run and every machine.
This is the technical documentation. The full internal design and specification (including roadmap features) lives in the Spec.
Sections
| Section | What it covers |
|---|---|
| The PDL Language | what PDL is, the schema, every generator, the expression language, and how generation works |
| Concepts | the ideas — determinism, the generator types, locales |
| The engine (Rust) | phony-core: install, run a schema, and the full Rust API |
New to PDL? Start with What is PDL?. Want to run a schema now? See The engine → Quick start.
The one-minute picture
A PDL schema (JSON) has three parts:
{
"generators": { "...": "reusable value producers" },
"entities": { "...": "tables — named fields wired to generators" },
"scenarios": { "...": "how many rows of each entity to make" }
}You feed it a seed and the engine returns tables of rows. Generators range from pure-algorithm IDs and numbers, to locale-aware names trained from samples, to templates that compose other values — see The 7 generator types.
Project status
The PDL language and the Rust engine are implemented and documented here. A CLI and language libraries (PHP, JS, Python) — and the product-style guides that come with them — are on the roadmap.