Security Transparency
Our signing key is public. Our signatures are verifiable. Our reports can't be forged. Everything below is open for inspection — no trust required.
Cryptographic Proof — Open for Inspection
Probatum signs every audit entry and compliance credential with an Ed25519 key. The public key is published openly so anyone can verify signatures without contacting us.
Public Key (JWK)
Ed25519 public key in JSON Web Key format
DID Document
did:web identity — resolves at this domain
Credential Verifier
Paste any VC JWT to verify signature + revocation
Verify your audit log offline →
Your auditor can re-compute the hash chain on any audit export with 180 lines of Python and no Probatum installation. The same verifier we use is in our public repo.
Read the verification guide# Verify any Probatum-issued Verifiable Credential, offline # Install from GitHub Releases (see /resources/verifier) cargo install --git https://github.com/balbboa/probatum probatum-verify probatum-verify ./report.vc.json # → signature: OK (Ed25519, did:key:z6Mk...) # → chain: OK (12 entries, prev_hash matches) # → status: OK (StatusList2021 index 4f8a not revoked)
Live verifier · runs in your browser
- Click Verify to run the 7-step check.
This demo runs entirely in your browser using @noble/ed25519. For the bundled sample VC, step 4 is a real Ed25519 cryptographic signature check. For any other pasted credential, step 4 is a structural check only — the verdict reads “structurally valid” instead of “valid.” The production CLI (probatum-verify) performs full cryptographic verification against the issuer’s DID document for every credential.
Audit Chain Schema
Each audit log entry contains a SHA-256 hash chained to the previous entry using the formula:
entry_hash = SHA256( previous_hash + trace_id + user + timestamp + question_hash + event_type )
Tampering with any field in any entry invalidates every hash that follows. The chain is verified client-side in your browser — no server round-trip. Maps to SOC 2 CC7.2 (monitoring) and ISO 27001 A.12.4 (logging).
What Stays Local
✓ On Your Machine
- • Source documents
- • Document embeddings
- • PostgreSQL with vector search
- • Local LLM inference
↗ Cloud Control Plane
- • Query text
- • Generated answers
- • Ed25519-signed audit entries
- • License management
Encryption & Access Control
- In Transit: TLS 1.3 for all API communications.
- At Rest: Cloud data is stored on an AES-256-encrypted volume.
- Credentials: Ed25519-signed W3C VCs — independently verifiable, unforgeable.
- RBAC: Admin, Analyst, Viewer roles — granular per-framework access gating.
Responsible AI by Design
Citation-Per-Claim Grounding
Every claim in every answer cites its source chunk. Claims not found in evidence are flagged. Confidence is penalized per hallucinated citation — so you never cite a fabrication in an audit.
Cross-Encoder Reranking
Retrieved evidence is reranked by a cross-encoder reranking model before synthesis. Higher relevance, fewer spurious citations.
25-Step Agentic Pipeline
Queries run through a chain-verified, deterministic agentic loop. Every step is observable, every answer is reproducible.
Circuit-Breaker Reliability
Embedding calls are guarded by an async circuit breaker (3-failure threshold, 30s reset). A slow inference run returns a partial answer — never a hanging request.
Sub-Processors
Third-party services that process data on our behalf. Customer documents never reach any of these — they stay on the device that ran the query. Hosted-service metadata (account email, license key, billing info) flows to the providers below.
| Provider | Purpose | Data shared | Location | DPA |
|---|---|---|---|---|
| Stripe | Payment processing | Billing email, card token (we never see card numbers) | US (DPF-certified) | link |
| Mailgun | Transactional email | Email address, message body for password reset / verification | US/EU | link |
| Hetzner | Hosting (control-plane + rag-engine SaaS tier) | All hosted data | EU (Germany) | link |
| BetterStack | Uptime monitoring + status page | Health-check ping metadata only — no app data | EU | link |
| Sentry | Error tracking (hosted services only — desktop never reports) | Stack traces with PII scrubbed by our before_send hook | US/EU | link |
| Termly | Policy hosting + revisions | No customer data — static page content only | US | link |
Changes to this list are announced 30 days in advance in our CHANGELOG.
Our Compliance Posture
We deliberately don't lead with a SOC 2 status badge. Probatum is the tool your auditor uses to verify your compliance — our differentiator is the verifier CLI and the hash-chained audit log, not a self-attestation page.
We will pursue our own SOC 2 Type II when first asked by an Enterprise customer's procurement team. Until then, the strongest evidence we know how compliance works is that you can take any report we produce and verify it yourself in 180 lines of Python.
Vulnerability Disclosure
Found a security issue? Email security@probatumapp.com. Machine-readable policy: /.well-known/security.txt.
- • Acknowledgement: within 48 hours.
- • Remediation target: 90 days from acknowledgement, sooner for critical issues.
- • Safe harbor: good-faith research that respects user data and stays out of production systems will not be pursued legally.
- • Bug bounty: none currently — pre-launch. Will be reconsidered post-GA.
Last updated: May 2026