Repository navigation
Troubleshooting
The build is unsigned. Right-click the app → Open, or run:
xattr -cr /Applications/SnipVault.appSee Installation for details.
Unsigned build. Click More info → Run anyway.
Symptom: running any pnpm command triggers a reinstall, prompts to purge node_modules, or crashes (e.g. ERR_PNPM_ABORTED_REMOVE_MODULES_DIR_NO_TTY, or a libuv assertion on Windows).
Cause: pnpm's isolated node_modules bakes the project's absolute path into node_modules/.modules.yaml. If you move or rename the project folder after installing, the recorded path no longer matches and pnpm considers the store invalid.
Fix: reinstall in the new location.
rm -rf node_modules
pnpm install --frozen-lockfileSymptom: failed to read plugin permissions: failed to read file '…\<old path>\src-tauri\target\…' — the path is the project's previous location.
Cause: the Rust target/ cache stores absolute paths from before the folder was moved.
Fix: clear the Rust build cache and rebuild.
cargo clean --manifest-path src-tauri/Cargo.toml
pnpm tauri:buildCause: pnpm 11 requires Node ≥ 22.13; you're on an older Node (e.g. 20).
Fix: upgrade Node to 22+. In CI, set node-version: 22.
Harmless Turbopack probe warning on Windows. The dev server still starts and serves normally; you can ignore it.
Usually the same "moved folder" problem above, or a partial install. Re-run:
pnpm install --frozen-lockfile
pnpm exec tsc --noEmitThey use separate database files by design (see Data Storage). The web app reads ./data/snippets.db; the desktop app reads <local data dir>/snipvault/snippets.db. Copy the snippets.db file between locations to move data.
(v2.2.0 — see Syncing)
-
Couldn't reach the server — the URL is wrong or the server isn't running. Check the host/port and confirm
curl http://<host>:3000/api/healthresponds from that machine; make sure nothing (firewall/VPN) is blocking the LAN. -
Server rejected the token — the token doesn't match the server's
SNIPVAULT_TOKEN. Re-enter it in Settings → Sync server. (If the server was started with no token set, the API is open and no token is required.)
On the server, check that the container is healthy and read its logs — docker ps (look for (healthy)), docker logs -f snipvault, or a log viewer like Dozzle. See Monitoring the server in Syncing.
Both are expected consequences of the sync rules. Deletions and edits are resolved by most-recent updated_at across machines, so a machine with a newer copy will win on the next sync. If an edit keeps reverting, one machine's clock is likely wrong — sync compares timestamps, so keep clocks roughly aligned. Deleting again (or re-editing) on the machine you consider authoritative, then syncing, resolves it.
The matching runner/agent isn't online. For a laptop runner (e.g. a MacBook), it must be powered on, connected to your network/VPN, and running its runner agent. The GitLab release job waits for all build jobs, so one offline runner blocks the release.
Using SnipVault
Development
Operations