What it solves
Production-shaped development data, continuously maintained and delivered through an explicit anonymization policy.
Develop against production shape
A hand-built fixture can miss the relationships and value shapes behind a production issue. A raw production export brings sensitive plaintext into development. DevReplicate applies configured transforms during the initial copy and subsequent replication, so teams can work with production-shaped data while replacing the sensitive values they have identified.
The suite covers PostgreSQL / Patroni, MySQL / MariaDB / Percona, Redis / Valkey, MongoDB, Apache Kafka / Redpanda, Microsoft SQL Server, Oracle Database and CouchDB. Each product uses the database or event platform's native change stream and applies the shared transforms before data reaches a separate target. Keep the anonymized replica isolated from production and approve its coverage before granting developer access. See the family table.
Keep the replica useful after the first copy
One-off exports age as production changes. Run init-sync to copy existing data with the configured transforms, then replicate to process ongoing changes. When a sensitive field or rule is added to an existing replica, use backfill to cover data already present.
A newly pending rule is not yet protection: its values can remain plaintext until backfill completes and the rule becomes active. Keep the affected dataset out of developer access during that transition. Streaming and download freshness depend on replication progress and the operator’s artifact publication schedule.
The procedure for applying a new rule to existing target data depends on the product. Follow its backfill or re-baseline instructions, and keep the affected dataset restricted until the new rule is active and coverage has been checked.
Keep related values related across engines
With the same transform, parameters and resolved key, the same input bytes produce the same output across all eight products — the transforms come from one shared library, libdrcommon, vendored into each repository. Deterministic hash and fake transforms let corresponding values remain consistent across SQL databases and Redis caches. Agree on input representation too: Redis’s value_kind declares typed canonicalization when raw spellings differ.
For integer relationships, pseudo_id keeps a primary key such as customers.id joinable to orders.customer_id. Use the same hash key, digits and domain label on both sides. This is an injective mapping within the declared integer domain; mask, fake names and fake addresses are not substitutes for unique identifiers.
pseudo_id. Keep that key away from developers. Redis transforms selected values, not identifiers embedded in key names; review those names separately.Stop on transformation failure
When a value covered by an active rule cannot be transformed, replication stops rather than passing that value through in plaintext. Examples include an invalid integer for pseudo_id or a JSON path meeting the wrong container shape. Operators must resolve the failure before the affected replication run can continue.
This safeguard applies only to values covered by configured rules. It does not discover missing rules: unconfigured values may pass through, and an absent optional JSON or document key is left unchanged. Validate rule coverage as well as the running process.
Run the replicator under a supervisor and alert when it stops. Resolve the rule or data problem before restarting.
Make delivery an operational workflow
Enterprise adds an OAuth2/RS256 reconfiguration API, a Prometheus metrics endpoint, engine-specific backup and restore bundles, and an authenticated developer download API. Operators publish completed artifacts; developers retrieve the artifact they are authorized to access, resume interrupted transfers with HTTP byte ranges, and verify the manifest’s SHA-256 checksum and byte count before restoring.
Each product publishes a restorable artifact suited to its engine. Review the complete artifact before distribution: publishing packages the anonymized target; it does not apply another anonymization pass.
Follow the existing download how-to → · Compare Core and Enterprise pricing →