Skip to main content

Local PII redaction CLI — email, phone, IBAN, card (Luhn), NINO, UUID, JWT, IP.

Project description

kiprio-redact

PyPI Python License: MIT

Local, offline PII redaction in one pipe. Single-file Python CLI. No telemetry, no network calls.

pip install kiprio-redact
echo "ping me at hi@example.com or +44 7700 900123" | kiprio-redact
# ping me at [REDACTED] or [REDACTED]

What it redacts

email, phone, iban, card (Luhn-validated), nino (UK National Insurance, prefix-validated), uuid, jwt, ip (v4 + v6).

Usage

# default: redact every supported type, write to stdout
kiprio-redact < input.txt

# pick types
kiprio-redact -t email,phone,card < input.txt

# mask each char with X (preserves length)
echo "card 4111 1111 1111 1111" | kiprio-redact -m X
# card XXXXXXXXXXXXXXXXXXX

# custom replacement
kiprio-redact -r "<pii>" < input.txt

# structured findings (JSON) instead of redacted text
kiprio-redact --json < input.txt

# files in/out
kiprio-redact -i in.log -o redacted.log

# verbose: count by type to stderr
kiprio-redact -v < big.log > /dev/null
# kiprio-redact: card=2, email=14, ip=3, phone=7 (total=26)

Library use:

from kiprio_redact import redact, find_spans

text = "alice@example.com 4111 1111 1111 1111"
clean, findings = redact(text)
# clean    = "[REDACTED] [REDACTED]"
# findings = [{"type":"email","start":0,"end":17,"raw":"alice@example.com"},
#             {"type":"card","start":18,"end":37,"raw":"4111 1111 1111 1111"}]

CLI vs API — when to use which

Use case CLI (kiprio-redact) API (/v1/redact)
One-off log scrub, dev pipeline overkill
Offline, no data leaves your box
Free / unlimited usage-billed
Context-aware (names, addresses, ORG) regex only ✅ NER + LLM-assisted
URLs, custom dictionaries, postcodes regex subset ✅ extended catalogue
Higher recall on edge cases
Managed: SLA, audit trail, billing

The CLI uses the same regex muscles that power the API's regex layer, so a finding here is a finding there. The API adds context-aware detection on top.

Exit codes

Code Meaning
0 Success
2 Bad arguments (unknown type, etc.)

Privacy

kiprio-redact makes zero network calls and writes nothing to disk except the output you ask for. Read kiprio_redact/__init__.py — under 250 LOC, all stdlib.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kiprio_redact-0.1.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kiprio_redact-0.1.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file kiprio_redact-0.1.0.tar.gz.

File metadata

  • Download URL: kiprio_redact-0.1.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kiprio_redact-0.1.0.tar.gz
Algorithm Hash digest
SHA256 858dd03cca287dd0411ff67b791873404d29c827e205197988f3ceece9cf633f
MD5 4c2cadec7e2547f09ff8b0172850c0a8
BLAKE2b-256 d5b562c78bd689f11c4d4381656992bbaa8139998614fe6f1c07d639ab65c6a9

See more details on using hashes here.

File details

Details for the file kiprio_redact-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kiprio_redact-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kiprio_redact-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c12a5e7a899223a26c38bceb52fc2be16e774afe6b73f07a144d969e754e827d
MD5 01690478655e2b7091d21198584363ff
BLAKE2b-256 2fa2845cf4c546310262fab5960aa113356490ee272f3aba9ef168c1c4dafa8c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page