Skip to content

Configuration

Everything on this page is editable from the GUI, from the CLI with savevault-cli config, or by editing the file directly. The CLI validates values before saving, so it’s the safest way to script changes.

Platform Config directory
Windows %APPDATA%\SaveVault\
Linux ~/.config/SaveVault/
macOS ~/Library/Application Support/SaveVault/

Files in that directory:

File Purpose
config.toml All settings on this page.
custom_games.toml User-defined games (Backup page → + Add Game, or savevault-cli add).
path-redirects.toml Persistent path redirects (Settings → Path Redirects, or savevault-cli redirects).
themes/*.toml User-defined UI themes from the Themes builder.
locales/*.json User locale overrides: imported or edited translation catalogs, managed from the translations guide.
manifest.yaml Cached PCGamingWiki / Ludusavi game database.
manifest.cache.json Pre-parsed copy of manifest.yaml that makes every launch after a database update fast and light; rebuilt automatically, safe to delete.
manifest.etag, manifest.updated_at, manifest.source Game-database update bookkeeping. A stored ETag is only reused when the configured source hasn’t changed.

State that isn’t configuration — the backup library index (state.db), scan cache, scheduled-run history, device id — lives in the per-platform data directory alongside the logs. On Windows the data directory is the same %APPDATA%\SaveVault\ folder as the config directory (%APPDATA% is the Roaming folder); on Linux and macOS they differ.

One shared, rotating log receives entries from every entry point: the GUI, savevault-cli, savevault-wrap, and savevault-scheduled.

Platform Log file
Windows %APPDATA%\SaveVault\logs\savevault.log
Linux ~/.local/share/SaveVault/logs/savevault.log
macOS ~/Library/Application Support/SaveVault/logs/savevault.log

It’s the one place to check “did last night’s scheduled pass run?” regardless of which part of the app fired.

Every key savevault-cli config list prints, grouped as it appears in config.toml. Settable keys take config set. Dedicated keys are readable with config get but written through the named command instead. Internal keys are machine-managed and read-only.

Key Default Notes
backup_dir platform default Where archives are stored. Machine-local; never exported.
default_format zip zip, targz, or tarzst.
backup_compression_speed 6 1 (fastest) to 9 (smallest). backup --compression overrides per run.
theme system (dark in the Steam edition) system, dark, or light.
custom_theme_id unset Dedicated: chosen in Settings → Appearance → Theme or the Themes builder.
show_themes_nav true Show the Themes page in the sidebar.
locale system UI language: system, en, es, de, fr, pt-BR, zh-CN, zh-TW, or a custom locale tag.
show_translations_nav false Show the Translations editor in the sidebar.
close_to_tray true Closing the window keeps SaveVault in the tray.
auto_scan_on_launch false Run an install scan automatically when the GUI opens.
additional_roots auto-discovered Dedicated: roots list / roots discover / roots rescan. See install roots.
onboarding_completed false Internal.
Key Default Notes
device.name unset (detected) This device’s display name, recorded in every backup it makes so devices sharing a folder can be told apart. Detected as Steam Deck / Steam Deck OLED / Steam Machine / Steam Frame on Valve hardware, otherwise the hostname. Machine-local; never exported. See multiple devices.
Key Default Notes
retention.default_max_backups 4 Backups kept per game, per device, before the oldest unpinned one is purged. A device never deletes another device’s archives.
retention.per_game_overrides empty Dedicated: config --retention-game "Game:count" or the GUI.
Key Default Notes
schedule.enabled false Dedicated: schedule enable / schedule disable (they also register with the OS).
schedule.mode daily daily, weekly, monthly, or interval.
schedule.time 03:00 Time of day for calendar modes.
schedule.interval_hours 4 For interval mode.
schedule.weekdays empty Dedicated: schedule enable --weekdays mon,wed,fri.
schedule.month_day 1 For monthly mode.
schedule.games empty (all) Dedicated: schedule enable --games ….
schedule.include_configs true Include config files in scheduled passes.
schedule.output_dir unset Write scheduled archives somewhere other than backup_dir. Machine-local.
schedule.refresh_manifest_before_run true Fetch the game database before each pass.

Run schedule enable again after changing timing keys so the OS trigger is re-registered.

Key Default Notes
live.enabled false Settable. Machine-local. Also toggled from the GUI, and live enable-all turns it on; the CLI engine runs with live start regardless.
live.monitored_games empty (all detected) Dedicated: live enable <game> / live disable <game> / live enable-all / live disable-all.
live.rolling_snapshot_limit 10 Unpinned snapshots kept per game.
live.debounce_seconds 3 Quiet period after a save write before a snapshot is taken.
live.hotkey Ctrl+Shift+S Keyboard checkpoint shortcut.
live.controller_hotkey L3+R3 Controller checkpoint chord. config unset live.controller_hotkey disables it and stays off across updates. Buttons: A B X Y LB RB LT RT Select Start L3 R3 DPadUp DPadDown DPadLeft DPadRight, joined with +.
live.per_game_overrides empty Dedicated: per-game snapshot limit and debounce, set in the GUI.
live.snapshot_dir unset (<backup_dir>/snapshots) Machine-local.
live.watch_configs false Also snapshot when config files change.
live.auto_resume false Internal.
Key Default Notes
scan.parallelism unset (all logical CPUs) Install-scan threads. A thread count, or auto (or an empty string) restores the default; config get prints auto when unset.
scan.redirect_wine false Resolve Windows-layout saves inside Wine/Proton prefixes on restore by default (the CLI’s --redirect-wine). Restore-side only; scanning and backups ignore it.
backup.parallelism unset (half of logical CPUs) Per-game archive/compression threads. A thread count, or auto (or an empty string) restores the default.
restore.include_mode saves What restores copy back by default: saves, configs, or both. Any single restore can override with --include.
restore.exclude_globs empty Dedicated: restore-excludes add / remove.
Key Default Notes
exclusions.use_recommended false Settable. exclusions recommended --enable / --disable is the dedicated command.
exclusions.global empty Dedicated: exclusions add <pattern> / exclusions remove <pattern>.
exclusions.per_game empty Dedicated: exclusions add <pattern> --game <name>.
exclusions.registry_global empty Dedicated: exclusions add <key> --registry.
exclusions.registry_per_game empty Dedicated: exclusions add <key> --registry --game <name>.
Key Default Notes
notifications.enabled true Master switch for OS notifications.
notifications.scheduled_run_mode changes_or_errors After a scheduled pass: changes_or_errors, always, or off.
notifications.scheduled_startup_failure true When the scheduled runner fails to start.
notifications.manifest_updates true After a game-database refresh.
notifications.manual_backup_complete true
notifications.smart_backup_complete true After a Dashboard Smart Backup or a wrap post-exit backup.
notifications.restore_complete true
notifications.cloud_sync_complete true
notifications.live_hotkey_checkpoint true When a checkpoint hotkey or chord fires.
notifications.backup_restore_only_when_unfocused false Suppress backup/restore toasts while the SaveVault window is focused.
notifications.app_update_available true

Test any of these with savevault-cli notifications test <kind>.

Key Default Notes
cloud_backup.enabled false Machine-local on/off.
cloud_backup.setup_complete false Internal.
cloud_backup.source managed Dedicated: managed (bundled or cloud install) vs external, chosen in the setup wizard.
cloud_backup.external_binary_path unset Dedicated: external-rclone setup flow.
cloud_backup.config_path unset Dedicated: external-rclone setup flow.
cloud_backup.installed_version unset Internal; recorded by cloud install.
cloud_backup.active_remote unset Internal; set by the wizard.
cloud_backup.remote_path SaveVault/Backups Folder on the remote.
cloud_backup.sync_after_backup true Push after each backup pass.
cloud_backup.sync_on_launch false Pull when the GUI opens.
cloud_backup.bisync_resynced false Internal.
cloud_backup.bisync_filters_version 0 Internal. Which sync-exclusion set the last --resync ran under; an update that changes the exclusions forces one more resync.
cloud_backup.sync_extra_args empty Extra rclone arguments. Empty string clears.
cloud_backup.bisync_confirm_deletes true Ask before a sync that would delete files.
cloud_backup.scheduled_sync_skip_on_deletions false Scheduled passes skip a sync that would delete rather than prompt.
cloud_backup.check_access_unsupported unset Internal.
Key Default Notes
app_update.check_enabled true Automatic update checks (GitHub and Direct builds; the Steam edition updates through Steam).
app_update.check_interval on_launch on_launch, daily, weekly, or monthly. Periodic checks also run at the end of each scheduled pass.
app_update.last_check_at unset Settable (and config unset). Written by the update checker.
app_update.banner_dismissed_version unset Settable (and config unset). Written when you dismiss the update banner.
Key Default Notes
detection.archived_fallback true Settable. detection archived-fallback --enable / --disable is the dedicated command.
detection.archived_optout empty Dedicated: detection optout <game> / detection optin <game>.
manifest.auto_update_on_launch true The GUI checks for a game-database update on launch.
manifest.source unset (built-in Ludusavi URL) An http(s):// URL or a local file path. manifest source <value> and config set manifest.source write the same key.

Settings → General → Settings Backup (or savevault-cli settings export / import) copies portable preferences to a TOML file: schedule (including on/off), Live Protection options, notifications, manual install roots, cloud-sync preferences, built-in theme selection, and Show Themes in Sidebar — optionally plus custom games and path redirects.

It does not export machine-local state: backup_dir, scheduled and snapshot output folders, cloud sign-in, rclone paths, or the device name. The live on/off (live.enabled) and cloud on/off (cloud_backup.enabled) values are written to the bundle but never applied on import, so importing never turns Live Protection or cloud backup on or off. User theme files in themes/ aren’t bundled either; export them individually from the Themes page. Importing with schedule.enabled = true re-registers the OS scheduler on the new machine, and a bundle that includes custom games opens the same Add / Replace / Skip flow as a standalone custom-games import.

Terminal window
savevault-cli settings export --include-custom-games --include-redirects -o savevault-settings.toml
savevault-cli settings preview savevault-settings.toml
savevault-cli settings import savevault-settings.toml --dry-run

See the CLI reference for every flag.