PII Anonymization
Regex-based entity detection with configurable YAML rules — phones, emails, names, IDs.
ContextZero sits between your application and external LLM providers, ensuring personal data never leaves the trust boundary.
PII Anonymization
Regex-based entity detection with configurable YAML rules — phones, emails, names, IDs.
Persona Engine
Template-based system prompt injection for consistent synthetic identities.
Ephemeral Encryption
AES-256 session keys in RAM only — never persisted, destroyed with the session.
from contextzero import PrivacyMiddleware, ZeroConfigfrom contextzero.masking import MaskingConfig, EntityRule
# Define PII detection rulesmasking_config = MaskingConfig( text_entity_rules=[ EntityRule(entity_type="phone", prefix="PHN", pattern=r"\+380\d{9}"), EntityRule(entity_type="email", prefix="EML", pattern=r"[\w.]+@[\w.]+\.\w+"), ])
# Create middlewareconfig = ZeroConfig(enabled=True, persona_enabled=True)middleware = PrivacyMiddleware.from_config( masking_config=masking_config, config=config,)
# Wrap any async LLM callresult = await middleware.process( input_text="Call Oleksii at +380501234567", llm_call=my_llm_function,)# Input to LLM: "Call PHN_a1b2c3 at PHN_d4e5f6"# Output to user: original names/phones restoredmasking/)proxy.py)Central orchestrator supporting per-call rule merging.
graph.py)8-node privacy pipeline: detect → mask → check → persona → forward → receive → unmask → verify.
| RPC | Description |
|---|---|
Anonymize | Mask PII in input text |
Deanonymize | Restore original values |
ScanPII | Scan text for PII entities (detection only) |
ProcessPrompt | Full anonymize → LLM → deanonymize pipeline |
DestroySession | Delete session keys from RAM |
GetStats | Privacy metrics |
Rules are loaded from masking/rules/defaults.yaml:
rules: - entity_type: "name" prefix: "PER" pattern: "(?i)[А-ЯІЇЄҐ][a-яіїєґ']+\\s+[А-ЯІЇЄҐ][a-яіїєґ']+" - entity_type: "phone" prefix: "PHN" pattern: "\\+380\\d{9}" - entity_type: "email" prefix: "EML" pattern: "[\\w.]+@[\\w.]+\\.\\w+"Consumer projects can extend or override these rules via MaskingConfig.