Plain-English explanation of how Trophic handles your data. I am the sole developer of this app — there is no “we”, no team, no investor looking at your logs.
I don't want to read your logs. That's why Trophic ships opt-in zero-knowledge encryption: when enabled, your entries are encrypted in your browser before they leave your device, and I cannot decrypt them. The database only ever sees ciphertext. If a government or a hacker forced me to open my database, all they would find is static.
Zero-knowledge mode is opt-in. By default, entries are stored as plaintext so folder queries and pattern aggregation work on the server. Even then, I do not read individual entries.
This is a one-way door. Once enabled, there is no “turn it back off” — undoing it would require re-uploading plaintext, which defeats the point. If you want plaintext access again, export your data (below) and start a fresh account.
By default, every fresh tab asks for your password and re-derives the wrapping key with Argon2id. This is correct behaviour and the password never leaves the browser, but on a device you actually own and trust it's also friction. The unlock screen has an opt-in trust this device checkbox.
When you tick it: the browser generates a per-device AES-GCM key inside the Web Crypto API marked non-extractable— it can be used by the browser's crypto engine but JavaScript (mine, an extension's, anyone's) can never read its raw bytes. Your Master Key is wrapped under it and stored in IndexedDB. On return visits, the browser hands the wrapped key back to the worker, which unwraps it and you're in — no password prompt, no Argon2id derivation. The server still has never seen the device key, the Master Key, or anything plaintext.
What this changes: convenience on devices you control.
What this does not change: the recovery story is identical. If you forget your password and lose your 12-word phrase, the encrypted entries are unrecoverable — the wrapped key on your device protects the same Master Key the server cannot recover, so losing both still means losing access. Trusting a device is purely a UX shortcut for the unlock step, not a backdoor.
The trusted entry is cleared automatically on sign-out, on Pack-Up & Burn, and on manual lock. You can also clear it manually from Settings → Security → trusted device → forget this device. Browsers from different signed-in accounts cannot unwrap each other's entries: the wrapper checks the userId before it tries.
Trophic runs on Vercel (hosting) and Supabase (PostgreSQL). Transactional emails are sent via Resend. I do not retain server logs beyond what these providers keep by default for operational purposes.
If anything here is unclear, or you want your data deleted without using the in-app flow, email me directly at tonymushromie174@gmail.com. I respond personally — there is no support team.