Trust Center

One URL for a vendor security review: subprocessors, data residency, retention proof, DPA, and attestation roadmap. If your procurement team needs a CAIQ / SIG questionnaire completed, email security@ephemera.sh — most of the answers are below.

At a glance

Data residency
EU (Paris) live · US planned. Region pinned per tenant.
Raw-data retention
24 hours, then cryptographically-signed deletion.
Aggregate data
Scores / trends kept; no raw cluster data retained.
Encryption
TLS in transit · encrypted at rest (object storage + DB).

Subprocessors

Third parties that may process customer or account data. Region is where the relevant processing happens for EU tenants. Effective 2026-06-04. We give at least 30 days' notice before adding or replacing a subprocessor that processes your data on our behalf. Vendors we engage for our own billing are disclosed in our privacy notice, not here.

SubprocessorPurposeRegionData
ScalewayCompute, object storage, control-plane DB, transactional email (EU)EU (FR)Cluster dumps, findings, PDFs, account data, email address, notification content
DigitalOceanCompute + Spaces (US region)USUS-tenant dumps, findings, PDFs
BunnyCDN (bunny.net)Static asset CDN / edgeEU-configMarketing site assets only
Mistral AILLM for EU tenants (direct, in-region)EU (FR)Redacted findings text only
AnthropicLLM for US tenants (direct, in-region)USRedacted findings text only (US tenants)
SentryError monitoringEU (de)Stack traces, request metadata (no cluster data)
iubendaConsent management / cookie bannerEUConsent records
PlausiblePrivacy-friendly analyticsEUAggregate page views (no cookies, no PII)
Tawk.toLive chat widget (marketing site)USChat messages you send us

Data residency & the AI layer

For stored data, EU-tenant cluster dumps, findings, PDFs and the control-plane DB stay in EU infrastructure; US in US. The EU and US deployments run on separate, region-pinned databases (EU on Scaleway, US on DigitalOcean), and a tenant's record lives solely in its home-region database — there is no cross-region replication.

The AI layer is region-local too. Each region calls its own LLM provider directly, at that provider's in-region endpoint — EU tenants to Mistral in France, US tenants to Anthropic in the US — with no shared cross-region aggregator in the path. Prompts are built from redacted findings only (no secrets, no raw manifests), so an EU tenant's text stays in the EU. Provider-side retention and no-training commitments are a separate contractual matter covered by each provider's DPA. See our routing notes for detail.

Retention & deletion proof

Raw artifacts auto-delete within 24 hours. Every deletion is written to an append-only, ed25519-signed retention log, so you can independently verify a given artifact was destroyed. See the retention policy.

How a deletion becomes a signed receipt:

  1. in your browser

    Redact & upload

    Secrets stripped client-side; the redacted dump uploads over TLS to your region.

  2. region-pinned storage

    Versioned + deadline

    Object storage in your region; a delete_at of upload + 24h is set at write time. EU uploads add Object-Lock (WORM) write-once enforcement.

  3. retention-cron · * * * * *

    Delete & hash

    Every minute, past-deadline objects (every version) are deleted and each one's SHA-256 recorded.

  4. write-only log · kept forever

    Signed receipt

    An ed25519-signed entry is appended to a separate, write-only log bucket — provider- and region-specific (Scaleway for EU, DigitalOcean for US) and replicated to a second region in the same jurisdiction for disaster recovery — and retained permanently.

Each retention-log entry is ed25519-signed over all of the following fields, joined in order — so altering any one of them invalidates the signature:

FieldMeaning
seqMonotonic 1-based position in the append-only chain.
prev_hashThe entry_hash of the previous entry (64 zero chars at seq 1) — links the chain so deleting or reordering any entry is detectable.
entry_hashSHA-256 over the canonical entry (every field except entry_hash and signature), so it folds in seq and prev_hash.
timestampUTC instant the deletion ran (ISO‑8601).
job_idThe audit job, or an age-sweep:… / empty-folders:… id for the scheduled cleanup sweeps (which aren't tied to a single job).
tenant_idOwning tenant (null for the scheduled age / folder sweeps, which aren't tied to one tenant).
regionData-residency region the deletion ran in (eu / us) — backed by Scaleway (EU) / DigitalOcean (US).
verbDELETE (deadline-driven), AGE_SWEEP, or FOLDER_SWEEP.
age_secondsAge threshold applied — 0 for deadline deletes, 86400 for the 24h sweep.
deleted_objectsOne <object-key>:<sha256> per artifact removed.
signatureed25519 signature (hex) over the fields above. Verify with our published public key.
{ "seq": 4217, "prev_hash": "a3f0…1d", // entry_hash of seq 4216 "entry_hash": "c81b…7e", "timestamp": "2026-04-19T17:42:03+00:00", "job_id": "EPH-2026-0418-7742", "tenant_id": "8f1c…e2", "region": "eu", "verb": "DELETE", "age_seconds": 0, "deleted_objects": [ "jobs/<tenant>/EPH-…7742/report.pdf:b7e1d0f6…9c", "jobs/<tenant>/EPH-…7742/dump.zip:9f2c4a8e…71b3" ], "signature": "5c1e9b…a0" // ed25519 over the canonical message below }

To verify offline, recompute two things and check them against the published public key:

The log lives in a dedicated, versioned, private bucket on your data plane's provider and region — EU (Scaleway) or US (DigitalOcean) — never public. The cron holds PutObject only, so entries can be appended but never edited or deleted, and every entry is replicated to a second region within the same jurisdiction for disaster recovery (the copy never leaves your region). It is reachable only through the authenticated dashboard, scoped to your own tenant: use Download signed log (JSON) under Trust → Retention log to export the whole signed entries and verify them offline as above.

Documents

Questions a questionnaire doesn't cover? security@ephemera.sh.