Single-basis backup sync, duplicate detection, iCloud-aware storage, and cross-machine protection tracking — running entirely on your own machines. No account, no cloud service, no upload.
Built from one real, recurring problem: a movie/TV library spread across a primary drive, a backup, and a storage-limited iCloud folder — and no easy way to know what's actually protected.
Mark one root primary. Every other backup/subset root is compared against it automatically — no pairwise wiring, no matter how many copies you keep.
Detects real, undownloaded iCloud placeholder files without forcing a download, and never mistakes a storage-optimized copy for a backup.
Content-hash duplicates across every tracked root, largest first. Removing a copy quarantines it — recoverable, never a hard delete.
Exchange a small portable JSON catalog (hash/size/path only, never the media) between machines that aren't mounted at once, and see which files exist in exactly one place.
Release-name parsing via guessit, optionally confirmed against TMDB, with a one-click rename to a clean standard name.
Copies are always safe to auto-apply. Deletions, conflicts, and permanent removals always require an explicit, separate confirmation.
One script finds (or installs) Python 3.10+, creates a virtualenv, and initializes this machine's local config and index.
# clone and bootstrap
git clone git@github.com:argj92/mediavault.git
cd mediavault
./scripts/setup.sh
# add your library, then run it
.venv/bin/mediavault root add primary-library /path/to/movies --role primary --mode mirror
.venv/bin/mediavault web # or: mediavault gui