Guides

Data

Base

There are two types of base directories: global and vault.

Global

  • Shared between stable and nightly builds (staging and dev builds use different folders).
  • On macOS: ~/Library/Application Support/hyprnote/
  • On Linux: ~/.local/share/hyprnote/

Contents:

  • models/stt/ — downloaded speech-to-text model files
  • store.json — app state (onboarding status, pinned tabs, recently opened sessions, dismissed toasts, analytics preference, auth tokens)
  • hyprnote.json — vault configuration (custom vault path if set)
  • search/ — full-text search index (Tantivy)

Vault

  • Customizable, defaults to be the same as global base for backward compatibility.
  • You can change the vault location in Settings > General.

Contents:

  • sessions/ — one subdirectory per session, each containing:
    • _meta.json — session metadata (title, created date, participants)
    • memo.md — raw notes in Markdown with YAML frontmatter
    • transcript.json — transcription data (words, timestamps, speakers)
    • *.md — AI-generated enhanced notes (summaries, action items)
    • attachments/ — file attachments
    • Audio .wav files — recorded audio
  • humans/ — contact and participant data
  • organizations/ — organization data
  • chats/ — chat conversation data
  • prompts/ — custom prompt templates
  • settings.json — app settings

Here is how Char loads session content from disk — this shows exactly what files are read per session:

10
pub fn load_session_content(session_id: &str, session_dir: &std::path::Path) -> SessionContentData {
11
let mut content = SessionContentData {
12
session_id: session_id.to_string(),
13
meta: None,
14
raw_memo_tiptap_json: None,
15
transcript: None,
16
notes: vec![],
17
};
18
19
let entries = match std::fs::read_dir(session_dir) {

The transcript data structure stores word-level timestamps and speaker information:

83
#[derive(Debug, Clone, Serialize, Deserialize, Type)]
84
#[serde(rename_all = "camelCase")]
85
pub struct TranscriptWord {
86
pub id: Option<String>,
87
pub text: String,
88
pub start_ms: i64,
89
pub end_ms: i64,
90
pub channel: i64,
91
}
92

The app state persisted in store.json is defined by this enum — nothing else is stored there:

4
pub enum StoreKey {
5
OnboardingNeeded2,
6
DismissedToasts,
7
OnboardingLocal,
8
TinybaseValues,
9
PinnedTabs,
10
RecentlyOpenedSessions,
11
}

Logs

Application logs are stored in the system app log directory as rotating files (app.log, app.log.1, etc.).

For details on what data leaves your device, see AI Models & Data Privacy.