Skip to main content

Trust

Security and EU data residency

You connect production agents to Vidimus. Here is where the data lives, how customers are kept apart, and how you can check our evidence yourself.

Last updated
Scope
EU data residency, tenant isolation and evidence integrity
Document status
Public security statement

01

At a glance

Customer data
Stored in Frankfurt in the EU.
Supabase (eu-central-1)
AI processing
Models hosted in the EU write and grade the tests and check the documents.
Mistral AI (EU)
Tenant isolation
Row-level security on every customer table: a member’s requests reach only their own organisation.
Postgres RLS
Audit trail
The database refuses edits from every role, ours included. Each entry is chained to the one before, and the chain is checked every night.
Append-only
Evidence packs
Signed and verifiable offline with the register line and our published key.
Ed25519
Two-factor authentication
Any member can turn it on, and an organisation can require it for every member.
TOTP
Support access
No standing access. You grant it, it expires on its own, and every use is logged.
Granted by you

02

Documents for your vendor review

These are the documents a security or third-party risk review usually asks for. They state the same facts as this page.

  • Data processing addendum

    The Article 28 terms under which we process personal data for you, as a processor.

  • Sub-processor list

    Every third party that processes data for the service, what it does and where the data sits.

Informational. The contract and the DPA govern.

03

Where your data lives

Customer data is stored by Supabase in Frankfurt (eu-central-1). Every server function runs in Vercel’s Frankfurt (fra1) region, and an automated test fails if that setting is removed. Static files and the session check that runs before each page may be served from the Vercel edge location nearest the visitor. Vercel is a US company, so transfers are covered by Standard Contractual Clauses.

Our own AI calls go to Mistral AI (EU), and model-call monitoring runs in Langfuse (EU region). Both are covered by our data processing addendum. Emails sent through Resend (region provided on request) carry identifiers and counts, never prompts, replies or evidence documents.

Where data goes when Vidimus tests your agent

Your agent

Your endpoint

Reached through the interface it already exposes.

Tests sent

Vidimus application

Vercel (fra1)

Every server function runs in Frankfurt. Vercel is a US company. Transfers to it are covered by Standard Contractual Clauses.

  • Customer data

    Supabase (eu-central-1)

    Frankfurt.

  • AI processing

    Mistral (EU)

    Writes and grades the tests and reads your documents.

  • Model-call monitoring

    Langfuse (EU region)
  • Error monitoring

    Sentry (EU region)
  • Email

    Resend

    Region on request. Resend receives identifiers and counts only and never prompts, replies or evidence documents.

Standard Contractual Clauses

Decision (EU) 2021/914

The transfer mechanism in our data processing addendum.

04

Tenant isolation

Every request made for a signed-in member passes through row-level security, so it reaches only that member’s organisation. Composite foreign keys bind child rows to their parent’s organisation, whatever code writes them. Server code that needs wider access, such as test runs, scheduled jobs and some product actions, uses a service account that bypasses row-level security. That code scopes every query to one organisation. Policy tests run on every change and check that a member of another organisation sees nothing.

Row-level security
Every customer table carries an organisation id, enforced in the database.
Postgres RLS
Cross-customer links
Child tables are bound to their parent’s organisation.
Composite foreign keys
Policy tests
A member of another organisation sees nothing, and this is checked in the database on every change.
pgTAP
Evidence-pack files
Stored under each customer’s own path, with the same membership check on read.
Tenant-prefixed paths

05

Integrity of evidence

Each evidence pack is a numbered version that cannot be changed: a re-issue is a new version. The SHA-256 of the PDF is recorded at issue and signed with Ed25519, using a key held in our vault, and a content fingerprint is printed on every page.

Our public keys are at /.well-known/vidimus-signing-keys.json, and retired keys stay listed. Give your auditor the PDF and its line from your evidence register: the hash and the signature check offline with no account.

