Volg één verzoek door de sluis.

Wissel één base_url en je OpenAI-SDK's en streaming varen door drie deuren.

clientyour SDKinspectDLP scanrouteresidencysealledgerresponsestreamed
Inspecteren

De deur sluit achter je.

Voordat er een byte vertrekt, passeert de prompt 60+ detectoren en alles wat gevonden wordt, wordt omkeerbaar gepseudonimiseerd.

PII-detectoren
e-mailtelefoon · E.164US SSNIBAN · mod-97NL BSN · 11-proefPL PESELIT codice fiscalecreditcard · Luhn
Secret-detectoren
API-keysAWS-toegangssleutelsprivate PEM-sleutels
Detectie van persoonsnamen

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.

Securityscanning

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.

request.jsonDLP scan
IBANNL91 ABNA ●●●● ●●●● 28masked
NL BSN●●● ●●● ●●●masked
emailj●●●@●●●.nlmasked
API keysk-●●●…●●●blocked
modemaskblockallow-logpseudonymize

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.

your apprequestSluis gatejohn@acme.com«EMAIL_1»«EMAIL_1»masks PIImodel«EMAIL_1»«EMAIL_1»token onlySluis gate«EMAIL_1»john@acme.comjohn@acme.comrestoresresponseyour appyour app · requestSluis masksjohn@acme.com«EMAIL_1»«EMAIL_1»PII stays insidemodel«EMAIL_1»«EMAIL_1»token onlySluis restores«EMAIL_1»john@acme.comjohn@acme.cominside the streamyour app · restored
Routeren

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.

residency.policy · class: PHIenforced
requestFR · primaryFR · fallbackUS · allowedCN · blocked
EU · France
scaleway-fr · owner_is_eu=true
primary
EU · France
mistral-fr · owner_is_eu=true
fallback
US · East
openai-us · owner_is_eu=false
allowed · policy
CN · Hangzhou
deepseek-cn · owner_is_eu=false
blocked · policy

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.

managed aliasesdaily
# 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
sluis/autosluis/codesluis/chatsluis/supportsluis/fastsluis/cheapsluis/agentssluis/extractsluis/docssluis/longcontextsluis/visionsluis/translatesluis/sovereign
Verzegelen

De doorvaart gaat het grootboek in.

Elk verzoek landt in een hash-geketend grootboek dat je als JSON Lines exporteert en offline opnieuw verifieert.

audit.chain · last 4 entrieschain verified
14:22:07.118Z#4f9c2a e1b7d9 · scaleway-fr · PHIin-region
14:22:05.904Z#e1b7d9 7a3f10 · mistral-fr · PHIfallback
14:22:04.661Z#7a3f10 0c55ab · scaleway-fr · PIIin-region
14:22:02.330Z#0c55ab genesis · scaleway-fr · generalin-region
SHA-256-geketendmanipulatiebestendigJSON Lines-exportverify-chain offline

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.

tool.invoke · request 7f4apolicy active
  1. inspect

    Inspecteer de tool-call

    Dezelfde DLP-pass scant tool-argumenten en -resultaten eerst op PII en secrets.

    arguments · scannedpass
  2. route

    Routeer de tool-egress

    Een tool-egress buiten je residency-beleid wordt bij de deur geblokkeerd.

    egress · eu-sovereignin-region
  3. 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.#4f9c2a

Gebouwd 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.

Schaal

Stateless by design

Geen state per verzoek: je schaalt met replica's en het hot path raakt Postgres nooit.

horizontaal schalengeen DB op het hot path
Audit

Verzegeld buiten het hot path

Audit-writes zijn asynchroon en gebundeld, dus het antwoord wacht nooit op het grootboek.

async + gebundeld
Streaming

Gestreamd, nooit gebufferd

SSE gaat rechtstreeks door een tee; de body wordt nooit volledig in het geheugen gehouden.

SSE-tee
Budgetten

Uitgaven die niet kunnen afdrijven

Uitgaven worden in echt geld afgeschreven en gereconcilieerd uit het duurzame grootboek; fail-closed.

micro-eurogrootboekgereconcilieerdfail-closed
Snelheid

Gemeten, niet beloofd

Met alle deuren aan is de gemeten overhead +1 ms in de mediaan, niets tegen een live model.

+1 ms mediane overheaddeur aan vs deur openintern gemetenSee the benchmark →
Anonimiseer

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.

docx · pdf · afbeeldingen · tekstlokale OCR, niets verlaat het systeemonderweg op /v1/filesdoorzoekbare geredigeerde PDF's, ondertekende afleverlinks
cachetenant scope

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.

01exact-match02semantisch · pgvector
AEAD-versleuteld at resttenant-geïsoleerdopt-in

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.

shelldrop-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.