Alles, was zwischen Modell und Produktion fehlt.
Jede Funktion in einem Satz für Entscheider, den Details für Ihr Plattform-Team und einer Aufnahme aus der echten Oberfläche.
PII-Vault
Personendaten verlassen nie das Haus.
Bevor ein Text an ein KI-Modell geht, ersetzt ATF Namen, IBANs, E-Mails, Telefonnummern und Gesundheitsangaben durch bedeutungslose Platzhalter – und setzt die echten Werte erst in der Antwort für Ihre Mitarbeitenden wieder ein.
Für Ihr Plattform-Team
- Reversible Tokenisierung
[[PII:…]]am Engine-Dekorator – gilt für Chat, Jobs, Trigger, Replay und Flow-as-MCP gleichermaßen - Detektor-Pipeline: Regex + Prüfsummen (IBAN, Steuer-ID, SV-Nummer, USt-ID), In-Process-NER, externer Presidio-kompatibler Dienst
- Mapping pro Ausführung AES-256-GCM-verschlüsselt, an Execution-ID und Token gebunden (AAD)
PII_DETECTOR_FAIL_MODE=closed: fällt ein Detektor aus, geht die Anfrage nicht raus- Multimodal-Policy für Bilder (block, redact, describe) – explizit statt stillschweigend
- Pro Flow konfigurierbar; auch MCP-Tools sehen nur Platzhalter
MCP-Gate
Governte Werkzeuge statt Vollzugriff.
Das Gate ist die Pforte zwischen KI und Ihren Systemen: Es stellt nur die Aktionen bereit, die Sie in einer Konfigurationsdatei freigeben – und jede schreibende Aktion kann einen Menschen verlangen.
Für Ihr Plattform-Team
- Tools aus YAML: SQL (PostgreSQL, MySQL u. a.), HTTP, MQTT, Webhook, MCP-Proxy, Composite – ohne Code
- Parameter werden immer gebunden, nie in SQL interpoliert; die verifizierte Identität fließt in die Abfrage
- Policy-Regeln
allow | deny | approvalpro Tool, Zugriffsart, Scope, Gruppe oder Argument - Server-getriebene Freigaben über MCP 2026, verteilt über Redis, mit Trennung von Antragsteller und Freigebendem
- Lese- und Schreibpfad getrennt (
ask/act): eine Leseabsicht erreicht nie ein mutierendes Tool - Live-Monitor, Tool-Playground und Audit-Log; Tool-Inhalte standardmäßig nur als SHA-256-Digest
Menschliche Freigabe
Silence never becomes an action.
Will ein Agent Geld bewegen, Daten löschen oder etwas buchen, hält ATF an und fragt einen Menschen. Antwortet niemand rechtzeitig, wird die Aktion abgelehnt – nie stillschweigend ausgeführt.
Für Ihr Plattform-Team
- Ausführung pausiert mit Tool, Mandant und geplanten Argumenten – Zugangsdaten sind nie Teil der Anfrage
- Zwei Entscheidungsorte: Freigabe-Element in der Chat-Antwort und RBAC-geschütztes Postfach in Control
- Fail-closed:
APPROVAL_TIMEOUT_MSabgelaufen = abgelehnt - Clusterweit sichtbar mit Redis; der Entscheider kommt aus der verifizierten Identität
- Optionale Vier-Augen-Regel (
requireDifferentApprover) mit eigenem Scope - Jede Entscheidung inkl. Timeout im Audit-Log und als Metrik
Durchgängige Identität
Der Nutzer bleibt der Nutzer – bis in die letzte Datenbankzeile.
Wer im Chat fragt, wird mit seiner echten Anmeldung bis ins Zielsystem durchgereicht. Ein Agent kann deshalb nie mehr sehen oder tun als die Person, für die er arbeitet – und jedes System weiß, ob ein Mensch oder ein Agent handelt.
Für Ihr Plattform-Team
- OIDC für Endnutzer und Operatoren, JWT/JWKS mit mehreren Issuern und Issuer-zu-Mandant-Bindung
- Passthrough:
forwardAuthTokenreicht das verifizierte Nutzer-Token an MCP-Server weiter - Token Exchange nach RFC 8693: pro Zielsystem ein eigenes Token mit eigener Audience und reduziertem Scope
- Delegation mit
act-Claim – Zielsysteme wie das Gate unterscheiden direkte Nutzeraktion und Agent im Auftrag - Transaktions-Token pro Tool-Aufruf, asymmetrisch signierbar (ES256/EdDSA) und per Audience auf genau einen Dienst begrenzt
- Search und Gate werten nur die verifizierte Identität aus – nie ein Feld, das der Client mitschickt
# FLOWS_DIR/mcp.yaml – one MCP server, user identity end to end
servers:
- name: erp
url: https://erp-gate.internal/mcp/v2026
transport: http
profile: "2026-07-28"
forwardAuthToken: true # pass the verified user token on …
tokenExchange: # … exchanged per RFC 8693
issuer: https://sso.example/realms/corp
clientId: atf-runtime
clientSecretEnv: MCP_TX_SECRET # name of the env var, never the secret
audience: erp-gate # token valid for this system only
scope: "openid erp:read erp:write"
actor: # delegation: act.sub = Runtime
grant: client_credentials
clientId: atf-runtime-actor
clientSecretEnv: MCP_TX_ACTOR_SECRETSignierte Nachweise
Compliance ist Beweis, keine Behauptung.
Jede Ausführung kann als digital signiertes Beweis-Paket exportiert werden. Ihr Wirtschaftsprüfer prüft es auf seinem eigenen Laptop – ohne Zugang zu Ihrer Plattform und ohne Ihnen vertrauen zu müssen.
Für Ihr Plattform-Team
- Evidence Bundle: Ausführung, Eingaben, Policy-Entscheidungen, Quellen und Antwort, Ed25519-signiert
- Öffentlicher Schlüssel als JWKS unter
/.well-known/atf-evidence-jwks.json– kein geteiltes Geheimnis atf-verifyprüft Bundles, Decision-Receipts (COSE_Sign1 + Merkle-Proof), Löschbelege, Release-Receipts und Audit-Exporte offline- Hash-verkettetes Audit-Log mit signierten Ankern; Manipulation ist nachweisbar
- Debug-Trace mit
flow_version,flow_digestund Subflow-Versionen – was lief, ist eindeutig - Strikte Algorithmus-Verzweigung: nie ein stiller Fallback zwischen Ed25519 und HMAC
Policy as Code
Regeln, die vor der Ausführung greifen.
Welche Daten zu welchem Anbieter dürfen, welche Aktionen eine Freigabe brauchen und wie lange etwas gespeichert wird, steht in einer prüfbaren Datei – und ATF hält sich daran, bevor ein Modell aufgerufen wird.
Für Ihr Plattform-Team
compliance-policy.yaml: Datenklassen, Provider-Regionen, Modell-Allow/Block, Freigaben, Aufbewahrung, Audit- Ungültige Policy beim Start = Chat antwortet 503 statt ohne Regeln zu laufen
- Dry-Run und Policy-Replay gegen gespeicherte Ausführungen in Control
- Löschung über alle Dienste (DSGVO Art. 17) mit signiertem Löschbeleg und ehrlichem
partial-Status - Generiertes Compliance-Dossier: Policy, Ketten-Prüfung, Löschungen, Aufbewahrung, Evals, Red-Team-Score
- Vorlagen für DSFA und Verarbeitungsverzeichnis sowie EU-AI-Act-Mapping im Repository
Flows & Studio
KI-Abläufe, die man reviewen kann.
Was ein Assistent oder Agent tut, ist ein Ablaufplan in einer Textdatei. Fachbereich und IT sehen ihn im Studio als Grafik, testen ihn per Klick und ändern ihn wie Quellcode – mit Versionsnummer.
Für Ihr Plattform-Team
- Zwölf eingebaute Knotentypen: llm, tool, router, classifier, parallel, retrieval, memory, agent-harness, transform u. a.
- Bedingte Kanten über einen sicheren Ausdrucks-Evaluator – kein eingebetteter Code
- Hot Reload aus
FLOWS_DIR, JSON-Schema-Validierung, CI-Pflicht fürmetadata.version-Bumps - Studio: Canvas, Prompt-Editor, Variablen, Drafts, Copilot-Vorschläge als Overlay, Run & Trace pro Knoten
- Flow als MCP-Server, Webhook- und Zeit-Trigger, asynchrone Jobs mit Lease-Recovery
- Release-Gate mit Bench-Datei und Ed25519-signiertem Release-Receipt
Agent-Harness
Mehrschrittige Agenten mit Budget und Prüfer.
Für komplexe Fragen zerlegt ein Planer die Aufgabe in Teilschritte, verteilt sie an spezialisierte Bausteine und plant mit den Ergebnissen neu – bis ein Prüfer das Ergebnis abnimmt oder ein Budget erreicht ist.
Für Ihr Plattform-Team
- Planer/Worker-Schleife: delegiert nur an Knoten aus einer
allowlist, nie an beliebige Tools - Harte Grenzen:
maxIterations,maxCost,maxTimeMs, Delegationstiefe, parallele Tasks - Verifikation durch einen Reviewer-Knoten mit Pass-Signal, optional fail-closed
consequentialTargets: Delegationen an folgenreiche Knoten pausieren für eine menschliche Freigabe- Plannerless-Modus mit deterministischer Coverage-Queue für erschöpfende Recherche über einen Korpus
- Fortschritt als
atf.progress-Event mit Phase, Coverage und ETA – im Stream, Trace und Job-API
- id: research
type: agent-harness
label: Recherche-Agent
config:
allowlist: [search_contracts, search_mail, summarize]
maxIterations: 8
maxCost: 0.50
maxTimeMs: 180000
maxConcurrentTasks: 3
consequentialTargets: [notify_customer] # pauses for approval
verification:
target: reviewer
passSignal: APPROVED
failClosed: trueGuided Decoding & strukturierte Ausgaben
Antworten in der Form, die Ihr System erwartet.
Wo eine Antwort weiterverarbeitet wird – etwa eine Einstufung oder ein Datensatz –, zwingt ATF das Modell in ein festes Format. So entsteht kein „fast richtiges“ JSON, das in Ihrem System zu Fehlern führt.
Für Ihr Plattform-Team
outputSchemaundclassifier: JSON-Schema per nativem Structured Output (response_format: json_schema) – Constrained Sampling auf vLLM, LM Studio und Cloud-Providern- Fallback ohne native Unterstützung: Schema-Hinweis plus toleranter Parser
- Modell-Pools rotieren bei unparsbarer Antwort zum nächsten Modell, sonst greift
config.fallback - Reasoning-Modelle: JSON, das im Thinking-Kanal landet, wird erkannt und sicher übernommen – ohne Gedankengang zu leaken
finalAnswerContract: nur der Text zwischen zwei Markern ist die Antwort; Plan und Notizen werden verworfen- Klassifikation steuert Routing über bedingte Kanten – ohne eingebetteten Code
- id: triage
type: classifier
classifierSchema:
classKey: intent
schema:
type: object
properties:
intent: { type: string, enum: [claim, question, complaint] }
urgency: { type: string, enum: [low, normal, high] }
required: [intent, urgency]
- id: extract_claim
type: llm
config:
outputSchema:
name: claim
schema:
type: object
properties:
policyNo: { type: string, pattern: "^[A-Z]{2}-\\d{6}$" }
amount: { type: number, minimum: 0 }
required: [policyNo, amount]Search
Unternehmens-RAG auf PostgreSQL.
ATF findet in Ihren Dokumenten die Stellen, auf die sich eine Antwort stützen muss – und zeigt nur Dokumente, die die fragende Person auch sehen darf.
Für Ihr Plattform-Team
- Hybrid: pgvector-Dichte + Volltext, fusioniert per Reciprocal Rank Fusion; optional SPLADE-Sparse
- Reranking, HyDE, semantisches und Late Chunking, kontextuelle Präfixe – einzeln schaltbar
retrieve_for_answer: Teilfragen, Fusion, Deduplizierung, Token-Budget, Passagen als untrusted markiert- Zugriff über verifizierte Identität und Gruppen, mandantengetrennt per Row-Level-Security
- Collections mit eigener Sprachkonfiguration, stabile Score-Keyset-Paginierung
- Embedding-Drift-Schutz: Modellwechsel ohne Reindex schlägt laut fehl
Dokumentversionen & Zeitreisen
Was galt am 1. März – und was hat sich seitdem geändert?
Richtlinien, Verträge und Handbücher ändern sich. ATF behält jede Version und beantwortet Fragen auf Wunsch so, wie der Stand zu einem bestimmten Datum war – und zeigt, was sich zwischen zwei Daten geändert hat.
Für Ihr Plattform-Team
X-Valid-Frompro Dokument, Abfrage mitX-Valid-At(Stand zu einem Zeitpunkt) oderX-Include-All-Versions- Versionsreihenfolge numerisch (
1.10 > 1.9), dann nach Datum – eine ältere Version wird nie zur aktuellen document_diff: Abschnitte, die zwischen zwei Zeitpunkten hinzugekommen, entfallen oder geändert sindtrace: verfolgt einen Bezeichner (z. B. eine Klausel-ID) über zwei Zeitpunkte durch alle Dokumente- Atomarer Revisionswechsel; progressive Revisionen sind schon während der Verarbeitung durchsuchbar
- Derselbe
valid_at-Vertrag in Retrieval-Eval und den MCP-Tools – mit denselben Rechten pro Dokument
# Current version
curl -H 'X-Collection: policies' --data 'retention' https://search.internal/search
# As it stood on 1 March 2026
curl -H 'X-Collection: policies' \
-H 'X-Valid-At: 2026-03-01T00:00:00Z' --data 'retention' https://search.internal/search
# What changed in one document between two dates
GET /v2/documents/policies:retention/diff?collection=policies
&from=2026-01-01T00:00:00Z&to=2026-10-01T00:00:00ZExtract
Dokumente, die ein Modell wirklich versteht.
ATF verwandelt PDFs, Office-Dateien, Scans und E-Mails in sauber strukturierten Text mit Seiten, Tabellen und Abbildungen – damit Antworten auf die richtige Seite verweisen.
Für Ihr Plattform-Team
- PDF, DOC/DOCX, XLS/XLSX, PPTX, VSDX, HTML, Bilder, BPMN 2.0, EML/MSG/mbox
- Textebene ist maßgeblich für den Wortlaut, die gerenderte Seite für die Struktur
## Seite N-Marker, Abbildungen mit Geometrie, Tabellen mit verbundenen Zellen- Gehärtet gegen feindliche Dokumente: ZIP-Limits, keine Makros, isolierter Konverter, prlimit
- Seitenfenster, Job-Lanes, abgeleiteter PDF-Cache, Tagesbudget für Vision-Seiten
- Qualitäts-Eval (CER, Heading-F1, TEDS) als Gate
E-Mail-Threads & Deduplizierung
Postfächer, ohne dass jede Antwort den Verlauf doppelt mitschleppt.
ATF liest E-Mails und ganze Postfächer, ordnet Antworten ihren Gesprächen zu und entfernt zitierte Verläufe, die schon vorhanden sind. Antworten stützen sich so auf jede Aussage genau einmal – statt auf zehn Kopien derselben Mail.
Für Ihr Plattform-Team
- EML, MSG (Outlook) und mbox nativ, ohne Modellaufruf; ein mbox wird in einzelne Nachrichten zerlegt
- Signaturen werden entfernt; zitierter Verlauf nur dann, wenn die zitierte Nachricht bereits in der Collection liegt – sonst bleibt er als „Zitierter Verlauf“ erhalten
- Inline-Antworten behalten genau die Zeilen, auf die sie antworten
- Threading über Message-ID, In-Reply-To, References und Outlook-Thread-Index; Anhänge gehören zum Thread
- Duplikate per SHA-256, Texthash und Message-ID, Fast-Duplikate per MinHash – nur innerhalb derselben Rechte
- Treffer pro Thread gruppiert;
get_threadliest einen Verlauf chronologisch mit Quellen pro Nachricht
# A mailbox export: one document per message, threads linked
curl -X POST https://search.internal/ingest-file \
-H 'X-Collection: support-mail' \
-H 'X-Reference: postfach-2026-10.mbox' \
-H 'Content-Type: application/mbox' \
--data-binary @postfach-2026-10.mbox
# One hit per conversation instead of ten copies of the same mail
curl -H 'X-Collection: support-mail' -H 'X-Group-By-Document: true' \
--data 'Lieferverzug Auftrag 4711' https://search.internal/searchOutpost
Dokumente kommen zu ATF – nicht umgekehrt.
Ein kleiner Synchronisations-Agent läuft bei Ihnen – auf dem Fileserver oder als Desktop-App – und schiebt Ordner, S3, Google Drive oder Dropbox in die Plattform. Die Cloud bekommt nie Lesezugriff auf Ihre Quellen.
Für Ihr Plattform-Team
- Eine Sync-Engine (
outpost-core) für Docker-Daemon und Desktop-App - Spiegeln mit Bremse: große Löschmengen pausieren bis zur Bestätigung des exakten Kandidaten-Hashes
- Least Privilege: Read-only-Scopes, nur
extract.ingest - Desktop: Tokens im OS-Schlüsselbund, WebView sieht keine Zugangsdaten
- Jedes Secret auch als
_FILE; der Logger schwärzt registrierte Secrets - Health-Endpunkt für das Monitoring
# /config/outpost.yaml
extractUrl: https://extract.internal
collection: handbook
syncIntervalSec: 900
mirrorDelete: true # deletions propagate …
deleteThresholdPercent: 20 # … large sets wait for confirm-deletes
sources:
- id: werk-handbuecher
type: local
path: /sources/handbuecher
allowedGroups: [instandhaltung]
- id: qm-bucket
type: s3
bucket: qm-dokumente
region: eu-central-1Guardrails & Red Teaming
Auch der Rückkanal wird geprüft.
ATF prüft nicht nur, was Nutzer eingeben, sondern auch, was aus Dokumenten und Werkzeugen zurückkommt – denn dort verstecken Angreifer ihre Anweisungen. Und es greift sich regelmäßig selbst an.
Für Ihr Plattform-Team
- Input- und Output-Guardrails mit Muster- und Modellerkennung
- Tool-Output-Validator scannt MCP-Ergebnisse und RAG-Chunks auf indirekte Prompt-Injection
- Taint über Dienstgrenzen: nach einem Fund braucht jedes nicht-lesende Tool eine Freigabe
- Spotlighting: abgerufene Passagen erreichen das Modell als markierter Untrusted-Block
- Deklarative Tool-Autorisierung, fail-closed; Egress-Policy für Tool-Traffic
- Kontinuierliches Red Teaming mit Angriffsbibliothek und Posture-Score
Observability
Jede Antwort hat einen Lebenslauf.
Für jede KI-Antwort sehen Sie, welcher Ablauf in welcher Version lief, welche Quellen und Modelle beteiligt waren, wie lange es dauerte und was es kostete.
Für Ihr Plattform-Team
- OpenTelemetry-Traces, Prometheus-Metriken, strukturierte Logs mit Schwärzung
- Debug-Trace pro Ausführung mit Knotenzeiten, Modellaufrufen und Policy-Entscheidungen
- Live-Graph über SSE/WebSocket mit Ticket-Autorisierung
- Erklärkarte: Modell, Quellen, Policy, Routing – als Markdown oder signiertes Bundle
- Governance-Posture-Report: welche Kontrollen aktiv sind, als ok/warn/fail
- SLO-Tracking und Alert-Webhooks
Kosten & Ausfallsicherheit
Planbare KI statt Überraschungsrechnung.
ATF weiß, was jede Anfrage kostet, stoppt bei Budgetgrenzen und weicht automatisch auf einen anderen Anbieter aus, wenn einer ausfällt.
Für Ihr Plattform-Team
- Kosten pro Mandant, Tag, Modell, Nutzer und Flow; Prognose und CO₂-Bilanz
- Harte Tagesbudgets und Budgets pro Lauf (
maxTokens,maxToolCalls,maxWallMs) - Zielgetriebenes Routing und Modell-Kaskade: günstig zuerst, eskalieren bei schwacher Evidenz
- Fallback-Ketten mit Circuit Breaker, Modell-Pools, Sticky Pools für Prefix-Caches
- Drei Cache-Ebenen; Idempotenz verhindert doppelte Aktionen
- Priorisierte Warteschlange, Rate-Limits pro Identität und Nutzer
Qualität: Eval, Canary, Shadow
Änderungen messen, bevor Nutzer sie spüren.
Bevor eine neue Version eines Assistenten live geht, wird sie gegen echte Beispiele geprüft, zunächst nur für einen Teil der Anfragen ausgerollt oder unsichtbar parallel getestet.
Für Ihr Plattform-Team
- Eval-Datensätze, Judge-Scoring, Matrix-Runs; strukturierte Assertions (
toolCalled,jsonPath, …) - Canary-Promotion und Rollback nach Kriterien
- Shadow Mode auf echtem Traffic – Nutzer erhalten immer die stabile Antwort
- Replay früherer Ausführungen; Shadow und Replay wiederholen nie Seiteneffekte
- Selbstoptimierende Schleife hinter Canary-Gate, begrenzt durch Drift-Guard
- Groundedness-Prüfung gegen die abgerufenen Quellen
# flows/bench/support-rag.bench.yaml
version: 1
flow: support-rag
thresholds:
passRate: 0.95
maxLatencyMsP50: 4000
cases:
- id: filter-interval
messages:
- { role: user, content: "Wie oft muss der Filter gewechselt werden?" }
assert:
- { type: contains, value: "500" }
- { type: toolCalled, name: "vectorsearch/search", min: 1 }
- { type: noDiagnostic, code: loop_blocked }
$ bun run scripts/cli.ts flows release support-rag \
--signing-key-file release.pemMandanten & Zugriffskontrolle
Wer fragt, bestimmt, was sichtbar ist.
Abteilungen, Tochterfirmen oder Kunden teilen sich eine Plattform, ohne die Daten der anderen zu sehen – durchgesetzt in der Datenbank, nicht nur in der Oberfläche.
Für Ihr Plattform-Team
- Mandantentrennung mit PostgreSQL Row-Level-Security (
TENANT_RLS_REQUIRED) - JWT/JWKS mit mehreren Issuern, Issuer-zu-Mandant-Bindung, OIDC mit Backend-Session
- Trusted-Header nur aus konfigurierten Quellen (
TRUSTED_IDENTITY_HEADERS) - BYOK: Provider-Schlüssel pro Mandant, verschlüsselt
- RBAC aus Token-Claims; Agent-Identity-Broker mit Widerruf
- Ein Betriebsprofil
ATF_PROFILE=productionverweigert unsichere Starts
ATF_PROFILE=production
AUTHN_MODE=token
JWT_JWKS_URL=https://sso.example/realms/corp/protocol/openid-connect/certs
JWT_AUDIENCE=atf-runtime
JWT_ISSUER_TENANTS={"https://sso.partner.example":["partner-a"]}
TENANT_ISOLATION_ENABLED=true
TENANT_RLS_ENABLED=true
TENANT_RLS_REQUIRED=true
BYOK_ENABLED=trueOpenAI-kompatibles API
Bestehende Clients, neue Kontrolle.
Vorhandene Chat-Oberflächen und Anwendungen sprechen mit ATF wie mit einem bekannten KI-Dienst – nur dass jetzt alle Regeln dazwischen gelten.
Für Ihr Plattform-Team
/v1/chat/completions,/v1/responses,/v1/models,/v1/embeddingsmit Streaming- Provider: OpenAI-kompatibel, Anthropic, Google, Azure OpenAI, AWS Bedrock, Ollama, LM Studio, vLLM
- Kennzeichnung KI-generierter Antworten (
AI_DISCLOSURE) - Signierte Webhooks und Rocket.Chat-Kanal mit Transactional Outbox
- Contract-Pakete mit Kompatibilitätsgarantie und OpenAPI-Spezifikationen
- Quickstart per Docker Compose mit Mock-Modell – ohne API-Key
curl https://atf.example/v1/chat/completions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"model": "support-assistant",
"stream": true,
"messages": [{"role": "user", "content": "Status von Ticket #4711?"}]
}'Open WebUI & Chat-Frontends
Die vertraute Chat-Oberfläche – mit allen Regeln dahinter.
Mitarbeitende nutzen eine gewohnte Chat-Oberfläche wie Open WebUI. Jeder freigegebene Ablauf erscheint dort als eigenes „Modell“; Quellen, Freigaben und Fortschritt werden direkt im Chat angezeigt.
Für Ihr Plattform-Team
- Flows erscheinen als Modelle über
/v1/models; Streaming inklusive einklappbarem Reasoning-Block - Quellen als native, klickbare Zitate – nur die, auf die die Antwort tatsächlich mit
[n]verweist - Freigabe-Element direkt im Chat (eingebettet,
APPROVAL_FRAME_ANCESTORSauf die Open-WebUI-Origin begrenzt) - Identität aus Open WebUI: JWT per OAuth-Cookie oder Pipe-Metadaten, separate JWKS für das Inferenz-API
- Knowledge und Functions aus Open WebUI als Client-Tools – pro Knoten abschaltbar (
clientTools) - Bereinigung der Chat-Historie: UI-Artefakte früherer Antworten erreichen das Modell nicht als „Beispiel“
# Open WebUI → Admin → Connections → OpenAI API
URL: https://atf.example/v1 # every released flow is a "model"
# Runtime
APPROVAL_FRAME_ANCESTORS=https://chat.example # approval widget in the chat
APPROVAL_BASE_URL=https://atf.example
MEDIA_BASE_URL=https://atf.example # generated media as links
JWT_JWKS_URL=https://sso.example/.../certs # user token from Open WebUI