What we hold, what we never hold, and how you check.
A vault is only worth what a stranger can verify about it. This page states the estate as counts, states the design as a claim with the tests that enforce it, and points to the two pages that check an export without contacting us.
Counts. No row leaves the database to make them.
Figures computed 18 September 2026 at 06:34 UTC, refreshed at most every five minutes. Aggregates across every vault; no organisation, item or person is identified by them.
Zero plaintext bytes is a property of the design, computed as nothing.
The figure above is not a measurement that happens to be zero. There is no column to sum and no code path that could produce another number: every function that takes a key runs on your device, and the server imports only encoding and verification helpers. The server-sees table in docs/VAULT.md §4 is the contract; the tests are the proof.
- src/lib/vault/core/core.test.ts“NO PLAINTEXT”
serialises every upload object the ceremony produces and asserts no key, passphrase, Secret Key, kit word or item content appears in it
- src/lib/vault/server.integration.test.ts“(b) the database holds no plaintext”
walks the real API with a marker plaintext and asserts the database never contains it, nor a passphrase, Secret Key, vault key or private key
- Plaintext
- Every item is encrypted in your browser before it leaves the device. The server stores ciphertext framed to a size bucket, and learns the bucket, never the length.
- Keys
- The vault key is stored only wrapped to a person's identity; the item keys only wrapped under the vault key; the identity's private keys only sealed under a key derived from your passphrase. Nothing on the server opens anything on the server.
- The recovery kit
- Printed once, in your browser. The phrases that rebuild the vault key exist on paper and nowhere in our database.
- Passphrases and Secret Keys
- Neither is transmitted. The passphrase is typed into a page that derives keys locally; the Secret Key lives on the kit and, if you choose, on your device.
Two things, both typed by the owner for a reader they chose.
- A published proof label
- When an owner publishes a proof page for one item, they type a title and a name for it. That label is the one plaintext the row carries. Withdrawing the page removes it; the sealed record keeps only a hash of it.
- A transfer note
- When an owner sends an item to another vault, they may add a short note the recipient reads before accepting. The note is the sender's deliberate disclosure; the item itself travels sealed, its key wrapped to the recipient alone.
Beyond these: public keys and fingerprints, size buckets, commitments, who was granted what and when, recorded by user id rather than by email. The full table is the contract above.
Two pages, no account, no network.
/verify
Re-derives every hash of your export in the browser and checks the chain against its anchored head. Turn the network off first; the page works the same.
/vault/decrypt
Opens the same export with your passphrase and Secret Key, or two phrases from your kit, and decrypts every item on the device. It makes no request, and it says so.
This page describes a design and the tests that hold it. It does not describe an independent review, and none has been obtained. About the vault →