How an evidence pack is verified

  1. Artefact

    Evidence pack

    A numbered version that cannot be changed.

  2. Content hash

    SHA-256

    The hash of the PDF, recorded when the evidence pack is issued.

  3. Signature

    Ed25519

    Made with a key held in our vault.

  4. Published key

    /.well-known/vidimus-signing-keys.json

    Retired keys stay listed.

  5. Verification

    Offline without an account

    From the PDF and its register line, the hash is recomputed and the signature checked against the published key. Members can also verify in the product.

Review decisions, control overrides, membership changes and evidence-pack exports go into an audit trail that nobody can edit afterwards, not even our own service account. Each entry is chained to the one before, the chain is checked every night, and its status is printed in every evidence pack.

Audit trail
Decisions, overrides, membership changes and exports.
Append-only
Immutability
Database triggers refuse any change from every role, our own service account included. Rows are deleted only when an agent or a whole organisation is deleted.
Enforced by triggers
Chain
Each entry is linked to the one before, per organisation.
SHA-256 hash chain
Chain check
The result is shown in Settings and printed in every evidence pack.
Nightly
Export
Members can read and export the trail, and each export is itself recorded.
Audited export

06

Access and authentication

Each member is an owner, an admin, a reviewer or a viewer. One tested matrix says which role may perform each action, and the database enforces it again.

Roles
One matrix is tested against the written policy and enforced again in the database.
4 roles and 35 actions
Separation of duties
A Needs review result is settled by a reviewer who did not start the run. The database enforces it.
Database constraint
Passwords
Checked against known leaks when a password is set or changed.
12 characters minimum
Second factor
Any member can add an authenticator app, and an organisation can require it for every member.
TOTP
Internal console
Everyone needs a second factor to reach it, with no exception.
Second factor required
Support access
You grant it from Settings for a limited time. It expires on its own. Every grant is in your audit trail, and every use is in your support access log.
Time-boxed grant

07

Application security

Every response carries strict security headers, every input is checked against a typed schema, and the code is scanned on every change.

Content Security Policy
Scripts run only with a nonce issued for each request.
Per-request nonce
Transport and framing
HSTS, frame denial and a restrictive Permissions-Policy.
HSTS
Input validation
API routes, server actions and configuration are checked against typed schemas.
Typed schemas
Rate limits
Sign-in and the public forms are rate-limited in the database.
Database-enforced
Code scanning
Static analysis and secret scanning on every change, and dependency updates checked every week.
Semgrep, Gitleaks and Dependabot
Agent credentials
The credentials you give us to reach an agent are stored in a vault. The application keeps only a reference.
Supabase Vault
Application logs
Logs hold identifiers only and never prompts, agent replies or secrets.
Identifiers only
Error monitoring
Request bodies, headers, cookies and personal data are removed before sending.
Sentry (EU region)

08

Sub-processors

Sub-processors
Sub-processorPurposeData location
Supabasedatabase, authentication, file storageFrankfurt, EU
Vercelapplication hosting and content deliveryFrankfurt, EU
Mistral AIlanguage-model processingEU
LangfuseLLM observabilityEU region
Resendtransactional emailProvided on request
Google Cloud Vertex AIlanguage-model processing for customer-connected Vertex agentsEU region
Sentryerror monitoringEU region

Processing is governed by our data processing addendum. We tell customers at least 30 days before any sub-processor is added or replaced.

09

Self-hosted deployment

On the Enterprise plan and on request, the same application runs on your infrastructure, with inference through Mistral’s EU platform, a Mistral self-deployment or vLLM running Mistral’s model weights. It is also how Vidimus reaches an agent that never leaves your network.

10

Certifications

Every control on this page runs in the product today.

Certifications: none held yet. ISO/IEC 27001 preparation is on the roadmap. Meanwhile we answer your security questionnaire: send it to us.

11

Responsible disclosure

Found a vulnerability? Write to security@vidimus.fr. We reply within two business days and take no legal action against good-faith research. Test only against your own organisation.

Data-protection requests: contact@vidimus.fr

Send us your security questionnaire

We answer it in writing, from the same facts as this page.