Memexa

Verifiable

An EU company address is not EU hosting.

"EU-hosted" is easy to write. So this page doesn't say "EU" — it says who, what, where, with names, seats and the data center. If any claim here is wrong, that's a mistake we want thrown at us: support@memexa.ai.

The exit comes first

Before places: you can always leave. Every note, every document, the whole graph exports with one click as Markdown — complete, in a format every tool reads. The graph is an index, not a lock-in. A vendor who talks about the data center before the export has the order backwards.

The data center

Memexa runs on Scaleway in region fr-par, Paris — application servers, managed PostgreSQL and object storage (documents). All database connections run over a private network; the database has no public address. The operator is Scaleway SAS, a subsidiary of the Iliad group, France.

Subprocessors

The complete list — every company with seat and purpose. What isn't listed here doesn't get your data.

Company Seat Purpose Processing location
Scaleway SAS Paris, France Hosting: servers, managed PostgreSQL, object storage, transactional email Data center fr-par (Paris)
Mistral AI SAS Paris, France AI processing: OCR, embeddings, distillation, audio transcription EU (La Plateforme)
Jina AI GmbH Berlin, Germany Re-ranking of search hits — receives text excerpts of candidates, only on ambiguous searches api.jina.ai — EU processing not guaranteed
BunnyWay d.o.o. Ljubljana, Slovenia CDN and DNS — delivery of the web interface EU edge locations
Sendinblue SAS (Brevo) Paris, France Inbound email capture (mail-to-brain feature) EU
Armitage Labs OÜ (Creem) Rotermanni tn 14, 10111 Tallinn, Estonia — registry code 16977866 Payment processing and subscription management as merchant of record (paid plans only) EU; US subcontractors under SCCs (creem.io/dpa)
Migadu-Mail GmbH Appenzell Ausserrhoden, Switzerland Email mailboxes (support@, privacy@) — inbound and outbound support mail Servers at OVH (EU); Switzerland: EU adequacy decision
Langfuse GmbH Berlin, Germany Operational search telemetry (metrics and cost — never query text, never content) EU (cloud region Frankfurt)
Plausible Insights OÜ Tallinn, Estonia Cookieless visitor stats — this marketing site only, not the app EU

Two rows that deserve an explanation

Creem — the payment chain. Paid plans run through Armitage Labs OÜ (Creem) in Tallinn as merchant of record. Creem in turn works with subcontractors in the US — there is no card payment without the card networks and their service providers. We would rather write that down than let it disappear under "EU". That chain gets what billing needs: email address, billing country, amount, subscription status. It never gets: notes, documents, queries, the graph. It has no access to the database or object storage, and it touches your content at no point. The transfers are covered by EU standard contractual clauses; the current list of subcontractors is at creem.io/dpa. The free plan doesn't pass through the payment chain at all.

Migadu — the support mailboxes. support@ and privacy@ sit with Migadu-Mail GmbH, seated in Appenzell Ausserrhoden, Switzerland; the servers stand at OVH in the EU. Switzerland is not an EU member, but the European Commission certifies it an adequate level of data protection — a transfer there needs no additional safeguard. What lies in those mailboxes is what you write to us: support mail. No brain content. Migadu is a paid mail host with no ad financing. Inbound mail to your brain does not run through this, but through Brevo — its own row in the table above.

Which AI models, from whom

Processing of your content runs on models from Mistral AI, Paris — specifically mistral-ocr-latest for OCR, mistral-embed for embeddings, mistral-small for distillation and voxtral-mini for audio transcription. No US model provider sees your content. The language model you talk to (Claude, ChatGPT, …) is brought by your own AI client — Memexa only hands it the sources. That leaves one component we haven't got as clean, and it belongs here just as much.

The one loose end: re-ranking. When a search turns up several similarly good hits, a cross-encoder sorts them by relevance — jina-reranker-v2-base-multilingual at Jina AI GmbH in Berlin. Text excerpts of the candidates go there. The company is German, but the endpoint api.jina.ai doesn't tell us where processing happens — we have no EU processing guarantee for this step. That's precisely the gap this page holds against other vendors, so here it is. Two things make it smaller: the step doesn't run on every search, only when hits sit close together and sorting would actually change something. And it receives excerpts, not whole documents. We're looking for a replacement; until one runs, this paragraph stays.

Self-hosted instead of bought in

Error tracking runs on a self-hosted GlitchTip instance on our own Scaleway infrastructure — crash reports never leave our servers. And they don't contain you: before a report goes out, user identity, IP, cookies, headers, authorization tokens, request body and query string are stripped. The body is the part that matters — note content and search queries would otherwise sit in it. Performance tracing is off by default. This website's visitor stats are cookieless (Plausible, EU), and the app itself has none at all.

Keys that can do one thing only

Access keys follow the principle of least privilege: every system gets only the permissions it actually needs. Example: this website's automated deploy holds no account-wide CDN key — just a token that can do exactly one thing: purge this site's cache. The central keys themselves live in Scaleway's Secret Manager, not in external build systems.

The separation lives in the database, not in the code

In most services, application code is what keeps you from seeing someone else's data — one forgotten "where user = …" in a single query is then enough for a leak. In Memexa the separation sits a layer lower: PostgreSQL enforces it through row-level security. With no user context set, the database returns no rows — not the wrong ones, none at all. The context is set per transaction and falls away when it ends, so it can't carry over to the next connection out of the pool. To keep it that way, a check runs with the test suite that fires as soon as a new table arrives without row-level security or an explicit classification: the build fails instead of quietly passing.

What your AI may do is your call — and you can take it back

Claude, ChatGPT and Cursor don't get a master key. Access runs through OAuth: before you approve, you see which client is asking and where the access goes, and you confirm it yourself. The browser clipper and full AI access hold separate permissions — the clipper may file things, not search your store. You can disconnect clients any time from the dashboard; there's also an RFC 7009 revocation endpoint for clients that call it themselves. And access control doesn't hang on one central gate: every endpoint checks the session itself, so a mistake in one place doesn't open everything.

Deletion means deletion — in this order

You can delete your account yourself, confirmed by email. What happens then is deliberately the other way round: first every file in object storage is removed — across the complete user prefix, so orphaned files that no longer belong to any entry go too. Only then do the database rows fall. If the file deletion fails, the whole run aborts and your account stays, rather than leaving you with the records gone and the documents still sitting there. The run is safe to repeat. Individual items you can delete any time without touching the account.

The wires in between

Every leg is encrypted: TLS 1.2 and up at the edge, older versions switched off; database connections run with verify-full, meaning certificate and hostname are checked, not just "encrypted somehow". The database sits on a private network with no public address. In front of it are a WAF and DDoS protection, and the origin server only accepts requests from the CDN's network — you can't reach it directly. The application container runs without root, dependencies build from a pinned lockfile, and the one external binary we need is pinned to a version and a checksum. Staging and production are separate projects, not two folders in one.

What we do not claim

A page that only lists strengths is an ad. So here's the other list — every item is one we've been asked about, or would be:

Documents & reporting channels

Memexa is bootstrapped — no investors, no exit pressure. Your subscriptions are the business model, not your data.