Credentials encrypted at rest
SOPS + age keeps your remote keys out of plaintext configs. Secrets are decrypted in-memory only at runtime.
Multi-remote sync
Push the same backup to S3, Backblaze B2, MinIO, and more in one run. Add as many remotes as you need.
Step control
Use --start-step to skip already-completed phases. Resume from forget, or run sync-only.
Self-updating
Run `vivo update` to pull the latest release. Background version checks notify you after each run.
Flexible sources
Back up a single directory, or point `files-from` at a list of paths. Add an exclude file to skip what you do not need.
Task chaining
Tasks can call other tasks and run shell commands post-backup. Circular references are detected and skipped.
Dry-run mode
Test your full configuration without writing a single byte. Skips remote sync, forwards --dry-run to restic. Set `dry-run true` on a task to override it per task.
Health checks
Run `vivo doctor` to verify that required tools are installed, your config and secrets are valid, and all remotes are reachable. Run `vivo doctor --fix` to auto-install any missing dependencies, including FUSE for `vivo mount`.
Interactive TUI
Run `vivo manage` to open a full-screen config manager. Add, edit, and delete tasks, remotes, and call chains interactively. Set the default task with a keystroke — no manual KDL editing required.
Browse backups as files
Run `vivo mount` to explore any local or remote backup repo as a FUSE filesystem. Navigate snapshots, find individual files, and restore without touching restic directly.
Schedules itself
Run `vivo schedule add` and vivo installs a daily launchd agent, systemd timer or cron entry for you, with the right PATH, your config and key locations, and a log file. No hand-written plist.
Knows when it is broken
Run `vivo status` for the newest snapshot, the last sync to each remote, and your schedule. It exits non-zero when something is stale or failing. Add `on-failure` and `on-success` hooks to a task to send yourself a notification.
One-command restore
Run `vivo restore` to pick a task, snapshot and destination, or restore just one path. `vivo snapshots` lists what you have. No FUSE needed, and restores never overwrite your live files by default.
Rebuild a lost machine
Every remote also keeps a small recovery copy of your encrypted secrets and config. On a new machine, restore your age key and run `vivo recover` to get your setup back, then `vivo restore` for your files.