Volg één verzoek door de sluis.
Wissel één base_url en je OpenAI-SDK's en streaming varen door drie deuren.
De deur sluit achter je.
Voordat er een byte vertrekt, passeert de prompt 60+ detectoren en alles wat gevonden wordt, wordt omkeerbaar gepseudonimiseerd.
Namen zijn de persoonsgegevens die het lastigst met een patroon te vangen zijn, dus naamdetectie bestaat uit vijf lagen die je zelf aanzet: contextheuristieken, e-mailcorrelatie, een naamdirectory per tenant, een meegeleverd namenwoordenboek uit open overheidsdata en Sluis' eigen meertalige herkenningsmodel, dat binnen je deployment draait en nooit een naam naar een derde partij stuurt. Het model komt in twee kiesbare niveaus: een snel niveau dat in enkele milliseconden antwoordt, en een diep niveau (GLiNER2-PII) dat aanzienlijk meer vangt voor een paar honderd milliseconden per gescand segment. Gemeten cijfers per niveau staan in de docs.
Optionele detectie van prompt injection en jailbreaks draait bij dezelfde sluis (Llama Prompt Guard 2, Built with Llama), gelijktijdig met de entiteitsscan, in log- of block-modus; treffers belanden in het auditlogboek, en de scan faalt open zodat hij het verkeer nooit platlegt.
Werk met persoonsgegevens en secrets. Het model ziet ze nooit.
De scan vervangt elke PII-waarde en elk secret door een stabiel token en stuurt alleen tokens naar het model. “Anna de Vries” wordt «PERSON_1», consistent over het hele gesprek, zodat het model kan blijven redeneren. Het antwoord komt binnen met tokens en verlaat de sluis met namen: het herstel gebeurt in de stream, token voor token, zodat je gebruiker er niets van merkt. De mappingtabel blijft binnen. Altijd.
Het waterpeil komt gelijk.
Je bepaalt per key welke modellen, regio's en eigenaren mogen; valt er één weg, dan neemt de volgende het over.
EU-soeverein als standaard
De standaardinstelling is de strengste: alleen providers in EU-handen, zoals Mistral en Scaleway, plus clouds in een EU-regio. Directe Amerikaanse en Chinese providers zijn er ook, standaard uit: sta ze toe in je beleid en Sluis dwingt precies die lijn af.
Eigendom, niet alleen regio
Elk model draagt een label: waar het draait en wie het kan bereiken. Een Amerikaans moederbedrijf onder de CLOUD Act staat er zo op (owner_is_eu = false), dus een directe Amerikaanse of Chinese route is altijd een keuze die je ziet, nooit een die voor je is gemaakt.
Harde blokkades, geen best-effort
Voldoet geen enkele provider aan het beleid, dan wordt het verzoek bij de deur geweigerd en met een duidelijke redencode teruggestuurd naar je app. Een blokkade, geen gok.
Eén endpoint. Altijd het beste model.
Beleid vóór benchmark: dezelfde alias sluis/auto lost per tenant anders op als beleid dat vraagt. Een EU-only organisatie routeert nooit naar een niet-conforme provider, ook niet als benchmarks die als snelste aanwijzen.
Roep één stabiele naam aan
Gebruik sluis/auto voor routing per verzoek of use-case namen zoals sluis/code, sluis/cheap en sluis/vision. Model-id’s verdwijnen uit je app.
Verversd uit live benchmarks
Beheerde routes worden dagelijks ververst uit Artificial Analysis benchmarks en daarna door Sluis gecureerd voordat ze actief worden.
Je beleid wint
Je tenantaliassen kunnen een gereserveerde naam hergebruiken en de beheerde route overschaduwen. Keys kunnen sluis/auto of sluis/code allow-listen zoals een model-id.
Ranglijsten: Artificial Analysis · targets dagelijks opnieuw beoordeeld, altijd opgelost binnen je residency-beleid.
# One stable name. Tenant policy still decides the target. $ curl https://api.sluis.ai/v1/chat/completions \ -H "Authorization: Bearer $SLUIS_KEY" \ -d '{ "model": "sluis/auto", "messages": [...] }' # → x-sluis-route: sluis/auto # → x-sluis-model: mistral/mistral-large-latest # → x-sluis-region: EU · policy-aware
De doorvaart gaat het grootboek in.
Elk verzoek landt in een hash-geketend grootboek dat je als JSON Lines exporteert en offline opnieuw verifieert.
Het recht op gegevenswissing (art. 17 AVG en vergelijkbare regels) wist verzoekinhoud, cache en provider-credentials, en behoudt de metadataketen, zodat verify-chain blijft slagen nadat de data weg is.
Je agents gaan door dezelfde drie deuren.
MCP-tool-calls zijn verzoeken als alle andere, dus ze gaan door dezelfde drie deuren. Een agent die je CRM leest of een ticket aanmaakt, doet dat achter de sluis: geïnspecteerd, gerouteerd, verzegeld.
De enige MCP-gateway waar elke tool-aanroep Inspecteren → Routeren → Verzegelen doorloopt, zodat “het bleef binnen je beleid” je tools dekt, niet alleen je prompts.
- inspect
Inspecteer de tool-call
Dezelfde DLP-pass scant tool-argumenten en -resultaten eerst op PII en secrets.
arguments · scannedpass - route
Routeer de tool-egress
Een tool-egress buiten je residency-beleid wordt bij de deur geblokkeerd.
egress · eu-sovereignin-region - seal
Verzegel hem in hetzelfde grootboek
De tool-call en een hash van zijn argumenten ketenen in hetzelfde manipulatiebestendige grootboek.
ledger · #4f9c2averified
tool.callinspect.passroute.eu-sovereignseal.#4f9c2aGebouwd om het verzoek niet in de weg te zitten.
Compliance mag je geen latency kosten. Het hot path is zo ontworpen dat de controles draaien zonder ooit te blokkeren op een database, een lock of een buffer.
Stateless by design
Geen state per verzoek: je schaalt met replica's en het hot path raakt Postgres nooit.
Verzegeld buiten het hot path
Audit-writes zijn asynchroon en gebundeld, dus het antwoord wacht nooit op het grootboek.
Gestreamd, nooit gebufferd
SSE gaat rechtstreeks door een tee; de body wordt nooit volledig in het geheugen gehouden.
Uitgaven die niet kunnen afdrijven
Uitgaven worden in echt geld afgeschreven en gereconcilieerd uit het duurzame grootboek; fail-closed.
Gemeten, niet beloofd
Met alle deuren aan is de gemeten overhead +1 ms in de mediaan, niets tegen een live model.
Documentanonimisering
Geef de gateway een docx, een pdf, een afbeelding of platte tekst en krijg hetzelfde document terug met elke naam, elk nummer en elk secret vervangen door «MERGE_TAG»s in tekst en vervaagd in pixels. Rendering en OCR draaien in het gateway-proces; niets bereikt een modelaanbieder, de operatie wordt verzegeld in de auditketen en de tokentabel is alleen van jou.
Betaal één keer voor hetzelfde antwoord.
Zet per tenant een exact-match- en semantische cache aan, tenant-geïsoleerd en AEAD-versleuteld, zonder de residency te verzwakken.
Gebouwd voor de stack die je al hebt.
OpenAI-compatibel tot op de byte. Houd je SDK, je prompts, je tooling. Richt één base_url op Sluis en voeg een residency-header toe wanneer je een klasse verkeer wilt vastpinnen.
OpenAI-compatibele API
/v1/chat/completions, /v1/embeddings, /v1/models: dezelfde requestvormen, dezelfde streaming, niets te herschrijven.
Werkt met je bestaande SDK's
Officiële OpenAI-clients, LangChain of kale curl: geen nieuwe library, geen propriëtair protocol.
Eén base_url, één key
Munt een virtuele key per app, elk met eigen modellenlijst, limits en budget.
Observability ingebouwd
Prometheus-metrics en OTLP-traces, gelabeld jurisdiction, owner en decision, rechtstreeks je Grafana in.
# Same API. One endpoint. You set the residency policy. # eu-sovereign is the safe default; allow more deliberately. $ curl https://api.sluis.ai/v1/chat/completions \ -H "Authorization: Bearer $SLUIS_KEY" \ -H "X-Sluis-Residency: eu-sovereign" \ -d '{ "model": "mistral/mistral-large", "messages": [...] }' # → mistral-large @ mistral-fr · in-region # → sealed · #4f9c2a · streamed
Zie de sluis werken op je eigen verkeer.
De catalogusprijs van je provider plus een vaste 10%. Geen seats, geen minima, geen margespelletjes. Je activeert met kaart of SEPA en betaalt per gebruik, en geen enkel verzoek verlaat ooit je residency-beleid.