The encryption
In plain English: your records are locked with a random key made on your phone. Your PIN unlocks that key. Your recovery code unlocks your backups. We hold none of them. The app contains no analytics, crash-reporting or advertising code, and it talks to the internet for three things only: update checks, the app store's purchase system, and Polar if you connect it.
| Component | Implementation |
|---|---|
| Database | SQLCipher: AES-256-CBC, with HMAC-SHA512 authentication on every page. The database file is ciphertext at rest. |
| Database key | A random 256-bit key, generated on your phone. It is not derived from your PIN. |
| Your PIN | Unlocks the database key. The key is wrapped with AES-256-GCM under a key derived from your PIN: PBKDF2-HMAC-SHA256, 600,000 iterations. |
| Key storage | The PIN-locked key, with its salt, lives in your phone's secure storage: the Keychain on iOS, the Keystore on Android. Nowhere else. |
| Face ID and fingerprint | Add no new key. They unlock the same key that already protects your vault, kept in secure storage behind your phone's own biometric check. |
| Recovery code | 25 characters in Crockford Base32, 125 bits of entropy, from a cryptographically secure random source. |
| Backup file | Encrypted with its own random 256-bit key, not your vault's key. That key is wrapped with AES-256-GCM under a key derived from your recovery code: PBKDF2-HMAC-SHA256, 100,000 iterations. The app keeps no copy of the file. |
| Third-party code | Expo and React Native libraries for the database, encryption, secure storage, Face ID, files, sharing and the clipboard. No analytics, crash-reporting or advertising SDKs. |
| Network | Expo's update check, Apple's or Google's purchase system, and Polar if you connect it. The privacy policy lists what each one sends. |
Vaults created before 28 August 2026, during early testing, use an older scheme: the database key is derived directly from the PIN, with PBKDF2-HMAC-SHA256 at 310,000 iterations. Every vault created since, including every App Store customer's, uses the scheme above.
The key is generated on your phone and never leaves it. We hold no copy of it and no copy of your data. If you forget your PIN, we cannot reset it. The only way back in is a recovery code you have saved. Without one, your records cannot be recovered. That is by design, not an oversight. So save your code, and keep your own copies. There is a second reason to keep copies, and it has nothing to do with encryption. See the defect described below.
Biometric unlock is a faster route to the same key, not a second way in. If someone has your PIN, biometrics do not add a second lock. If they have neither, the database is unreadable ciphertext.
A defect we have not fixed
Sovereign Vault stores your records in SQLite, the database engine underneath most of the apps on your phone. SQLite has a flaw in the way it writes to disk. It has been there since 2010. It was subtle enough to go unnoticed for sixteen years, and was fixed upstream in March 2026. The library we build on has not picked up that fix, and there is no version we can ship today that has it.
It can cause a recently saved entry to disappear. There is no error and no warning. The entry is simply gone.
How often depends on how an app uses the database, and we are still working out how much our own use increases the risk. We would rather tell you that than give you a number we cannot stand behind.
Most apps with this same defect keep a copy of your data on their servers, so a lost entry can be recovered there. We do not, by design. The defect is ordinary. The consequence here is not. That is the real cost of an app with no server, and we would rather tell you now than have you find out later.
What this means for you: make your own copies regularly, as a backup, an export, or both. That is the only protection available today, and it is why both exist. A backup holds your vault as it was when you made it. An entry lost before then is not in it. We will update this section when the fix reaches us.
If you get a new phone
Your phone's own backup will not bring your vault back. On iPhone, the vault is left out of iCloud and computer backups entirely. On Android, a Google backup may hold the encrypted vault file, but never a key that opens it, so a restored copy stays locked. Either way, restoring a phone does not restore your records. That is deliberate: your records stay out of every backup the app does not control.
The only way to move your vault is the app's own backup file. Make one in the app and save it to iCloud Drive or Google Drive, so it's there when you get a new phone. Then open it on the new phone with your recovery code. Keep the code somewhere else, not next to the file.
Make a backup file before you change phones. If you set up a new phone without one, your vault will not be on it, and nobody can get it back, including us.
The backup file is an encrypted copy of your whole vault. Your recovery code is the only key to it. We hold no copy of that code, and nothing else opens the file. Without the code, nobody can open the backup, including us. On the new phone, you pick the file, enter your recovery code and set a new PIN. Your old PIN does not come across. Before anything is restored, the app shows you when the backup was made, so you can tell an old copy from a recent one.
Everything in the vault comes back. That includes what you take, doses and schedules, labs, weight and blood pressure, training, cycle, notes and wearable readings. It also includes the app's own records, like your reminders and which cards you have seen. Two things stay behind. Your PIN, which is why you set a new one. And your purchase, which belongs to your app store account and comes back through Apple or Google.
- Face ID and fingerprint unlock never survive a restore, on either platform. Your PIN still opens the vault, and you can turn biometrics back on.
The cost of that choice, stated plainly: anyone holding your backup file and your recovery code can open your vault on any phone. Keep the file and the code apart, and treat the code as carefully as your PIN.
One honest note about how mature this is. The recovery code has been used on a real phone: a saved code opened a vault after a forgotten PIN. Moving a vault to a new phone with a backup file has not been tested on a real device, on either platform. When it has, this paragraph will say so. Until then, do not rely on a backup file alone. Export your record as well, and keep that too.
What this does not protect against
Encryption at rest solves one problem well and several others not at all. Rather than let the phrase imply more than it delivers:
- Your phone's own backups. On iPhone, the vault is left out of iCloud and computer backups. On Android, a Google backup can hold the encrypted vault file but never a key to open it. A phone backup will not save your records on either platform. Only the app's backup file does.
- Your recovery code. It opens your vault after a forgotten PIN, and it is the only key to a backup file. Someone with both your backup file and your code could open your vault. Guard the code like your PIN, and keep it apart from the file.
- An unlocked device in someone else's hands. With your phone and your PIN or biometric, the app shows them your records exactly as it shows you. No encryption scheme helps here.
- A jailbroken or rooted device. Keychain and Keystore isolation can potentially be defeated where the operating system's protections have been removed.
- A backup file plus your recovery code. Together, they open your vault on any phone. Keep them apart. A backup stored next to its code protects nobody.
- Anything you export. An export is not encrypted, and once a copy leaves the app it is governed by wherever you put it. See below.
What leaves the device
The app makes a small number of network requests and none of them carry your records. Each one is described in full, including what it sends and why, in the privacy policy.
We run no server. There is no account and no sync service, and nothing of ours holds a copy. So there is nothing of yours for us to lose, sell or be forced to hand over.
Backups and exports are not the same thing
Two different things can leave your phone, and only one of them is encrypted.
- A backup is encrypted, and it is always a file. It is a copy of the vault itself, and your recovery code is the only key. Someone who finds it without the code has a file they cannot open.
- An export is not encrypted. It is your record in a form made to be read, and anyone who can open it can read all of it. That is the point. You take it to a doctor, or to an AI you want to ask questions. It is also the risk.
An export leaves in one of two ways. Markdown, JSON and the brief are copied to your clipboard for you to paste. The spreadsheet is saved as a file and handed to your phone’s share sheet, so it goes wherever you send it.
You start all of it, and the app keeps no copy. It hands the file over and deletes its own. Where it goes next, whether a cloud drive, an email or a chat, is up to you and out of our reach. Nothing we do can protect a copy you have handed to someone else. That is the trade-off for being able to take your data anywhere.