File format
Last updated 20 October 2026
How MindLake stores each note as a plain Markdown file with YAML frontmatter, what the other files in your vault are for, and what it keeps outside the vault.
One note, one file
Each note is a .md file named after its title, in the folder it’s filed in; notes you haven’t filed are in Inbox. If the folder already has a file with that name, MindLake adds the first eight characters of the note’s id, as in Weekly sync 5e1f3c2a.md. Renaming a note renames its file and updates [[links]] to it across the vault.
A note has three parts: frontmatter between two --- lines, the body, which starts with the title as a # heading, and a ## Transcript section at the end. Here is a recorded meeting:
---
id: 5E1F3C2A-7B4D-4C8E-9A61-2F0D8B3E4C57
title: Weekly sync
created: 2026-09-21T09:30:00Z
updated: 2026-09-21T10:12:44Z
duration_minutes: 31
duration_seconds: 1874
source: inPerson
audio_file: Weekly sync.wav
folder: Work
participants: [Sam Carter, Priya Shah]
tags: [team, launch]
speakers: ["Speaker 1 => Sam Carter", "Speaker 2 => Priya Shah"]
---
# Weekly sync
The launch review moves to Thursday.
- [ ] Send the updated timeline @sam 📅 2026-09-24 ⏫
- [x] Book a room for Thursday ✅ 2026-09-21
## Transcript
Sam Carter: Morning. Shall we start with the launch date?
Priya Shah: Yes. Thursday works for the review.Frontmatter
MindLake writes these keys in this order, and leaves out any that a note doesn’t use.
| Key | Meaning |
|---|---|
id | The note’s permanent identifier. It never changes, even when you rename the note. |
title | The title, matching the # heading at the top of the body. |
created | The note’s date, in ISO 8601 (UTC). Older files may use date instead, which MindLake still reads. |
updated | When the content last changed. If two copies of a note turn up, the newer one wins. |
duration_minutes | The recording’s length in whole minutes, or 0. duration_seconds, present only with a recording, gives it in seconds. |
source | The note’s type: inPerson (Meeting), thought (Idea), plan (Plan), details (Reference) or media (Media). |
audio_file | The file name of the note’s recording, in the same folder. |
calendar_event | The calendar event the note belongs to, by the calendar’s own id. |
pinned | true when the note is pinned. |
folder | Where the note is filed. If this disagrees with the file’s location, the location wins. |
type | A type label of your own, for a type that isn’t one of the five. |
participants | The people in the note, such as attendees and named speakers. |
tags | The note’s tags. |
sources | The note’s sources, as paths from the top of the vault. |
sources_used | Sources already used in the note. transcript_used: true says the same of its transcript. |
sources_log | A readable line per source: its name, kind, stage and file paths. |
speakers | The name, and contact if linked, given to each speaker the transcriber found, such as Speaker 1. |
The transcript section
Everything after the first ## Transcript heading is the note’s transcript, so don’t use that heading for anything else. There’s one paragraph per turn, each starting with the speaker and a colon, and every turn has its own line, a short reply included. Naming a speaker changes their label there and records the name in speakers. A note with no transcript has the line _No transcript yet._ under the heading.
Tasks
A line starting - [ ] is a task, wherever it sits in a note, and - [x] is a done one. Details go after the text as plain-text emoji tokens that other task tools read too:
| Token | Meaning |
|---|---|
📅 2026-09-24 | Due date |
⏳ 2026-09-22 | Scheduled date |
✅ 2026-09-21 | The day it was done. MindLake adds it when you tick a task on the Tasks page, and removes it when you untick it. |
⏫ 🔼 🔽 ⏬ | High, medium or low priority, or Backlog: a real task that isn’t for now |
🔁 every week | How it repeats, in words after the symbol |
#tag @person | Tags and people, kept in the text. A task also carries its note’s tags. |
The quick-add bar on the Tasks page turns words such as “tomorrow” or “p1” into these tokens for you. See Tasks.
Recordings and word timings
A note’s recording sits beside it under the same name, such as Weekly sync.wav next to Weekly sync.md, and audio_file names it. Renaming the note renames the recording too.
After transcription, Weekly sync.words.json joins them. It holds each word’s timing and confidence and the speaker names, which is what lets MindLake play a word when you click it, on any of your Macs. If a transcription pass hears no speech in the recording, the file says so instead, tied to the recording’s size, so MindLake stops offering to transcribe it; a different recording later saved under the same name isn’t taken for silent. MindLake writes this file; leave it as it is.
Keep audio, in Settings ▸ Audio ▸ Recordings, decides how long recordings stay. When one is removed, its transcript stays in the note.
Sources
Files you attach to a note live in the vault’s Sources folder, in a folder named after the first eight characters of the note’s id in lower case: Sources/5e1f3c2a for the note above. Text MindLake pulls out of a file sits beside it as the whole file name plus .extracted.md, as in report.pdf.extracted.md. The sources key lists them, and nothing in Sources ever shows up as a note. See Sources.
Pictures and files in a note
A picture, video or other file shown in a note is a line of its own, written  or ![[path]]. How it’s laid out is saved in that line, after a |: wide shows it full width on its own row, and 2x2 lays out the group of files it sits in as two big columns instead of small tiles. Full Width and 2×2 Grid, in the right-click menu or the buttons you see when you point at one, write these for you.

