Core Workflow & Sync
What is LocalVault for?
LocalVault is a local-first Fab library custody system for Unreal Engine editor workflows. It helps you find owned Fab assets, understand which assets are actually on disk, back them up into versioned local storage, verify them later, restore them into projects, and organize the library with local metadata.
How does LocalVault authenticate with Epic?
LocalVault does not open a separate sign-in flow. It reuses the official Fab session inside Unreal Engine. Sign in through the official Fab tab first, then run Sync with Epic.
Why does "Sync with Epic" not populate anything until Fab is signed in?
LocalVault relies on the official Fab session inside Unreal Engine. If Fab is not signed in, the plugin cannot query your remote library.
Fix: Open the official Fab tab in Unreal Engine, complete sign-in there, then run Sync with Epic again.
What does Sync with Epic import?
Sync imports owned-library entries, titles, authors, descriptions, thumbnail URLs, listing type, compatibility details, and remote update timestamps. LocalVault then merges that remote metadata with local cache state, LocalVault backup state, project-installed content, checksums, duplicate grouping, and update flags.
Does syncing automatically download all my assets?
No. Sync imports metadata. Remote-only assets stay metadata-only until the actual payload exists in the Fab cache, in project content, or in the LocalVault backup root.
Why does an asset show "Updates: Not checked"?
That state is expected for remote-only entries. LocalVault needs local bytes before it can compare a remote update timestamp against a stored source, backup, or checksum state.
What happens if bAutoCheckForUpdates is disabled?
LocalVault skips the startup Epic-aware update check, but it still refreshes useful local state. You can still browse the local database, open folders, review backups, verify stored payloads, restore assets, and work with collections or tags.
Backup, Versions & Manifests
What does "Backup Selected" do in 0.2.0?
It chooses the best available local source, checks destination free space, creates a new version folder under LocalVaultStoragePath, copies the payload, retries file-copy failures during the active job, computes source and backup checksums, writes LocalVaultManifest.json, and only marks the backup as successful after verification passes.
Where are backup versions stored?
The usual structure is [StorageRoot]/AssetName__Hash/Backup_YYYYMMDD_HHMMSS_Random/Payload. The same backup version folder also contains LocalVaultManifest.json. Older successful versions are kept instead of being overwritten by the next backup.
What is LocalVaultManifest.json?
It is the per-version backup manifest. It records schemaVersion, assetId, title, author, source path, backup path, version id, source checksum, backup checksum, source modified ticks, backup modified ticks, created ticks, total size, and file-level entries when the payload is a directory.
What is the active backup version?
The active backup version is the latest successful backup that the asset row points to for verify, restore, details, and Explorer workflows. The details pane can still report how many known backup versions exist for the asset.
Why does LocalVault keep multiple versions?
Fab listings and local payloads can change over time. Versioned storage lets you back up a newer copy without destroying a previous known-good backup. The Multiple Versions filter helps you find assets with more than one stored version.
Does a failed backup leave the asset marked as safely stored?
No. Failed backup attempts avoid marking the asset as safely backed up. LocalVault records recent job status and last operation error information so the failure is visible instead of silently trusted.
Does LocalVault resume failed backups after restarting the editor?
No. LocalVault retries individual file copies during the active job, but it does not resume failed backup attempts chunk-by-chunk after an editor restart. Resolve the disk, path, source, or permission issue, then run Backup Selected again.
Verification & Integrity
Why is "Verify Backup" disabled?
Verification requires an existing LocalVault backup. If the asset is only owned remotely or only exists in the Fab cache, there is no LocalVault backup version to verify yet.
What does "Needs Verification" mean?
The asset has a LocalVault backup, but that backup has either never been verified or changed after the last successful verification timestamp. Use Verify Selected, Verify Changed, or Verify All to clear the state when the backup checks out.
What is the difference between Verify Selected, Verify Changed, and Verify All?
Verify Selected checks the selected backed-up asset. Verify Changed checks backed-up assets that have never been verified, changed after their last verification, or are already flagged as needing verification. Verify All audits every LocalVault backup.
Why did Verify Changed say no changed backups need verification?
LocalVault did not find any backed-up asset where the backup timestamp is newer than the last verification timestamp, and it did not find any backed-up asset already flagged as needing verification.
What happens if verification finds a mismatch?
The backup is not treated as cleanly verified. LocalVault updates verification state, records a clearer mismatch or operation error, and leaves the asset visible through integrity-related status and filters so it can be repaired or backed up again.
How is duplicate detection related to verification?
Both rely on local bytes and checksums, but they answer different questions. Verification asks whether a backup still matches the recorded expected state. Duplicate detection asks whether two locally present payloads share the same checksum group.
Restore & Conflict Handling
How does Restore decide where to pull files from?
Restore Selected prefers the active LocalVault backup when one exists. If there is no LocalVault backup, it uses the best local source path it already knows about, such as the Fab cache or project-local content.
What does Preview Restore do?
Preview Restore counts restorable assets, missing local sources, and destination conflicts before a restore job runs. It is useful before batch restores because it tells you what LocalVault can actually restore and what needs attention first.
Why did "Restore Selected" say that nothing could be restored?
Restore uses the LocalVault backup first and the Fab cache second. If neither exists for the selected assets, restore is skipped by design.
Fix: Download the asset in Fab or back it up into LocalVault first.
Why did restore create a folder with "_Restore_" in the name?
Restore preview or restore detected that the normal project destination already existed. To avoid overwriting project content, LocalVault copied the payload beside the existing folder with a timestamped suffix such as _Restore_20260506_220100.
Does Restore overwrite existing project content?
No during detected conflicts. LocalVault restores beside existing content with a timestamped suffix, then flags the asset with restore-conflict state so you can review and manually reconcile the result.
Why did "Open in Explorer" open project content instead of the Fab cache?
Open in Explorer prefers the LocalVault backup path first. If no backup exists, it opens the asset's current local source path. For some assets, that local source is project-installed content rather than the Fab cache, which is expected behavior.
Organization, Smart Filters & Duplicates
Do my Collections and Wishlists sync back to my Epic account?
No. Collections, wishlist state, and custom tags are LocalVault-only metadata. They help you curate and audit storage without altering Epic or Fab account-side data.
What smart filters were added in 0.2.0?
LocalVault now exposes maintenance-oriented filters:
Not Backed Up
Needs Verification
Updates Available
Large Assets
Installed in Project
Missing Local Source
Recently Restored
Restore Conflicts
Multiple Versions
Why are no duplicates appearing in the Duplicates filter?
Duplicate detection is checksum-based and only considers assets with local bytes. Remote-only entries cannot be grouped because there is nothing local to hash. Once an asset exists in the cache, backup root, or project content, LocalVault can compare it against other local payloads.
What does "Missing Local Source" mean?
The asset is known from metadata, but LocalVault does not currently know a usable Fab cache path, project-local path, or LocalVault backup path for it. Download it through Fab or create a LocalVault backup once the payload exists locally.
What does "Installed in Project" mean?
LocalVault sees that the asset's usable local path is inside the current project. This helps distinguish project-installed content from reusable long-term LocalVault storage.
How should I maintain a large library?
A practical loop is: review Not Backed Up, back up important local assets, run Verify Changed, review Restore Conflicts, and export team metadata when your local organization state is worth sharing.
Team Metadata, Diagnostics & Job History
Can I share LocalVault organization data with my team?
Yes. Use Export Team to write Saved/LocalVault/TeamMetadata.json. A teammate can place that file in the same project path and use Import Team to merge matching asset records by asset id.
What is inside TeamMetadata.json?
It contains the team-shareable parts of LocalVault metadata: asset id, title, wishlist state, tags, collections, backup path, backup manifest path, active backup version id, and known backup version references.
Does TeamMetadata.json include asset files?
No. It does not contain Marketplace assets, project content, or payload bytes. It only describes organization state and backup references. Teammates still need access to the same Fab downloads, project files, or LocalVault backup storage to restore actual content.
What does Diagnostics export?
The Diagnostics action writes Saved/LocalVault/Diagnostics.json. It includes sync status, last sync diagnostic, active endpoint template, Fab cache path, database path, storage root, restore root, update settings, asset counts, missing-source count, update count, and recent jobs.
What is job history?
LocalVault keeps recent backup, verify, and restore jobs in the local database. Each job records type, status, summary, total count, completed count, failed count, start time, and finish time. The browser displays this history so long-running storage work remains understandable after the status message changes.
Should I send Diagnostics.json outside my team?
Review it first. Diagnostics is plain JSON and can include local paths, drive names, project names, storage settings, and recent job summaries. It is meant for trusted support or internal debugging.
Settings, Storage & Architecture
Where should I set my LocalVaultStoragePath?
Use a short, high-capacity backup root such as D:\LocalVault or E:\UEVault. Short roots reduce path-length pressure and make Explorer navigation easier when asset packs contain deep folder trees.
What should RestoreIntoProjectPath point to?
The default style is a project content folder such as Content/LocalVaultRestored. Keep it inside the project unless your studio has a specific ingest or staging folder workflow.
What does MaxConcurrentDownloads do?
It controls multi-asset batch concurrency and the inner parallel file-copy fanout for directory payloads. Lower it on slower disks or network storage. Raise it carefully on fast NVMe storage for large backup or restore jobs.
Where does LocalVault store its database?
The primary local database is [ProjectRoot]/Saved/LocalVault/Database.json. It stores tracked asset records, local organization data, checksums, backup references, verification state, restore conflict state, last operation errors, duplicate grouping, and recent jobs.
Where are thumbnails stored?
Cached thumbnails live under [ProjectRoot]/Saved/LocalVault/Thumbnails. They speed up browsing and are separate from asset payload backups.
What engine and platforms does LocalVault target?
LocalVault targets Unreal Engine 5.7.0+ desktop editor workflows on Win64, Mac, and Linux. It is an editor asset-management tool, not a runtime gameplay dependency.
Troubleshooting
Why does the browser still show useful local data even when Epic sync fails?
LocalVault refreshes local cache and backup state separately from the remote Fab query. Failed or expired Fab authentication can block remote-owned metadata refresh while still leaving backup state, checksum state, restore paths, tags, collections, job history, and Explorer navigation available locally.
What usually causes backup copy failures?
The usual causes are insufficient disk space, path-length pressure from deep backup roots, missing source files, permissions, locked files, or very aggressive concurrency on slower storage.
Fix: Use a short backup root, confirm free space, ensure the source still exists, close tools that may lock files, and lower MaxConcurrentDownloads if the machine is I/O constrained.
What should I do when LocalVault warns about path length?
Move the storage root closer to the drive root, for example from a deeply nested project folder to D:\LocalVault. Long Marketplace asset paths can become much longer once they are nested inside backup, version, and payload folders.
Why is an asset marked as missing local source after sync?
Sync found the remote metadata, but LocalVault cannot currently find payload bytes in the Fab cache, project content, or LocalVault storage. Download it through Fab or create a backup once the payload is available.
What should I include in a support report?
Include the LocalVault version, Unreal Engine version, what operation failed, the visible last operation error, whether the asset is remote-only or locally stored, and the generated Saved/LocalVault/Diagnostics.json if it is safe to share.