Life is better with a bit of paranoia
October 23, 2026


Cloud storage is cheap and convenient, and it’s also someone else’s computer. Anything you put on Google Drive, Google can read. For most files I don’t care, for others I wrote rveil: a small command-line tool that turns a folder into an encrypted blob before it ever leaves my laptop.
Using it looks like this:
rveil put ~/Documents/"tax docs 2019" # seal it
rveil push # upload and verify
rveil get tax # and, someday, get it back
That’s most of it. But a few things turned out more interesting than “just encrypt it”, so here they are.
Encryption isn’t the whole story
Encrypting a file hides its contents, but not its size, and sizes say more than you’d think. An archive of exactly 3,014,656 bytes is easy to match against a file someone else already has. So rveil pads every archive using a scheme called Padmé, which rounds sizes up to a bucket. The bucket only tells you roughly how big the thing is, and the padding never costs more than 12% of the size.
One key per archive
Every archive has its own passphrase, derived one-way from a master key (which lives in 1Password) and the archive’s id. That means I can send a friend the passphrase for one archive and they learn nothing about the rest. rveil share even prints a ready-made message with a link and a one-line command they can paste into a terminal.
Trust, but verify
The thing I was most paranoid about was uploading something, deleting the original, and later finding out the upload was broken. So rveil checks twice: while sealing, it decrypts the archive again and compares it with the original, and after uploading, it checks that the hash Google reports matches the bytes it sent. Only then does it tell me it’s “safe” to delete my copy.
No lock-in
Everything rveil makes can be opened with standard tools:
age -d <id>.age | zstd -d | tar x
The format is written down in the repository, and the tests check that this path keeps working. If rveil disappears tomorrow, the files are still yours.
If you want the details (key derivation, the index, the threat model), the project page has the technical overview, and the code is on GitHub.