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-4o oder mistral/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):

  1. One-way. Der Node kennt classify und sanitize — 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.
  2. 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.
  3. 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.