• 0.6 e8f21f68a6

    vault 0.6 Stable

    andydixon released this 2026-10-08 20:15:00 +02:00 | 5 commits to master since this release

    Rewritten in Rust, and much faster. vault 0.6 is a ground-up rewrite. It reads and writes exactly the same key files and vaults as 0.5, byte for byte, so there is nothing to convert: replace the program and carry on. Old and new versions can even share a vault at the same time; they honour each other's locks, and either can use a key the other's vault unlock is holding.

    On the same machine, compared with 0.5:

    0.5 0.6
    List a vault of 500 files 4.95 s 0.74 s 6.7× faster
    Get one small file back 5.24 s 0.74 s 7.1× faster
    Add 500 small files 124 s 79 s 1.6× faster
    Add a 1 GiB file 42 s 30 s 1.4× faster
    Post-quantum key wrap / unwrap 7.4 ms 3.1 ms 2.4× faster
    Program size 11.5 MB 3.5 MB 3.3× smaller

    Every lookup now opens the catalogue in parallel, and the FrodoKEM + ML-KEM maths is about twice as quick. Getting a large file back is slower on purpose: vault now waits until the file is safely on disk before it appears under its name, so a crash or power cut can never leave you holding an empty or half-written copy.

    Safer, too:

    • get never overwrites anything, not even a symlink or a file that appears while it runs; get -r won't follow a planted symlink out of the folder you chose.
    • A file that changes while you add it isn't stored, and migrate only deletes an original that is still exactly the file it stored (and never anything inside the vault itself).
    • Interrupted adds, moves and deletes can't leave an entry pointing at missing data.
    • vault unlock refuses to hold your key unless it can protect it: locked memory, no core dumps, and on Linux no debugging by other programs. It reads the key straight into that protected memory.
    • add URL and mirror have time and size limits (--timeout, --max-bytes, --max-pages), follow redirects only where they should, and a hostile website can no longer write outside the folder you mirror it into. mirror exits with status 3 when it had to skip something.
    • absorb now handles very large files from PAX tar archives correctly.
    • New --workers N on every command.

    Platforms: builds now cover Linux (x86-64, 32-bit x86, ARM64, ARMv6, ARMv7, RISC-V, LoongArch, POWER little-endian, s390x; all statically linked), macOS (Apple silicon and Intel), Windows (x86-64, 32-bit, ARM64) and FreeBSD (x86-64, 32-bit). The rarer platforms 0.5 also built for (Plan 9, OpenBSD, NetBSD, MIPS, AIX, Solaris, illumos, WebAssembly) are no longer released. On Android, the Linux ARM64 build runs in Termux. vault unlock is not available on Windows. The macOS binaries are cross-built: for add URL and mirror they trust the standard Mozilla certificate list rather than the macOS keychain.

    Also: an updated user guide (vault-guide.pdf) with new screenshots and troubleshooting entries, man pages (vault-man-pages.tar.gz), and SHA256SUMS for the binaries. The dixon-vault packages on repo.dixon.cx are updated too.

    Downloads