Usage and Future Plans
I use it a bit, but it needs a mobile app to be truly useful. The good thing is that since it is completely file based, I can just rely on syncthing for device syncing. That simplicity was one of the goals of this project - for other projects I built my own sync library. I also would have to review all the encryption if I were ever to distribute this app.
Encryption

For this project, I implemented a vault crate. The design is highly inspired by MLS and White Noise, and its goals were to provide forward secrecy and the possibility to rotate or have multiple keys.
The crate separates how a vault is unlocked from how individual items are encrypted:
One or more access keys unlock the vault.
Password access uses Argon2id.
Nostr access derives a wrapping key from an
nsec.Recovery access uses a high-entropy recovery code.
The unlocked access method reveals the vault key.
The vault key unwraps one or more epoch keys.
Each encrypted item or stream gets a fresh item key.
The item key encrypts the payload, and is itself wrapped by the current epoch key.
This gives the crate three useful properties:
Multiple unlock methods can point at the same underlying vault.
Epoch rotation changes the key used for new data without immediately breaking access to older data.
Self-contained items can carry the metadata needed to discover which epoch and wrapped item key are required for decryption.
