Saklam Bridge + n8n — PII-Maskierung für eure Workflows
Jede n8n-Automation, die Kundendaten an Claude, GPT oder Mistral schickt, gibt Klartext aus dem Haus. Mit der Bridge davor gehen nur Platzhalter raus — und die Antwort kommt mit den echten Daten zurück. Beides on-premises, ein Base-URL-Feld, kein Code.
Getestet und verifiziert mit self-hosted n8n (Docker) und saklam/bridge:latest — der komplette Ablauf unten stammt aus einem echten Durchlauf.
Architektur
n8n (self-hosted, eure Infra)
Chat Trigger · AI Agent · beliebige Workflows
│
│ OpenAI-Credential, Base URL = http://saklam-bridge:4000/v1
▼
┌─ Saklam Bridge (Docker, gleiche Infra) ──────────────────┐
│ 1. PII-Maskierung (300+ Patterns, DE-optimiert, NER) │
│ 2. Forward an den Provider mit eurem API-Key (BYOK) │
│ 3. Antwort wird lokal demaskiert │
└───────────────────────────────────────────────────────────┘
│ nur maskierte Tokens
▼
Anthropic / OpenAI / Mistral
Beides läuft in eurem Netz. Kein öffentlicher Endpoint nötig, kein Klartext verlässt die Infrastruktur, Saklam sieht nichts.
Voraussetzungen
- Laufende Saklam Bridge — Setup-Guide (5-Minuten-Install per docker compose)
- Self-hosted n8n (Docker). n8n Cloud funktioniert technisch auch, dann braucht die Bridge aber einen öffentlich erreichbaren HTTPS-Endpoint — der on-prem-Vorteil geht verloren. Empfehlung: self-hosted.
- Pay-as-you-go API-Key eures LLM-Providers (BYOK)
Setup in 3 Schritten
1. Gemeinsames Docker-Netz
Bridge und n8n müssen sich erreichen. Entweder beide Services in eine docker-compose.yml, oder nachträglich verbinden:
docker network create saklam
docker network connect saklam saklam-bridge
docker network connect saklam n8n
2. Credential in n8n anlegen
Credentials → New → OpenAI (ja, auch für Claude — siehe Hinweis unten):
| Feld | Wert |
|---|---|
| API Key | euer BRIDGE_MASTER_KEY (bzw. beliebiger Wert im Localhost-Modus) |
| Base URL | http://saklam-bridge:4000/v1 |
Wichtig: für Claude den OpenAI-Node verwenden. n8ns Anthropic-Credential hat kein Base-URL-Feld und lässt sich nicht auf die Bridge umleiten. Der OpenAI-Node kann es — und die Bridge übersetzt das OpenAI-Format intern für jeden konfigurierten Provider. Modellname im Node z. B.
claude-haiku-4-5,gpt-4oodermistral/mistral-large-latest.
3. Workflow bauen
Der Standard-Aufbau für einen Chat mit Maskierung:
Chat Trigger → AI Agent
└─ Chat Model: OpenAI Chat Model
(Credential aus Schritt 2, Modell frei wählbar)
Das war's. Jeder Workflow, dessen Model-Node auf die Bridge zeigt, ist ab sofort maskiert — auch Nicht-Chat-Workflows (E-Mail-Automationen, Extraktion, Klassifikation).
Verifizieren, was wirklich rausgeht
Debug-Log der Bridge einschalten (PRIVACYLIGHT_DEBUG=true) und einen Test-Prompt mit Beispieldaten schicken. Aus unserem Testlauf, wortwörtlich:
ORIGINAL (User Input):
Formuliere 2 Saetze Bestaetigung an Herrn Max Mustermann
(max.mustermann@beispiel-kanzlei.de), dass seine IBAN
DE89370400440532013000 hinterlegt wurde.
MASKED (Sent to LLM):
Formuliere 2 Saetze Bestaetigung an Herrn [PER_0f3b14eb]
([EMA_09ac6528]), dass seine IBAN [IBA_5e78bec2] hinterlegt wurde.
Die Chat-Antwort in n8n enthält wieder die echten Werte — die Rückübersetzung passiert lokal in der Bridge, bevor die Antwort euren Workflow erreicht.
Chat-Oberfläche ohne eigenes Frontend
Der Chat Trigger-Node bringt beides mit:
- Hosted Chat: n8n serviert eine fertige Chat-Seite unter der Chat-URL des Nodes.
- Embedded Chat: das
@n8n/chat-Widget lässt sich in jede interne Seite einbetten (Streaming, CORS-Kontrolle, CSS-anpassbar).
Damit ist „DSGVO-bewusster Firmen-Chat mit Frontier-Modell" ein n8n-Workflow plus ein Base-URL-Feld.
n8n Chat Hub
Auch n8ns eingebaute Chat-Oberfläche (Chat Hub, Navigations-Punkt „Chat") funktioniert über die Bridge — gleiche OpenAI-Credential, kein Workflow nötig: Modell im Picker wählen, chatten, Maskierung läuft. Getestet und verifiziert (Bridge ≥ v0.2.1).
Zwei Hinweise: Der Chat Hub spricht die OpenAI-Responses-API — Bridge-Versionen vor v0.2.1 unterstützen die nicht (docker compose pull genügt). Und der Model-Picker kann nur konkrete Modellnamen senden; claude-haiku-4-5 und claude-sonnet-4-6 sind ab v0.2.1 vorkonfiguriert.
Und der n8n-Guardrails-Node?
n8n bringt seit v2 einen eigenen Guardrails-Node mit — für Jailbreak-Erkennung, NSFW-Filter, Keyword-Checks und One-way-Sanitization ist der gut. Für PII-Maskierung vor einem LLM hat er drei strukturelle Grenzen (geprüft gegen die Node-Definition v1/v2 und per Testlauf, Stand Juli 2026):
- One-way. Der Node kennt
classifyundsanitize— kein Unmask, kein Mapping.<EMAIL_ADDRESS>bleibt<EMAIL_ADDRESS>, auch in der Antwort. Für Chat, Mail-Entwürfe oder Extraktion, wo der Nutzer die echten Werte zurückbraucht, reicht das nicht. - Internationales Pattern-Set ohne PERSON-Entity. Im selben deutschen Testtext hat der Guardrails-Node E-Mail und IBAN gefangen — Name, Geburtsdatum, Adresse, deutsche Handynummer, Aktenzeichen und ICD-10-Code gingen im Klartext durch, die deutsche Steuer-ID wurde als australische Firmennummer (
AU_ABN) einsortiert. Die Bridge hat alle neun Entitäten maskiert, reversibel. - Der LLM-basierte PII-Check schickt Klartext an das angeschlossene Modell. Namenserkennung geht im Guardrails-Node nur über den LLM-Check — der den ungefilterten Text per Design an ein Chat-Model gibt. Hängt da ein Cloud-Modell dran, sind die Daten schon draußen, bevor die Schutzschicht greift.
Kurz: Guardrails-Node für Policy-Checks, Bridge für Maskierung. Beides zusammen ist ein sauberes Setup — der Guardrails-Node prüft Jailbreaks, die Bridge sitzt einmal am Gateway und maskiert für alle Workflows, statt pro Workflow ein Node.
Pricing & Lizenz
Gleiche Lizenz wie im Setup-Guide: €99 / Monat oder €990 / Jahr (zzgl. MwSt), 1 Bridge-Instanz, unbegrenztes Volumen, alle Workflows und Nutzer eures n8n dahinter inklusive. 7 Tage kostenlos testen.
Ihr baut n8n-Workflows für Kunden? Agenturen und Integratoren, die die Bridge in Kundenprojekte einbetten wollen: schreib mir (stefan@saklam.com) — Multi-Instanz-Konditionen regeln wir individuell.