saklam
Erkennt und maskiert personenbezogene Daten in deutschem Text (plus EN, FR, ES, IT, NL, PL) — lokal, im eigenen Prozess. Dieselbe Engine, die die Saklam-App und die Saklam-Bridge (Docker) fahren, mit demselben Platzhalter-Format und demselben Lizenzschlüssel.
Installation
pip install saklam
Das mitgelieferte NER-Modell (saklam-model-de-small) kommt mit — danach läuft
alles ohne weiteren Download. Python 3.10–3.12.
Kein torch, kein CUDA. Das Modell rechnet direkt in ONNX Runtime; die
Installation ist rund 300 MB (frische Umgebung, inklusive Modell: macOS
295 MB, linux/amd64 321 MB, linux/arm64 310 MB). Pflicht-Abhängigkeiten:
onnxruntime, tokenizers, numpy, pydantic, pyyaml, cryptography.
Geprüft auf macOS arm64, Linux amd64/arm64 und Windows amd64 (Linux in
Docker python:3.11-slim, Windows und die x86-Kernel in der GitHub-Matrix).
Still gekürzt wird nie: steht kein Modell zur Verfügung, arbeitet saklam
ausdrücklich im Regex-Modus (engine_id == "regex", Grund in
license_status().note). Und wenn ein Modell zwar lädt, auf dieser Maschine
aber nichts findet, bricht saklam beim Laden mit SelfTestError ab, statt
kommentarlos ohne Namen weiterzumachen — ein fester Kanon-Satz geht dafür einmal
durch das Modell (Notausgang: SAKLAM_SKIP_SELFTEST=1).
0.1.0-Nutzer bitte aktualisieren. Das dort gebündelte Modell war U8S8 quantisiert und fand auf x86-CPUs ohne VNNI (AMD EPYC/Zen 3-4, ältere Intel) gar keine Namen, Organisationen und Orte — ohne Warnung. 0.1.1 liefert die U8U8-Fassung, die auf diesen CPUs nachweislich rechnet; auf CPUs mit VNNI kostet sie rund doppelte Rechenzeit. Details in
CHANGELOG.md.
In drei Zeilen
from saklam import Saklam
pii = Saklam(license_key="sk-lic-…") # oder SAKLAM_LICENSE_KEY
r = pii.mask("Philip Müller aus Zürich, philip@example.org")
r.masked # '[PER_1864ad4c] aus [LOC_2350dca1], [EMA_c85d5952]'
pii.unmask(r.masked, r.mapping) # Original zurück
Dazu: pii.detect(text) für die Spans, pii.license_status() für den Zustand
und die Kommandozeile saklam mask | detect | license | models.
Zero-Knowledge
Text und Erkennungsergebnisse verlassen den Host nie. Über das Netz geht ausschliesslich der Lizenzschlüssel gegen den Token-Endpunkt; die Prüfung des kurzlebigen, Ed25519-signierten Tokens läuft danach bei jedem Aufruf offline gegen den im Paket eingebetteten Public Key. Kein Phone-Home pro Aufruf, keine Telemetrie, keine Logs mit Rohtext.
Lizenz
Proprietär. Nutzung nur mit gültigem Saklam-Lizenzschlüssel:
99 EUR/Monat, ein Key für alle Formfaktoren — pip-Paket, Docker-Bridge und
App. Ohne gültiges Token lehnen detect() und mask() ab.
Der Lizenz-Token liegt im Cache unter ~/.cache/saklam/license/ — auf macOS
und Linux mit 0600 in einem 0700-Verzeichnis. Unter Windows gibt es diese
Bits nicht; dort liegt die Datei wie jede andere Profildatei und erbt die Rechte
des Benutzerprofils (Empfehlung: BitLocker und die üblichen Profilrechte).
Schlüssel und Details: https://saklam.com · Doku:
https://saklam.com/en/docs · Handbuch (Modell-Leiter, Regex-Modus,
Grenzen, Air-Gap): docs/HANDBUCH.md im sdist · Änderungen: CHANGELOG.md.
English: Local PII detection and masking for German-language text, same engine as the Saklam app and the Saklam Bridge. Text never leaves the host — only the license key is exchanged for a short-lived token, verified offline on every call. Commercial license, 99 EUR/month, one key for every form factor. Docs: https://saklam.com/en/docs.
Release files for saklam 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| saklam-0.1.1.tar.gz | 462.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| saklam-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 939.9 kB
Release files / saklam-0.1.1.tar.gz
| Download URL | saklam-0.1.1.tar.gz |
|---|---|
| Size | 462.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
89337dab8f589ddbd2eac88ba6bf67c92cfde5ab113d00ad1001844287061d24
|
|
BLAKE2b-256 checksum How to use checksums |
50a397dca1ae0cf2c9094b407cdf956ce80d110f50e017953060c87a8fda5450
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency logRelease files / saklam-0.1.1-py3-none-any.whl
| Download URL | saklam-0.1.1-py3-none-any.whl |
|---|---|
| Size | 477.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f5b7371c28d9042e47ae7384ae2939e3f43de8d93f13729ae2313c66c4957779
|
|
BLAKE2b-256 checksum How to use checksums |
8edbb712ed51a472f7510740dcedb523222a4e8ca6ae2c78fc723b7592ad87c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.
Transparency log