Getting started

From an empty folder to reading your own history: build the app, open a backup, and know exactly what happened to your data along the way. Nothing here needs an account, a network, or anyone's permission.

Prerequisites

Pure Vault is a Go and Wails v2 desktop application with a React interface. Everything it needs is free:

  • Go 1.26.6 or newer.
  • Node.js 22.22.2 and up within the 22 line, 24.15.0 and up within the 24 line, or 26 and newer.
  • The Wails v2 platform prerequisites for your operating system, listed in the Wails installation guide. On Linux this includes the WebKitGTK 4.1 development package.

Wails renders through the WebView your operating system already ships, so the build stays small; the verified macOS ARM64 build came out at 13 MB.

Build and run

Building requires access to the private source repository.

For a development session with hot reload:

go install github.com/wailsapp/wails/v2/cmd/wails@v2.15.0
cd frontend
npm ci
cd ..
wails dev

For a native application:

wails build -clean

On Linux, add the WebKitGTK tag:

wails build -clean -tags webkit2_41

If you want the same confidence the maintainer records before a handoff, run the verification set:

go test ./...
go test -race ./...
go vet ./...
cd frontend
npm run check
npm run test
npm run build

Try the fictional sample

The empty state offers a fully fictional sample: a mixed phone export with conversations, notes, contacts, events, media, bookmarks, and files. It exists so you can learn every viewer, and every honest edge like partial imports and unknown skip counts, without pointing the app at anything personal.

The Pure Vault start screen with Open file and Open folder buttons and an Explore a fictional sample link.
The start screen. The sample is labeled fictional everywhere it appears.

Sample content is visibly labeled, down to the source line reading "Pure Vault sample generator". If a screen ever looks like someone's real archive, it is not; the people in it, like Mara Vale and Avery Rowan, do not exist.

Open a backup

Use Open file for a single export file, or Open folder for an export directory or a folder of media. ZIPs open as files and are read in place, never extracted. Native pickers are the only way to grant access, and the grant is exact:

  • Selecting one file authorizes only that file. If a conversation references sibling attachments, open the containing export folder to preview them.
  • Each selection becomes its own numbered backup instance in the left rail, with its categories, counts, parse result, and evidence tier.
  • Keyboard people are covered: Cmd/Ctrl+O opens a file, Cmd/Ctrl+Shift+O a folder, and Cmd/Ctrl+F focuses search.

Formats are detected from content, so a Takeout-style folder can legitimately produce messages, notes, contacts, and media at once. Check the parse result before trusting your read: partial imports say so, list their parser notices, and report unknown skip reconciliation as unknown.

The media viewer showing a fictional album with an image preview, captured date, dimensions, and file size.
A media folder read as an album, with source metadata beside the preview. Fictional sample data.

Export normalized copies

Reading happens in place, but you can write a normalized copy of any open collection when you want one file you control:

  • Export JSON preserves the full envelope: items, provenance, diagnostics, and evidence, with exact normalized strings.
  • Export CSV is a spreadsheet-friendly presentation with category-appropriate columns. Cells that begin with formula characters are defensively prefixed, and the JSON export remains the fidelity-preserving one.

Every export starts with a native save dialog, writes to a brand-new file, and refuses to overwrite anything, including the source itself. Nothing is exported unless you ask.

Clear a workspace

Each open backup is a process-memory workspace. Clear this workspace forgets its imported content, source path, search state, and media previews; the original files are untouched because the app only ever had them read-only. Quitting releases every workspace at once.

Sessions intentionally do not resume: on the next launch there is no cached content, only your display preferences. If you switch on Remember opened backups, the app also keeps a short list of where past backups live so you can reopen one without hunting through a picker again; it stores pointers and detection details, never anything from inside the backup. One honest caveat: clearing releases process references, which is not cryptographic memory erasure. An operating system can hold bytes in swap or crash artifacts beyond any application's reach.

Pure Vault at a narrow window width, with the backup rail, category counts, and search results in a compact layout.
The same workspace at a narrow width. The source rail and parse result stay in reach. Fictional sample data.