Ga naar inhoud

De drie harde invariants

monsys.ai’s AI observability is bewust smaller dan de meeste tools in deze categorie. Drie invariants vatten samen wat we niet doen, ongeacht klant-vraag.

1. Passief, nooit autonoom

monsys.ai voert nooit prompts uit. Het neemt geen acties. Het blokkeert niets inline. Het is een observability-laag — bewijsmateriaal achteraf, geen control plane.

Geen AI die andere AI bestuurt. Punt.

In de praktijk:

  • Geen “auto-fix” knoppen die een prompt herschrijven.
  • Geen “AI judge” die je traces classificeert (LLM-as-judge zit in Langfuse, niet hier).
  • Geen request-blocking proxy. Onze SDK draait buiten je request-path en faalt silent als de hub onbereikbaar is.

Waarom: AI-systemen die andere AI-systemen besturen creëren verantwoordings-vacuüm. Wie was de operator? Wie bevestigde de actie? De AI Act (art. 14) eist menselijk toezicht. Een passieve laag laat mensen oordelen.

2. PII geredacteerd aan de bron

EU-PII wordt vóór opslag herkend met checksum-validatie en vervangen door een kind-gelabeld hash-token. Wat wordt gedetecteerd:

  • IBAN — 36 SEPA-landen (ISO 13616 mod-97). Het kind-suffix is de ISO-landcode in kleine letters: [IBAN_BE], [IBAN_NL], [IBAN_FR], [IBAN_DE], [IBAN_ES], [IBAN_IT], [IBAN_PT], [IBAN_LU], [IBAN_AT], … 0 false positives op random strings.
  • Rijksregister (BE) — mod-97 op de 9-cijferige basis + 2 controle. Werkt voor zowel pre-2000 als post-2000 geboorten.
  • BTW-BE / KBO — mod-97 op de 8 + 2 nummers.
  • BSN (NL) — gewogen-som mod-11. We weigeren BSNs die met 0 beginnen (gereserveerd in de praktijk).
  • NIR (FR) — mod-97 over de 13 basisdigits, eerste digit ∈ {1,2,3,4} (sexe + foreign-born varianten).
  • Telefoon (E.164)+CC met 8–15 digits totaal. Universeel voor alle landen.
  • E-mail — RFC-conform regex.

Format van het token in pattern-redact mode: [KIND] of voor IBAN specifiek [IBAN_<land>]. In hash-only mode wordt een 12-char SHA256 prefix toegevoegd: [IBAN_BE:43d1151bbe0b].

Raw PII bereikt nooit het hub-bestand of de DB.

In de praktijk:

  • De redactie loopt in hub/api/ai/redaction.go, vóór de content-blob wordt gehasht en opgeslagen.
  • Mod-97 checksum-validatie betekent dat we 0 false positives hebben op niet-valide nummers — een random 11-cijferige string lijkt niet op een Rijksregisternummer.
  • Het hash-token blijft consistent voor dezelfde PII binnen dezelfde trace, zodat je in span-content nog kan zien dat “dezelfde IBAN” werd herhaald, zonder hem te kennen.

Het tenant-attribuut redaction_level controleert het gedrag:

LevelWat er bewaard wordt
offVolledige inhoud (alleen sandbox)
hash-onlyAlleen SHA256 van de redacted content
pattern-redactInhoud met PII vervangen door tokens (default)
full-content-stripLege strings voor prompt/completion

3. Evidence packs met Ed25519

Elke maand (of elke aangevraagde periode) genereert monsys.ai een Ed25519-getekend tarball. Het manifest bevat:

  • pack_id, tenant_id, app_id, period_start, period_end
  • trace_count, span_count, blob_count
  • traces_sha256, spans_sha256, blob_index[] (hash per blob)
  • signing_public_hex (de Ed25519 public key)
  • Signature in manifest.sig over de bytes van manifest.json

Je auditor kan offline verifiëren, zonder monsys-account.

Het script tools/evidence-pack-verify.py (zonder monsys-dependencies, alleen cryptography) gebruikt de public key uit het manifest zelf. De auditor kruisverifieert die key tegen wat monsys publiek vermeldt (bv. een security-pagina, of een gedrukt certificaat dat we leveren).

Tamper-detectie

Als ook maar één byte van een blob, traces.jsonl of spans.jsonl gewijzigd is, faalt de hash-vergelijking en exit code = 1. De script zegt expliciet welk artifact niet klopt.

Wat dit niet is

Niet een prompt engineering tool. Geen playground, geen versioned prompts, geen A/B-experimenten. Voor dat gebruik Langfuse of een vergelijkbaar product — en stuur de output naar monsys voor het audit-deel.

Niet een eval framework. Geen LLM-as-judge, geen ingebouwde datasets. Je kan eval-output wel injecteren als attributes op een span.

Niet een blocking guardrail layer. Voor real-time policy enforcement zijn er gespecialiseerde tools — wij draaien in async/parallel naast je inference path.

Verder lezen