DevReplicate
FROM PRODUCTION TO DEVELOPMENT

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.

Rules define the boundary. Unconfigured SQL columns and unconfigured document fields pass through unchanged, as do unmatched Redis keys by default. Names are never rewritten: Redis keys and hash fields, MongoDB and CouchDB field names, JSON object keys and Kafka header names all reach the target as they were, so do not put sensitive data in a name. Kafka inverts the default — a topic no rule matches is skipped rather than copied — and CouchDB copies attachments verbatim, so a database whose attachments hold sensitive content should not be replicated at all. “Anonymized replica” does not mean every byte is automatically safe to share.

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.

Plan the staged rollout →

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.

Pseudonymization needs key separation. A holder of the key can invert pseudo_id. Keep that key away from developers. Redis transforms selected values, not identifiers embedded in key names; review those names separately.

Read the transform requirements →

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 →