Security
The boring details, written for compliance.
Attevia ships output that regulated firms put in front of clients. That means our security posture has to be reviewable, not marketing-grade. This page is the version we send to a CISO when they ask. security@attevia.dev for anything not covered here.
Cryptographic signing
Ed25519 signatures on every receipt.
- Attevia signs documents with a platform ed25519 keypair (private key in server env, never returned by API). Tenant data (runs, receipts, keys) is scoped by account — other tenants cannot read it.
- Every signed document publishes its canonical message hash (SHA-256), signature, and signing timestamp. Re-prove any receipt at
/api/v1/audit/verify/<id>without an Attevia account. - Public key at
/api/pubkeyfor offline verification. Per-tenant signing keys are on the Scale/Enterprise roadmap.
Data in transit
TLS 1.3 everywhere. No exceptions.
- All API traffic is HTTPS-only, enforced at the edge by Vercel. HTTP redirects to HTTPS with HSTS.
- All upstream model calls (Anthropic, OpenAI, Azure) use the providers' native TLS endpoints — no proxy in the middle.
- Webhook delivery (status updates, audit pings) is signed with the tenant's ed25519 key so the receiver can verify the message was not tampered with in transit.
Data at rest
Encrypted, geo-tagged, and the backend is named.
- Primary: Upstash Redis (TLS at rest, AES-256, US-East region). The active backend is always visible at
/api/diagnostics/blob— no hidden subprocessors. - Mirror: Vercel Blob (S3 + AES-256). Used as a fallback and for large objects.
- Optional bring-your-own: Supabase Storage with a service role key you control. Switch on by setting
SUPABASE_URL+SUPABASE_SERVICE_ROLE_KEY.
API key handling
The raw key is shown to you once. We never see it again.
- On issue, the server generates 32 random bytes, hashes them with SHA-256, and stores only the hash. The raw key is returned in the issue response and never reachable again.
- Each request authenticates by re-hashing the bearer token and looking up the prefix + hash. No constant-time string compare footguns; HMAC is used for session cookies.
- Revocation is instant — keys are removed from the index and every in-flight request rechecks before completing.
What we log
Enough to debug a customer ticket. Not your data.
- Per-request: timestamp, route, tenant id, latency, status, upstream model + token counts. Not the thesis body, the memo content, or the signed document.
- Agent traces are stored as part of the run object so the customer can replay them. They're scoped to the tenant that owns the run and are not visible to other tenants.
- Langfuse traces are sent only when the operator opts in via the
LANGFUSE_*env vars; otherwise no third-party telemetry leaves the box.
Retention & deletion
You own the data. We make it easy to leave.
- Runs and receipts persist until you delete them. Signed receipts are append-only by design — deleting a receipt does not invalidate any signature you've already sent to a client.
- DSARs are honoured within 30 days. Email privacy@attevia.dev with the tenant id and we'll export everything as JSONL.
- Backups follow the same retention policy and are encrypted with a separate key. We never restore one tenant's data into another tenant's account.
Compute & isolation
Stateless Lambdas. Tenant-scoped storage keys.
- All API routes run on Vercel Edge / Node functions — stateless, ephemeral, and patched on the platform's release cadence.
- Storage keys are prefixed with the tenant id. Every read and write rechecks the prefix against the authenticated session — cross-tenant reads are impossible by construction, not policy.
- Model providers (Anthropic, OpenAI) are kept on their default non-retention business endpoints. Your thesis text is not used to train any third-party model.
Compliance posture
What we map to, what we don't.
- Regulated customers: Attevia provides cryptographic audit infrastructure — signed receipts, model provenance, and verification URLs. We are not a SEBI-registered research analyst or investment adviser. Your firm holds the advisory relationship and compliance obligations; we document the AI process.
- EU AI Act: every output is provenance-tagged with the model id, hash of the inputs, and signature — designed to support traceability requirements for high-risk financial AI systems.
- SOC 2 / ISO 27001: not yet certified. Targeting Q4 2026. We can sign DPAs and NDAs today.
Found something off?
We pay bounties for any real vulnerability disclosed responsibly. Email security@attevia.dev with a write-up and we'll respond within 24 hours.