Manage your Steam game library across external SSDs. Browse everything on your vault drive from one place, copy what you want to play to your PC, launch in Steam, and clean it up when you're done — without ever touching the vault copy.
If you have a 2 TB+ Steam library that doesn't fit on your internal SSD, the usual answer is to keep the games on an external drive and play them from there. That works, but it's slow (USB SSD bandwidth + Steam's I/O patterns) and the drive has to stay plugged in.
The better answer: treat the external SSD as a vault — a complete read-only mirror of your library — and copy games to your fast internal SSD only when you want to play. When you're done with a game, remove the local copy. The vault is untouched and always there for next time.
Steam Vault Sync is the desktop app that makes this workflow nice.
- Browse your vault(s) — cover art, titles, sizes, and Steam
buildids for every game across every connected vault SSD, even when
a vault is disconnected. The catalog persists on each SSD in its own
SQLite database (
vaultsync.db). - Multi-vault support — connect any number of vault SSDs at once.
Auto-discovery probes A:–Z: for
vaultsync.dbon every hot-plug tick. Click any vault in the sidebar to filter the grid to just that vault's games. - Copy between vaults — via the ⋯ menu on any card; useful for mirroring a backup vault or splitting your collection across drives.
- Delete from vault — irreversibly removes the game folder,
appmanifest_*.acf, the catalog row, AND the vault's entry in Steam'slibraryfolders.vdfso Steam stops tracking it. - Local-only view — a separate sidebar entry surfaces games installed on your PC's local Steam libraries that aren't in any vault yet. One click backs them up.
Steam patching games installed on a USB SSD is unbearably slow — hundreds of MB taking hours of random I/O. Steam Vault Sync routes patches through your fast internal NVMe instead:
- Outdated games get an orange Update badge (detected via the
appmanifest
StateFlags— same signal Steam's own UI uses). - Click ↻ Update Vault. The app: copies the vault game to local
(sequential USB read, fast), temporarily edits
libraryfolders.vdfso Steam only sees the local install, gracefully closes Steam, then triggerssteam://install/<appid>. - Steam patches the local copy on your NVMe (fast random I/O).
- When Steam finishes, the app pushes the updated local copy back to
the vault (sequential USB write), restores
libraryfolders.vdf, and asks whether to keep the local copy.
Total time on a real test: 15 minutes for a 300 MB patch on a 90 GB game, vs >1 hour for Steam patching the vault directly.
- One-click copy vault → local with library picker if you have multiple Steam libraries on your PC.
- Pause / Resume / Cancel — all copies (vault→local, local→vault, vault→vault) honor the same control state at 4 MB chunk boundaries.
- Atomic vault writes — pushes write to
<game>.partialthen rename-swap, so an interrupted update never leaves your vault in a broken state. - Real-time progress — speed, ETA, % shown both in the app and in the system tray tooltip while minimized.
- Auto-register copied games with Steam via
steam://install/<appid>. - Launch directly from installed games via
steam://rungameid/<appid>. - Clean uninstall removes the game folder, manifest, downloading cache, and workshop content so Steam correctly sees the game as not installed.
- Multi-library awareness — reads every Steam library in
libraryfolders.vdf, shows a per-drive breakdown under "Installed on this PC", and excludes vault drives from the local list. - Cover art with zero config — reads
appmanifest_*.acfto map folder → AppID, then pulls covers from Steam's CDN. No API key. - Buildid display — each card shows the vault's installed build number and the local copy's build number (highlighted amber when they differ).
- System tray — close-to-tray, hover-for-progress tooltip during long copies, explicit Show / Exit menu.
- Hot-plug — connect or disconnect any vault and the UI updates within 3 seconds.
- Smart filters — All, Available, Installed on PC, Updates available (count badge), Local only, and per-vault filtering.
- Grab the latest release from the
Releases page
— either the standalone
Steam Vault Sync.exe, the NSIS installer, or the MSI. - The app requires Microsoft Edge WebView2 Runtime. On Windows 11 it's pre-installed. On Windows 10 the installer will fetch it automatically if missing. For the standalone .exe on a stripped machine, install it from https://developer.microsoft.com/microsoft-edge/webview2/.
- Run it. The app expects your vault SSD at drive letter S: by default — you can change this in Settings.
That's it. No Node, no Rust, no npm. The .exe is self-contained.
Steam Vault Sync expects the standard Steam library layout on the SSD:
S:\
SteamLibrary\
steamapps\
common\
Elden Ring\
Cyberpunk 2077\
...
appmanifest_1245620.acf
appmanifest_1091500.acf
...
vaultsync.db ← created automatically on first launch
The easiest way to get there:
- Plug in your SSD.
- In Steam → Settings → Storage → Add Drive → pick the SSD. Steam
creates
SteamLibrary\steamapps\common\for you. - Move or install games onto the SSD via Steam as usual.
- Launch Steam Vault Sync. The first time you point it at the SSD it
creates
vaultsync.dband scans the games automatically.
You can also use an SSD that's been used as a Steam library on
another PC — just plug it in and the app will read the existing
appmanifest_*.acf files to identify everything.
- Browse — open Steam Vault Sync, see your whole vault.
- Pick a game — click Copy to PC. If you have multiple Steam libraries on your PC, pick one. Progress panel shows speed + ETA.
- Play — when the copy finishes, Steam pops up and the game is ready. Or click the Launch Game button right in Steam Vault Sync.
- Done? — click the ✕ on the game card to fully uninstall the local copy. The vault copy is untouched.
You can keep multiple games installed locally at once; the sidebar shows totals per drive.
You need:
- Node.js 20+
- Rust stable (with the
x86_64-pc-windows-msvctarget) - Visual Studio 2022 Build Tools with the "Desktop development with C++" workload (for the MSVC linker)
- WebView2 Runtime (almost certainly already installed)
Then:
git clone https://github.com/lrsanchez/steam-vault-sync.git
cd steam-vault-sync
npm install
# Dev mode (HMR for React, recompile-on-save for Rust)
npm run tauri dev
# Release build — produces .exe, MSI, and NSIS installer
npm run tauri buildBuild outputs land in src-tauri/target/release/:
vaultsync.exe— the standalone binarybundle/msi/Steam Vault Sync_0.1.0_x64_en-US.msibundle/nsis/Steam Vault Sync_0.1.0_x64-setup.exe
- Tauri 2.x — desktop shell, Rust backend + WebView2 frontend (much smaller bundles than Electron)
- React 18 + TypeScript + Vite — UI
- Tailwind CSS — styling
- Zustand — frontend state
- SQLite (via
rusqlite) — per-SSD game catalog - keyvalues-parser — Steam's VDF format
Things I might add (PRs welcome under the contribution terms):
- Support for non-Steam games (manual cover art entry)
- SteamGridDB integration for games whose
appmanifest_*.acfis missing - Bandwidth throttling for copies
- Linux / macOS support (currently Windows-only)
- Automatic updater for the app itself
Bug reports, feature requests, and small PRs are welcome. By submitting a PR you agree your contribution is licensed under the same terms as the rest of the project (see LICENSE).
For larger changes please open an issue first to discuss the direction.
PolyForm Noncommercial 1.0.0 — free for personal use, hobby projects, research, education, and non-profits. Commercial use (selling, paid hosting, monetized distribution) requires a separate license — email leandrorsanchez@gmail.com.
Created by Leandro Sanchez and Claude.
Built with Tauri, React, and Claude Code.
Steam and the Steam logo are trademarks of Valve Corporation. This project is not affiliated with or endorsed by Valve.
