PIIGhost
English | Français
piighost is a Python library that protects your confidential data, personal data (PII) and secrets, in conversations with LLMs through de-identification. Sensitive values are hidden before they are sent, then restored in the response. LangChain, Pydantic AI, LlamaIndex and Claude Code integrations are provided, together with an OpenAI and Anthropic API connector.
This de-identification spots confidential data with pluggable detectors (regex, NER, LLM) and replaces each value with a placeholder, the token that takes its place. For example:
John Doebecomes<<PERSON:1>>john.doe@example.combecomes<<EMAIL:1>>
This placeholder stays the same from one message to the next with the conversational pipeline, which keeps the mapping between a value and its placeholder across the whole conversation. If john.doe@example.com reappears three messages later, the placeholder is still <<EMAIL:1>>, which lets the LLM follow the thread.
The LLM therefore only receives de-identified text. When it returns placeholders, for example by answering Hello <<PERSON:1>>, piighost replaces them with the real values. The user sees John Doe and never sees the de-identification.
The same mechanism protects agents that call tools. With the LangChain middleware, a tool that needs the real email address receives it in clear, while the LLM that supplies it only writes <<EMAIL:1>>.
The LLM only sees placeholders. The tool receives the real address, the user gets a clear-text reply, and your agent code stays the same.
Quickstart
pip install piighost # or: uv add piighost
ExactMatchDetector de-identifies a dictionary of known values, with no model to download.
import asyncio
from piighost.components.detector import ExactMatchDetector
from piighost.pipeline import AnonymizationPipeline
detector = ExactMatchDetector({"John Doe": "PERSON", "john.doe@example.com": "EMAIL"})
pipeline = AnonymizationPipeline(detector)
result = asyncio.run(pipeline.anonymize("Write to John Doe at john.doe@example.com."))
print(result.text) # Write to <<PERSON:1>> at <<EMAIL:1>>.
The Quickstart goes on with a real detector and a conversation.
Go further
- Start: installation, first pipeline, conversational pipeline
- Configure: a pipeline in a TOML file, pattern groups from the catalog, every config key
- Integrate: LangChain, Pydantic AI, LlamaIndex, Claude Code, a remote piighost-api
- Deploy: an API server from a catalog configuration, a production thread pipeline, several instances
- Understand: why de-identify, architecture, security, GDPR compliance, limitations, detection, measured, how it compares
- Upgrade: versions and the move to 2.0
Ecosystem
- piighost.dev: the presentation site
- piighost catalog: reviewed regex groups and ready-made pipeline configurations, pulled by reference
- piighost-api: a server hosting one pipeline behind HTTP, with OpenAI- and Anthropic-compatible proxies
- piighost-chat: an example chat interface with human-in-the-loop
Project
- Community: Discord to get help, report bugs and request features
- Contributing: contribution guide and bug reports
- License: MIT
Metadata
Release files for piighost 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| piighost-2.0.0.tar.gz | 129.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| piighost-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 307.2 kB
Release files / piighost-2.0.0.tar.gz
| Download URL | piighost-2.0.0.tar.gz |
|---|---|
| Size | 129.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4c06b224ce5a5ce69a2d3965471e9fd060e82bcf7e9576db765b044b8f53bbb1
|
|
BLAKE2b-256 checksum How to use checksums |
3eb3d1e7c5e911832cdcb41a349100df97670d997a3fb66ab9e9ee9d4ac2a0e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / piighost-2.0.0-py3-none-any.whl
| Download URL | piighost-2.0.0-py3-none-any.whl |
|---|---|
| Size | 177.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b17700d60e75a88568b3cd0e67eb0fd805b6b09ac09d790000321fb18dc128ba
|
|
BLAKE2b-256 checksum How to use checksums |
3252716e8da16511e17bbd9556c6ff95d10cad8e7962cddd70f2cab67642f9f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|