Ga naar inhoud

Evidence packs

Een evidence pack is een draagbare, offline-verifieerbare snapshot van wat je AI-systeem deed in een bepaalde periode. Bedoeld voor auditors, DPO’s, juristen en toezichthouders.

  • Maandelijks als routine — voor je DPA-archief.
  • Bij een incident — periode rond een verdachte gebeurtenis.
  • Voor een regulator request — exact het venster dat ze vragen.
  • Voor due diligence — een potentiële klant of investeerder vraagt om bewijs.

Via dashboard: AI → Evidence packs → Nieuwe pack.

Via API:

Terminal window
curl -X POST https://api.monsys.ai/api/v1/ai/evidence-packs \
-b cookies.txt \
-H "Content-Type: application/json" \
-d '{
"period_start": "2026-04-01T00:00:00Z",
"period_end": "2026-04-30T23:59:59Z",
"app_id": 42, // optioneel, anders alle apps van de tenant
"include_blobs": true // raw redacted content meebundelen
}'

Respons:

{
"pack_id": "7",
"trace_count": 14233,
"span_count": 37501,
"blob_count": 12044,
"total_cost_micro_eur": 89412300,
"manifest_sha256": "3abb09…",
"signing_public_hex": "d2f60e21…",
"download_url": "/api/v1/ai/evidence-packs/7/download",
"verify_with": "Use tools/evidence-pack-verify.py — manifest is Ed25519-signed by the hub."
}
pack-7.tar.gz
├── manifest.json
├── manifest.sig ← Ed25519 signature over manifest.json bytes (base64)
├── traces.jsonl ← één regel per trace
├── spans.jsonl ← één regel per span
└── blobs/
├── 1bd2ea92….txt ← geredacteerde content per hash
├── 8a48cdca….txt
└── ...
Key Type Beschrijving
schema_version int Versie van het pack-formaat (start = 1)
pack_id string Numeriek ID
tenant_id uuid Wie de eigenaar is
app_id int/null Eén app of alle apps van de tenant
period_start/_end RFC3339 Het venster
trace_count int Aantal traces in het pack
span_count int Aantal spans
blob_count int Aantal unieke content-blobs
traces_sha256 hex SHA256 van traces.jsonl bytes
spans_sha256 hex SHA256 van spans.jsonl bytes
blob_index[] array {hash, sha256} per blob — recompute & check
signing_public_hex hex Ed25519 public key — kruisverifieer met monsys
created_at RFC3339 Tijdstip van pack-generatie
Terminal window
pip install cryptography
python3 evidence-pack-verify.py pack-7.tar.gz \
--expected-pubkey <de pinned fingerprint van monsys.ai/security/keys>
# Stille modus, alleen exit-code:
python3 evidence-pack-verify.py --quiet pack-7.tar.gz --expected-pubkey …

Voorbeeld output:

pack_id : 7
tenant_id : 77198636-a5fe-484e-93fe-98b11a55ca84
period : 2026-04-01T00:00:00Z → 2026-04-30T23:59:59Z
traces : 14233
spans : 37501
blobs : 12044
signing key : d2f60e21e0d496252b92bb308310e1a1dd1d5010f8fcaabbe169bdae1e2b7173
✓ signature valid
✓ traces.jsonl hash matches (3abb0918cda7…)
✓ spans.jsonl hash matches (b517235df141…)
✓ all 12044 content blobs hash-matched
RESULT: OK

Exit code:

  • 0 — alles klopt
  • 1 — minstens één hash of de signature klopt niet — pack is gewijzigd

In het manifest staat een signing_public_hex. Maar wie zegt dat dat de juiste key is?

Twee mogelijkheden:

  1. Kruisverifieer met monsys.ai/security/keys (de publieke pagina waar we onze Ed25519 fingerprints publiceren).
  2. Vraag een gedrukt certificaat bij onboarding — wij sturen je een PDF met de fingerprint die je in je archief bewaart.

Zo kan de auditor onafhankelijk vaststellen dat de signature niet is gemaakt door iemand met een ge-spoofde key.

  • Tamper-evident: één byte wijziging in een blob, en de verifier slaat alarm.
  • Periode-bond: het manifest legt vast voor welk venster het pack geldt — je kan niet achteraf “extra” data toevoegen zonder re-signing.
  • Reproduceerbaar: dezelfde periode + dezelfde data → exact dezelfde manifest_sha256 (deterministische serialisatie).
  • Geen monsys-account nodig om te verifiëren.

We bewaren evidence packs op disk voor minimaal 12 maanden. Voor langere retention exporteer je het pack zelf naar je eigen object store; monsys.ai garandeert geen archief op lange termijn (NIS2 verplicht je sowieso om de evidence zelf te bewaren).