Vault & data
Everything on this page is inferred from the Grimoire app sources (3ravens/Grimoire) and the in-app feature guide (src/lib/utils/featureGuide.js).
What “vault” means
In product language, vault is the encrypted note corpus / lock scope — the set of notes protected by a vault password (and optional folder passwords), not a user-chosen folder on disk.
You do not pick a vault directory on first launch. Notes are rows in SQLite, not a folder of Markdown files. Use in-app export when you want portable Markdown.
Where app data lives
SQLite (grimoire.db), LanceDB (lancedb/), encryption metadata, settings, and migration markers live under the OS app data directory for bundle id com.grimoire.app:
| OS | Typical path |
|---|---|
| Windows | %APPDATA%\com.grimoire.app\ (e.g. …\AppData\Roaming\com.grimoire.app\grimoire.db) |
| macOS | ~/Library/Application Support/com.grimoire.app/ |
| Linux | ~/.local/share/com.grimoire.app/ |
Canonical summary: README — Where app data lives. Database open path: db.rs.
SQLite vs LanceDB
| Store | Location | Holds |
|---|---|---|
| SQLite | {app_data_dir}/grimoire.db | Notes, settings, FTS, encryption metadata, and related relational data |
| LanceDB | {app_data_dir}/lancedb/ | Vector embeddings for semantic search and RAG |
LanceDB path construction: vector/mod.rs (app_data_dir().join("lancedb")).
When you save an unlocked note, the backend updates SQLite FTS for that note and the app triggers per-note vector indexing (index_note) so semantic search and assistant RAG stay aligned with what you just saved (notes.rs, wired from App.svelte). Locked notes skip the usual indexing paths until you can decrypt them again (Privacy & security).
Unused vault_path setting
AppConfig.vault_path exists in settings / config.rs and is read by the file scanner when non-empty (to reject scan roots “inside” that path). Nothing in the UI sets it. Treat it as an unused/legacy settings key — not the storage root and not something users configure. Do not point backups or “where are my notes?” answers at vault_path.
Preview build migration
Preview builds may have used other bundle ids (com.tauri.dev, dev.grimoireapp.grimoire, or app.grimoire.grimoire). On first launch after upgrading to com.grimoire.app, if the new app data directory is still empty, Grimoire copies the database and vector index from a matching preview folder. Old preview folders are left on disk. The UI may show a short migration banner you can dismiss.
See app_data_migration.rs and the README section above.
Export
From the feature guide and UI:
- Single note or folder list note: Markdown, HTML, or PDF (PDF via the print dialog).
- Bulk: Settings → Data includes exporting all notes as Markdown (locked notes are skipped).
The editor and folder list expose per-note export actions (NoteEditor.svelte imports exportNoteMarkdown, exportNoteHtml, exportNotePdfPrint). More editor detail: Note editor & Markdown.
Security (high level)
Encryption, lock semantics, audit log behaviour, and export interactions with locked content are documented on Privacy & security.
In short:
- Vault password — AES-GCM with Argon2id key derivation; encrypts notes at rest.
- Per-folder passwords — optional extra encryption scope.
- Lock / unlock — Security settings or Ctrl+Shift+L (when a vault password exists). Locked notes stay hidden until unlocked.
For legal and licensing text, use the app repo README and LICENSE.
Backups
The app does not ship a proprietary cloud backup.
- Preferred for disaster recovery: while the app is quit / idle, copy the entire
com.grimoire.appapp data directory (includesgrimoire.dbandlancedb/). - Portable text: use Markdown export (single note or bulk) for a human-readable copy that does not include the full index.
Do not run two Grimoire instances against the same SQLite file. Verify restore steps in your own environment before relying on them.
Default uninstall preserves app data; on Windows you can opt in to delete everything — see Installers & uninstall.