In-VPC PostgreSQL masking and anonymization engine
Project description
PrivaCI
One command. Sanitized staging data. No data leaves your VPC.
PrivaCI is a stateless batch engine that reads from a PostgreSQL source (typically a production replica), masks PII with a three-tier pipeline, and writes realistic synthetic data to a staging database with referential integrity preserved.
Prerequisites
- Python 3.12+, or the official container image
(
ghcr.io/boundarylogic/privaci) - A PostgreSQL source (typically a production replica) and an empty target database
Quickstart
Fastest path — self-contained evaluation stack (~60 s):
export ANONYMIZATION_SALT="$(openssl rand -hex 32)"
make eval-up
See docs/quickstart.md for the full walkthrough.
Your own databases:
pip install -e .
privaci gen-salt > .privaci-salt && chmod 600 .privaci-salt
export ANONYMIZATION_SALT=$(cat .privaci-salt)
export SOURCE_DB_URL=postgresql://user:pass@source-host:5432/app
export TARGET_DB_URL=postgresql://user:pass@target-host:5432/staging
privaci validate && privaci dry-run && privaci run && privaci verify
Browse the docs site locally: pip install -e ".[dev]" && make docs-serve
Documentation
Start with the documentation index or quickstart. Key pages:
Using PrivaCI
- CLI reference — every command, its options, and examples
- Configuration reference — the
mask-rules.yamlformat - Error codes — exit codes and message format
- State & audit schema — what runs write to
_privaci - Extending PrivaCI — the plugin contract model
Developing PrivaCI
License
The engine is licensed under the Elastic License 2.0. Optional paid features ship as a separate plugin layer via the plugin contracts.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file privaci-0.1.0b4.tar.gz.
File metadata
- Download URL: privaci-0.1.0b4.tar.gz
- Upload date:
- Size: 116.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6606e120f3243c467d5e2152bed1c86847bdcd8d9a47a81e6305c27d645d6b6
|
|
| MD5 |
6f70e184edb682a047a8a2ece9839603
|
|
| BLAKE2b-256 |
17cc0afafccad196e7db6e14f6c0362faabc9ec3e749c5d207a73ce4a436f2cc
|
Provenance
The following attestation bundles were made for privaci-0.1.0b4.tar.gz:
Publisher:
publish-pypi.yml on BoundaryLogic/privaci
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
privaci-0.1.0b4.tar.gz -
Subject digest:
b6606e120f3243c467d5e2152bed1c86847bdcd8d9a47a81e6305c27d645d6b6 - Sigstore transparency entry: 1840284456
- Sigstore integration time:
-
Permalink:
BoundaryLogic/privaci@254cfc050368a5fe2e19b987cfe891d97ebe0b74 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BoundaryLogic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@254cfc050368a5fe2e19b987cfe891d97ebe0b74 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file privaci-0.1.0b4-py3-none-any.whl.
File metadata
- Download URL: privaci-0.1.0b4-py3-none-any.whl
- Upload date:
- Size: 160.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0907920ac465008984894ef13eb12bd982f952cb2d58cf41c7a7b83ce7e28881
|
|
| MD5 |
b9d49a5e554f431f59f6d5772c89f57c
|
|
| BLAKE2b-256 |
d3484e18fa0614203fa415b473cf73beadd6f1714449b5816a2c97d772dbce0b
|
Provenance
The following attestation bundles were made for privaci-0.1.0b4-py3-none-any.whl:
Publisher:
publish-pypi.yml on BoundaryLogic/privaci
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
privaci-0.1.0b4-py3-none-any.whl -
Subject digest:
0907920ac465008984894ef13eb12bd982f952cb2d58cf41c7a7b83ce7e28881 - Sigstore transparency entry: 1840284624
- Sigstore integration time:
-
Permalink:
BoundaryLogic/privaci@254cfc050368a5fe2e19b987cfe891d97ebe0b74 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/BoundaryLogic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@254cfc050368a5fe2e19b987cfe891d97ebe0b74 -
Trigger Event:
workflow_dispatch
-
Statement type: