Security

Last updated August 24, 2026 · What your data means and what Lethe remembers is covered on Privacy; this page is about how it’s protected.

Lethe is a small product built by a small team, so this page does something most security pages don’t: it tells you exactly what protections exist today, how we verified them, and which standard things we don’t have yet. Every claim below was checked against the running system before it was written — the same rule as our published benchmarks.

The short version

Where your data lives

Raw chat messages and captures stay in your browser’s local storage on your device. What syncs to the cloud is the derivedlayer — observations, entities, goals — with names already pseudonymised (your device holds the only copy of the name map, and real names are rehydrated locally at display time). Cloud storage is Postgres at Supabase with row-level security: every query is scoped to the signed-in account. We verified this the direct way — on August 24 we queried our own production tables using only the public client key with no session, and every populated table returned zero rows.

All traffic is TLS in transit. Optional encrypted backups are protected by a passphrase you hold (with a one-time recovery code); a wrong passphrase is rejected — we cannot open your backup for you.

The Vault

Some things you want help with but never want uploaded. Vault conversations and documents are encrypted client-side on your device. Nothing in the Vault is ever extracted into memory, scanned by the cloud pipeline, or shared with a connected AI — by construction, not by policy.

Connected AIs

Claude, Cursor, or any MCP client you connect reads your derived understanding through a token you mint with explicit scopes — never raw conversations, never the Vault. You can revoke any token instantly. Every single read is written to an access log you can open, and the check fails closed: if the audit record can’t be written, the read is refused. That behaviour is covered by tests in our CI, which runs 1,100+ tests on every change.

The honest part: AI model providers

To generate replies and build memory, your message text is sent to the AI model you choose in the app (or Lethe Auto). That means raw text does reach that model provider’s servers under their terms; pseudonymisation applies to what we store, not to what the model must read to answer you. If a provider’s jurisdiction or policy matters to you, choose your model accordingly — and Incognito mode guarantees a conversation leaves nothing behind in Lethe either way.

Subprocessors

ServiceRoleSees
VercelHostingTraffic to the app (TLS)
SupabaseDatabase & sign-inPseudonymised derived data, your email
AI model providerThe model you choose in the appMessage text you send to chat
GoogleOnly if you connect Gmail/CalendarRead-only access you grant; disconnectable any time

No payment processor is active: the beta is free and no card is ever collected.

What we don’t have yet

No SOC 2 (we’ll pursue it when a customer’s procurement actually requires it — a certification bought before then would be theatre), no external penetration test yet, no bug bounty programme. We’d rather you know that than infer the opposite from a page full of badges.

Found a vulnerability?

Tell us directly: hello@soulbots.in. A real report gets a same-day human reply, a fix as fast as we can ship one, and — if you want it — public credit in the build notes. We’ve published our own bugs there; we’ll publish yours too.