Standard Grant: Vup Vault - Personal Backup, Sync & Archive with indexd

Grant Milestone Progress Report (March)

What progress was made on your grant this month?

  • Built the complete backup and restore workflow: users can now vup init to set up a vault, vup add directories, vup backup to create encrypted snapshots, vup snapshots to list them, and vup restore to recover files — all verified end-to-end with checksum matching
  • Designed and implemented a daemon architecture where vup commands talk to a background s5 node over IPC. This means the CLI stays snappy, multiple commands can share the same node, and config changes (like vup add) take effect immediately without restart
  • All backup data is encrypted client-side before leaving the device. Recovery keys are displayed during vup init and accessible through vup config. Node identity can optionally be age-encrypted at rest
  • Backups are incremental: only changed files (detected by size+mtime) are uploaded. Unchanged files are skipped. Cache directories (CACHEDIR.TAG) and hidden files are handled correctly
  • Restore is a single command that reconstructs the full directory tree from the encrypted snapshot, preserving file contents and structure
  • Upgraded the networking stack (iroh 0.94→0.97) and rewrote the local IPC layer from raw QUIC to iroh endpoints, which is simpler and more reliable
  • Added several new infrastructure crates that will be reused across milestones: a new FS V2 format with built-in encryption and compression, a typed RPC protocol between CLI and daemon, and blob store adapters for writing to multiple backends simultaneously
Milestone Task PR Notes
M2: Backup & Restore vup backup #1 Incremental encrypted snapshots, direct upload to configured store
vup snapshots #1 List vault snapshots with hash and date
vup restore #1 Full restore to target path, checksum-verified
Progress reporting #1 Task progress (files scanned/changed/skipped, bytes uploaded) via RPC; visual progress bars planned for M5
Resume support #1 Partial snapshot checkpoints between source paths; content-addressed dedup skips already-uploaded blobs
Age key management #1 Age-encrypted identity, recovery key export via vup config

Validation (git checkout the PR):

cargo install --path vup_cli
vup init                # interactive setup — store, recovery key
vup add ~/Documents
vup backup
vup snapshots
vup restore --vault backup --target /tmp/restore-test
# restored files match originals

What will you be working on next month?

  • Testing, testing, testing!
  • Multi-device sync: vup sync push/pull commands and async relay mode using any remote store as an encrypted intermediary
  • File sharing with vup share — generate E2EE links for files and folders
  • FUSE mount for browsing snapshots as a virtual filesystem
  • Automatic backup via --watch flag with filesystem change detection
2 Likes