![[demo.mp4|2x2]]Lists and canvases
A list is a folder, not a single file. Its rows are in data.csv, its columns and their types in schema.json, and any text you write under the grid in notes.md. Any app that reads CSV can open the rows. A canvas is one .canvas file in the open JSON Canvas format, which other tools read too.
data.csv
schema.json
notes.mdLocked notes
Locking a note replaces its .md file with an encrypted .mdenc file in the same folder, named by the note’s id rather than its title. Only the id and the last-updated time can be read without the key; the title, frontmatter, body and transcript are all inside the encryption. A recording on a locked note isn’t encrypted. See Notes and the editor.
Other files
| File or folder | What it holds |
|---|---|
Inbox | Notes you haven’t filed. |
Screenshots | Screenshots, unless you attach them to a note. |
Screen Recordings | Videos of the screen you record from the menu bar. No note is made. |
Voice | Audio you record with Voice in the menu bar, without making a note. |
.originals | Hidden, beside a picture you’ve marked up: its untouched original. |
Chats | Conversations with the AI assistant, one Markdown file each. |
_Templates | Note templates. Pick another folder in Settings ▸ Editor ▸ Templates. |
snippets.json | Your snippets. |
settings.json | A copy of your settings, read back by a new install of MindLake. |
lexicon.txt | Names and terms transcription checks against, one per line. |
.mindlake | Hidden. Marks the folder as a vault. |
.mindlake-mirror.json | Hidden. The vault folders mirrored with git, if you use synced folders. |
Kept outside the vault
Some things MindLake keeps on each Mac, outside the vault, so they never sync or travel with it. Paths are in your user Library.
| What | Where |
|---|---|
| Contacts | MindLake’s database in Application Support/Mindlake. They stay on that Mac and never sync. |
| Search index | Application Support/Mindlake/Search/index.sqlite. It is rebuilt from your notes, and the search-by-meaning half (off unless you turn it on) is made on the Mac with macOS’s own sentence model. |
| Clipboard history | Application Support/Mindlake/clipboard-history.json, with macOS file protection: text only, the last 200 items. Turning it off clears it. |
| Screenshot text index | Caches/co.goodanalysis.mindlake/capture-text: the text read from your pictures for /ss, read on the Mac. |
| AI edit history | Application Support/Mindlake/EditHistory: the last 20 versions of each note before an AI edit. |
| Synced folder pairs | Application Support/Mindlake/mirror.json, for that Mac only. |
| Sources thumbnails | Caches/Mindlake/SourceThumbs: the pictures the Sources grid shows, so it fills in at once after a relaunch. Once the folder passes 400 MB, the oldest go until it is under 300 MB. |
| Settings | The Mac’s own preferences for MindLake, with a copy in the vault’s settings.json. |
| AI keys, sign-ins and the licence | The macOS Keychain. |