HermesMarkdown Documentation

How can we help?

Everything HermesMarkdown does, feature by feature. Plain .md files, saved straight to your machine.

Get Started

Open a folder or a browser vault and write your first note.

Installation

HermesMarkdown is a web app — there's nothing to download or install in the traditional sense.

Every modern browser can run HermesMarkdown. What differs is where a vault can live: opening a folder on disk needs the File System Access API, which only Chromium-based browsers implement. Everywhere else, you use a browser vault.

Chrome / Edge / Brave / Arc / OperaDisk folders, browser vaults, GitHub
FirefoxBrowser vaults, GitHub
Safari (macOS, iOS, iPadOS)Browser vaults, GitHub

Install it as an app: use Install in the address bar (Chromium), Add to Dock (Safari on macOS), or Share → Add to Home Screen (iOS). The installed app opens in its own window and starts without a network connection once it has been loaded online.

Browser vaults

A vault stored in the browser's private storage — for Safari, Firefox, phones, and tablets.

Choose Browser vaults… from the command palette (or Browser Vault on the start screen), name the vault, and click Create. It works like any other vault — folders, WikiLinks, tasks, attachments — but the files live inside this browser's storage instead of a folder you can see on disk.

Browser vaults…Create, reopen, rename (pencil), or delete browser vaults
Rename vault…Rename the open browser vault; its notes stay as they are
Export vault as zipDownload every file as a backup (any vault)
Export vault to folder…Copy the vault into a folder on disk (Chromium)
Import files into vault…Add a zip, notes, or attachments
Import folder into vault…Add a whole folder (desktop browsers)

Imports never overwrite: a file whose name is taken is saved as name (1).md. To move a vault to another browser or device, export it as a zip there and import the zip into a new browser vault.

Need the same notes on several devices? Use a GitHub vault instead: it syncs through a repository you choose.

Create a vault

A vault is any folder on disk that HermesMarkdown reads and writes Markdown files in directly.

Choose Open Vault from the command palette and pick an existing folder, or create a new one in the picker.

The browser grants HermesMarkdown direct read/write access to that folder for the session. Nothing is uploaded — files stay where they are on disk.

Everything in the folder — your notes, your subfolders — is yours; HermesMarkdown never restructures it. The only thing it adds on its own is an assets/ folder at the vault root, created the first time you paste or drop an image into a note.

Opening folders on disk needs a Chromium-based browser. In Safari and Firefox, choose a browser vault instead.

New vault

Create a fresh, empty vault — name it, pick a location, and start writing.

Choose New Vault from the command palette.

Type a vault name (this becomes the folder name on disk) and click Choose parent folder to pick where the folder will be created, then click Create Vault.

HermesMarkdown creates the folder and opens the vault, with its files in the sidebar. No example content is added.

Your first note

Start typing. On its first save the note goes into your New Notes folder, named after its first line.

Press CTRL+ALT+N, click New note at the top of the sidebar, or choose New Note from the command palette. A blank note opens, ready to type, with no name prompt.

The first time you open HermesMarkdown there is nothing to set up: you land in the editor on a blank note, ready to type. Once it has text, a bar at the bottom asks where your notes live. Choose Folder… picks a folder (you can make a new one in the picker) and saves the note there; in browsers that can't open folders it reads Keep Notes in This Browser and creates a browser vault. Not Now shrinks it to a small “Not saved to a folder” mark; until you choose, the note is kept only in this browser. CTRL/CMD+S asks the same question.

The note is saved to your vault once you finish the first line, or when you press CTRL/CMD+S. The file is named after the first line, for example Trip ideas.md. If the first line has no usable text, the date and time are used instead, like 2026-09-28 1432.md. An existing file is never overwritten: a taken name becomes Trip ideas (1).md, so nothing you typed is lost.

The note goes into your New Notes folder (the vault root unless you set one in Settings → Files), with no dialog. Move it anywhere later from the file tree.

A note you leave empty is never saved, so no empty files pile up in your vault. Renaming the first line later does not rename the file; use Rename Note for that.

Default folder for new notesVault root · Settings → Files → Vault → New Notes Folder
Start in a specific folderNew Note in that folder's menu in Files
Create from a searchType a title in the palette, then Create "…"

No template or metadata is added. Want frontmatter? Type /frontmatter to insert a starter block. See Frontmatter. Autosave can be changed under Settings → Files → Autosave: After Delay (the default, two seconds after you stop typing) or Manual Only. With autosave set to manual, a new note is saved only when you press CTRL/CMD+S. To get a copy of a note outside your vault, run Export as Markdown: it always downloads the note as a .md file and never changes the saved note.

Pinned notes

Keep the notes you come back to at hand: first in the command palette and at the top of Files.

To pin a note, right-click it in the sidebar's Files and choose Pin, choose Pin Note in the note's right-click menu (on the button at the top of the page), run Pin Note from the command palette, or press CTRL/CMD+D on it in the palette. Pinned notes are listed first, newest pin first, at the top of Files and in the command palette before you type anything. The same places unpin it. Each vault keeps its own pins; a pinned note that's renamed or moved stays pinned.

In the palette you can pin commands too (CTRL/CMD+D on a command, up to five); those are the palette's own.

Editor layout

A full-screen editor with a slim header. Everything else is in the command palette and a few dedicated views.

There's no formatting toolbar above the text. Formatting happens through Markdown syntax, keyboard shortcuts, and the slash command menu.

There's no toolbar. A quiet header sits at the top left of the page: the note's folder (a deep one shows its first and last folders, with the rest folded into …), and its name. It stays put while you type. A dot after the name shows the save state: grey while the note has unsaved changes, pulsing while it saves, red if it couldn't save. With autosave on it stays hidden while autosave is about to save, and shows only if a save runs late or fails. Hover the dot for the save button and click it to save, or to try again. Click the name to rename the note in place: press Enter or click away to keep the new name, Esc to back out. The search bar in the top-right corner (or CTRL/CMD+K) opens the command palette, where every note and command is: Save, Copy Markdown, Export as PDF or HTML, Pin Note, Settings, Documentation, Ask or Edit with AI and the rest. Each pane keeps up to 20 notes open behind the one in front, listed in the sidebar's Open Notes: opening another closes the one you looked at least recently, never one with unsaved changes, and CTRL/CMD+1–9 jumps between them (each of the first nine shows its shortcut there). Right-click a note there, or the note's name at the top, for its menu: Copy Markdown, Open in pane, Pin Note, Rename…, Move to Trash, and Close, Close Others or Close All. While the sidebar is hidden, its button sits in the top-left corner.

Search is the way around: the search bar in the editor's top-right corner, the same one at the top of every page, or CTRL/CMD+K anywhere, opens the command palette to find a note, run a command or go to a page: Home, All Notes, Tags, Tasks, Templates, Trash or Settings. CTRL/CMD+SHIFT+F searches the text of your notes. Every page has ← Editor at the top left to come back to the note you were on.

The sidebar is your library, the same on every editor page: its header names the vault (click it to switch to a recent vault or open another) beside New note and the button that hides it; below come Open Notes (the notes open in the pane you're in: click one to switch to it, or its × to close it; a dot marks unsaved changes), the Outline of the note in front (click a heading to jump to it) and Files, the vault's tree. A line sets each section apart, and each has a chevron to fold or unfold it. It sits beside the page and pushes it over rather than covering it.

Show it with the Sidebar button at the top left and hide it with the button in its own header, Escape inside it, or toggle it with CTRL/CMD+\, CTRL/CMD+ALT+S or the Toggle Sidebar command, and drag its edge to resize it (double-click the edge to reset; with the edge focused, the arrow keys resize it too). Folded sections stay folded.

Every place has its own address, so a refresh or a bookmark brings you back to it: the note in front (/editor?file=notes/plan.md), Tasks, Templates, Trash, All Notes, a tag on the Tags page, and each Settings section.

Show Files (CTRL/CMD+SHIFT+E, or CTRL/CMD+B when the cursor isn't in a note, where it means Bold) shows the sidebar if it's hidden and puts the keyboard in Files, ready to browse, rename, move or delete. On a phone, where there's no sidebar, it opens Files full screen. Tasks has its own view; file search, tags, and headings are available through the command palette.

Files offers the same actions everywhere, in the same order: New Note and New Folder, at the top and in every folder's right-click (or ⋯) menu. To start from a template, type /template in the new note. There's no Refresh button: files you add, delete or move outside HermesMarkdown show up on their own (straight away in Chrome and Edge, otherwise when you come back to the window).

SidebarShow: Sidebar button at the top left / Hide: button in the sidebar's header or Escape / CTRL/CMD+\ or CTRL/CMD+ALT+S
Show FilesThe sidebar's Files (full screen on a phone) / CTRL/CMD+SHIFT+E
Quick switcherCTRL/CMD+K or CTRL/CMD+P
Command paletteCTRL/CMD+SHIFT+K or CTRL/CMD+SHIFT+P
Search note textCTRL/CMD+SHIFT+F
Palette modes# vault tags · > commands · ! tasks · @ current-note headings · / note text
Commands on or offThe > button in the search field
Files controlsNew note, new folder, and file actions
Ask or Edit with AI…CTRL/CMD+J
AI ChatCTRL+SHIFT+B
Keyboard shortcutsShow Keyboard Shortcuts command

Open several files side by side: run Split Pane Right from the command palette (or Open in pane in the title's right-click menu), and resize with the divider. Each pane has its own title.

To be alone with the text, close the sidebar (CTRL/CMD+\); it stays how you leave it. See Focus to dim everything but the paragraph you're writing.

Keyboard shortcuts

The full reference, grouped by where you're using it.

Editor

SaveCTRL/CMD+S
BoldCTRL/CMD+B
ItalicCTRL/CMD+I
StrikethroughCTRL/CMD+SHIFT+X
Inline codeCTRL/CMD+E
Heading 1–6 (press again to remove)CTRL/CMD+ALT+1…6
LinkCTRL/CMD+SHIFT+L
Code blockCTRL/CMD+ALT+C
Find and replace in noteCTRL/CMD+F
Undo / redoCTRL/CMD+Z / CTRL+Y
Indent / outdent list item (4 spaces a level)TAB / SHIFT+TAB
New list item (Enter twice ends the list)ENTER
Plain line break (caret at the start of the next row)SHIFT+ENTER
Cycle task statusCTRL/CMD+ENTER
Open helper at cursor (link, date, diagram, image)CTRL/CMD+SHIFT+ENTER
Ask or Edit with AI…CTRL/CMD+J
AI ChatCTRL+SHIFT+B
Dismiss / closeESCAPE

Notes

Show FilesCTRL/CMD+SHIFT+E
New noteCTRL+ALT+N
Close the note in frontCTRL/CMD+ALT+W
Jump to an open note (1–9, in the order opened)CTRL/CMD+1–9
Show / hide sidebarCTRL/CMD+\ or CTRL/CMD+ALT+S
Sentence focus on / offCTRL/CMD+ALT+F

Table

Next / previous cellTAB / SHIFT+TAB
Cell below (adds a row at the end)ENTER
Move across cells, leave the tableARROWS
Leave the tableESCAPE
Insert row belowCTRL/CMD+ENTER
Delete rowCTRL/CMD+SHIFT+BACKSPACE
Move row up / downALT+↑ / ALT+↓
Move column left / rightCTRL/CMD+ALT+← / →
Row, column & table actionsRIGHT-CLICK a cell

Navigation

Open Link or DateCTRL+CLICK
Cycle task statusCTRL+CLICK [ ]
Cycle lifecycle tagCLICK ‹ #tag ›

Command Palette

Open Quick SwitcherCTRL/CMD+K or CTRL/CMD+P
Open Command PaletteCTRL/CMD+SHIFT+K or CTRL/CMD+SHIFT+P
Search note textCTRL/CMD+SHIFT+F
FilterKeep typing
Switch between files and commandsCLICK >
Navigate results↑ / ↓ or TAB
Pin / unpin the selected itemCTRL/CMD+D
Run commandENTER
DismissESCAPE

Free tools

Small, single-purpose tools that run in your browser without a vault or an account, and hand their result to the editor.

The tools page lists them. Each one is useful on its own: copy the result, or download it.

Markdown Table GeneratorEdit a table like a spreadsheet and copy clean Markdown. No syntax to remember.
Mermaid in MarkdownWrite a diagram as text, watch it draw itself, and drop it into any Markdown file.
Markdown CleanerPaste anything with text in it and get clean, standard Markdown back.
AI TokenizerSee how language models read your text: every token, highlighted, with a live count.
Token Cost CalculatorPaste a prompt or a document and see what it costs on each model, input and reply.

Open in HermesMarkdown carries the result into the editor as your draft: a table with its formulas still calculating, a diagram rendered inline, the cleaned Markdown, or the text you tokenized. If the draft already has text, the editor asks before replacing it; cancel and your draft stays as it was, with the tool's work still on its page (press Back). The draft then saves like any other: into your vault once it has a first line or, with no vault open, as a download when you save.

The work on a tool page is kept in that browser tab only, so a refresh doesn't lose it and a new tab starts fresh. Open in HermesMarkdown stays in the same tab for the same reason.

To price a note you already have, run Show Token Cost from the editor's command palette. It counts the note in the focused pane and shows what sending it costs on each model.

Editor

Writing, Markdown marks, tables, templates, tabs, split panes and PDF export.

Writing

Write Markdown with inline highlighting and click actions.

You always edit the Markdown source, styled as you type: headings, emphasis, links, tags and dates are highlighted in place, and tables render as an editable grid. Font and theme live under Settings; word wrap, line numbers and invisibles (¶ on empty lines, dots for spaces) are command palette toggles (Toggle Word Wrap, Toggle Line Numbers, Toggle Invisibles).

The text fills the whole editor by default. For a column about as wide as a page, so lines stay easy to read on a wide screen, turn off Full Width under Settings → Appearance → Typography, or run Toggle Full Width from the command palette. Changing the text size never moves the column's edges; it only changes how much fits on a line.

Dates (2026-09-27, 27/09/2026, [[2026-09-27]], @due(…), a task's @started(…) and @done(…)) and @priority annotations show as pills around their text. CTRL+Click a date to open the date picker.

Press CTRL/CMD+F to find and replace in the note, with match case, whole word and regex options. CTRL/CMD+ALT+1…6 turns the line into a heading (press it again to remove it), CTRL/CMD+SHIFT+L wraps the selection as a link and CTRL/CMD+ALT+C wraps it in a code block, or removes the block around the caret.

Paste or drop an image and it's saved to the vault's assets/ folder and linked with ![](assets/…). Paste comma- or tab-separated data outside a table and HermesMarkdown offers to convert it into a Markdown table.

Paste rich text from a web page, Google Docs, Word or an email and it arrives as Markdown: headings, lists, links, tables, bold and italics, converted the same way as the Markdown Cleaner in Free Tools. A toast offers Paste as plain text if you wanted the bare text instead, and CTRL/CMD+SHIFT+V always pastes plain text. Pastes into code blocks, bare URLs and copies with no formatting paste as usual.

Shortcodes

Type a shortcode and it expands in place. Type { for a menu of the emoji shortcodes, and keep typing a name to narrow it (or /emoji in the slash menu).

{date} · ..d · {time} · {datetime}Current date / time
..tomorrow · ..yesterdayRelative dates
{iso} · {unix} · {day} · {week} · ..logTimestamps & log prefix
{todo} · {done} · {table}Task line / starter table
{check} {error} {idea} {warn} {fix} {bug} {star} {note} {question} {info} {pin} {link} {fire} {rocket} {party} {target} {lock} {key}Emoji
calc(2*21)=Inline calculation

For running totals that keep their working, use the inline calculator instead.

Vim mode

Use familiar Vim motions and editing modes in the source editor.

Turn on Vim mode under Settings → Editor (or the Toggle Vim Mode command). Outside Insert mode, a small pill at the bottom right of the note shows the current mode and any keys of a command you haven't finished. Typing : or / opens the command line in that pill.

Focus

Dim everything but the paragraph or sentence you're writing.

Choose a level under Settings → Editor → Focus, or run one of the Focus: … commands from the command palette. CTRL/CMD+ALT+F (Toggle Sentence Focus) switches sentence focus on, and back to the level you had before. As the caret moves from one sentence to the next, the old one fades out and the new one fades in.

OffEvery line at full strength (default)
Dim other paragraphsOther paragraphs fade and the caret line stays centered
Dim other sentencesOnly the sentence you're writing stays at full strength

Nothing hides while you type, and there's no toolbar to hide: only the button at the top of the page, which opens the command palette. To be alone with the text, close the sidebar (CTRL/CMD+\); the page takes its room, and it stays that way across reloads. The sidebar stays open until you close it; turn on Close Sidebar While Writing (Settings → Editor) to have it put away as soon as you type in a note.

At the strongest level, the current paragraph is the run of non-blank lines around the caret. Everything else dims while the editor has focus and returns to full strength when you click away. Typing, deleting, undo/redo and moving with the keyboard keep the line centered; clicking or selecting with the mouse never scrolls the view.

Turn on Word Count in Settings → Editor (or run Toggle Word Count) to show the note's word count faintly in the bottom-left corner of the editor. It steps aside while you type and comes back when you pause or move the mouse. Frontmatter and Markdown marks on their own, like # or -, aren't counted.

Markdown marks

Plain typing: every Markdown character stays on screen, dimmed, exactly as it is in the file.

Markdown shows where you're writing: on the line with the caret (or every line a selection covers), each mark appears as you typed it, dimmed; everywhere else the marks step aside and you read the formatted text. Bold, italic, strikethrough and inline-code marks open up in the text. A heading's # and a quote's or callout's > hang faintly in the margin, so those lines don't move. Lists look just like their Markdown: the marker before the text, nested items indented by their own spaces, drawn as wide as a letter (Tab adds four), so copying a list gives you what you see. A task's marker takes its status colour. Typing - at the start of a line adds the space after it, so you can go straight to the item; keep typing dashes for a --- rule. Tags and dates keep their chip while you edit the text inside it.

**bold**, *italic*, ~~strike~~, `code`Marks show on the caret's line, dimmed; hidden elsewhere
# Heading, > QuoteMarks show on the caret's line, faint, in the margin; hidden elsewhere
- List itemStays as typed: a faint marker before the text, nested items indented by their spaces
- [ ] Task, 1. [ ] TaskStays as typed, the marker coloured by its status as on the Tasks page, so you can write the status ([/], [!], [x]); CTRL+Click it to go To Do → In Progress → Done
1. Numbered itemStays as typed, the number faint
> [!note] TitleShown as a rounded, tinted card; the > and [!note] show on the caret's line, so edit the type in place
> ## Heading, > - item, > | table |Inside a callout, headings, lists, tasks, tables, code and quotes look as they do outside it; Enter on a list item adds the next one
> [!note]- TitleStarts collapsed when the note opens (+ starts expanded); folding with the chevron writes the sign for you
```js … ```Fences stay as typed, language included
#tag, 2026-10-08Stay chips while you edit them
Other editorA split pane you're not typing in shows no marks

Tables

Tables always render as a clean grid you edit like a spreadsheet: click a cell and type. The pipe syntax stays out of sight.

Type /table in the slash menu, or the {table} shortcode. Both drop a 3×2 starter table and put you in its first cell.

Click any cell to edit it in place. Tab moves to the next cell, and tabbing out of the last one adds a row. Enter moves down a column. The arrow keys cross cell edges and step out of the table at its borders. The file is updated as you type, so undo, autosave and split panes always match what you see. The file on disk is still a plain Markdown pipe table.

A focused cell shows its raw Markdown, such as **bold** or links. Every other cell shows the rendered result. Ctrl/Cmd+B, I and E wrap the selection in bold, italic or code, and Ctrl/Cmd-click opens a link. A pipe you type is stored escaped, so it can't split the cell.

While you edit a table, column letters (A, B, C…) and row numbers (1, 2, 3…) appear around it, like in a spreadsheet, with the current cell's row and column highlighted. Click a letter or number for that column's or row's menu, or right-click any cell (long-press on touch). Nothing is drawn on top of the cells.

RowInsert above / below, move up / down, delete
ColumnInsert left / right, move, sum, sort, align, delete
TableEdit as Markdown, copy as CSV or JSON, delete (confirm with a second click)

Paste a range copied from a spreadsheet (or multi-line CSV) into a cell. It fills the cells from there, adding rows and columns as needed. Smart sorting recognizes dates, currency and plain numbers. Each structural change is a single undo step.

If a table looks wrong (say, a line you typed just below it turned into a row), choose Edit as Markdown from the menu or press Ctrl/Cmd+Shift+Enter in a cell. The table shows as plain pipe text so you can fix it by hand, and turns back into a grid when you move the caret out of it.

Formulas

Start a cell with = to compute it, like a spreadsheet. The cell shows the result, and clicking it shows the formula for editing. Columns are lettered A, B, C… and the header is row 1, so the first data row is row 2, matching the letters and numbers shown around the table while you edit. Sum column in the table menu adds a totals row for you. Rows you add at the end (Tab or Enter) go above the totals row, and its ranges grow to include them.

Cell & range=B2 · =SUM(B2:B5) · =AVERAGE(B2:D2)
FunctionsSUM, AVERAGE, COUNT, COUNTA, MIN, MAX, ROUND, ABS, IF, AND, OR, NOT, CONCAT
Another table=SUM(Income!B) — named by the heading above it
Another note=[[Budget]]!B5 · =[[Budget#Income]]!B5

Amounts like $2,000 or 1000 RON count as numbers, and totals keep their currency. So does a share of an amount (=B2*10%), while a ratio of two amounts (=C2/B2*100) and a count are plain numbers. Errors show spreadsheet-style (#REF!, #DIV/0!, #CIRCULAR!, #NAME? for an unknown function, #VALUE! for text where a number is needed). Rows containing a formula are treated as summary rows and are never moved by sorting.

A table takes its name from the heading right above it, with only blank lines between them. Text between the heading and the table leaves the table without a name, and formulas that refer to it show #REF!. Put a description below the table instead.

AI features know this syntax too. See AI & table formulas.

Inline calculator

Type math into any note and see the answer at the end of the line, with named values you can reuse further down.

Write an expression on its own line and its result appears in faint text at the end of that line. Give a value a name with name = … and use it on any later line of the same note. Names can be several words and ignore case, so Monthly rent and monthly rent are the same value. In this example you type the left side; the editor adds the = … results:

rent = 1200
utilities = 180
rent + utilities          = 1380
rent + utilities + 15%    = 1587
+ − * / ( )Arithmetic
450 + 15%= 517.5 · percent of the left side
15% of 200= 30
1,200 * 3= 3600 · thousands separators
rent = rent + 100Redefines a value from its old one

Only lines that are math get a result. Prose, headings, plain numbers (1200), simple definitions (rent = 1200), dates and phone numbers are left alone, and so is everything in frontmatter, code blocks and $$ math blocks. List items work: - rent + utilities still shows its total. Comparisons such as a == b or a >= b never define a value.

Results are rounded to four decimals and have no thousands separator. If a line can't be worked out, for example because it uses a name that isn't defined above it, it simply shows no result.

Code, diagrams & math

Fenced code blocks get real syntax highlighting, and Mermaid diagrams and LaTeX math render right in the note.

Any fenced code block (/code in the slash menu, or typing ```` ```lang ```` yourself) is syntax-highlighted as you type, for any language CodeMirror recognizes from the fence's language tag. Inserting one from the slash menu offers a language picker.

Insert a diagram with /mermaid or type a ```mermaid fence. Once the fence is closed, the editor shows the rendered diagram in its place. Double-click it (or use its Edit button, or press CTRL/CMD+SHIFT+ENTER with the cursor next to it) to edit the source with a live preview. From there, Open viewer lets you zoom, fit-to-width, and download the SVG. Syntax errors show in place of the diagram.

Display math works the same way: put LaTeX between $$ lines (or on one line, as $$ E = mc^2 $$), or in a ```math fence, and it renders with KaTeX.

```mermaid
graph TD
  A[Start] --> B{Decision}
  B -->|Yes| C[Do it]
  B -->|No| D[Skip it]
```

Boards

Sketch on an infinite canvas: freehand, shapes, arrows and text, saved inside a Markdown note.

Open the command palette and run New board (with a vault open). It asks for the board's name, creates Sprint plan.board.md (for a board named Sprint plan) in your New Notes folder and opens it as a canvas. If the name is taken you get Sprint plan (1).board.md. To link a new board from the note you're writing, type /board: it asks for the name, creates the board without leaving the note and inserts a link to it (a board that already has that name is linked as it is). You can also start one from an empty note: click the Board pill under the first line (from a fresh, unsaved note it asks for a name and creates a new board file), or pick Board when a missing link asks how to create its note.

A board is still a Markdown note. The drawing is stored in a fenced block, so you can write a caption above it, add [[links]] and tags, and it syncs like any other note. Drawing changes are saved automatically, like text.

Edit as MarkdownRight-click the board's title (or use the palette's Edit Board as Markdown) to see the raw file
Open as BoardSwitch back from the raw file to the canvas

Embedding notes and files

Show another note, a CSV table, an image or a code file inside this one: ![[Note name]] or /path on a line of its own.

Put ![[Note name]] on a line of its own and the note's text shows right under it, read-only. The line stays as you typed it. Add a heading to show only that section: ![[Roadmap#Q3 goals]] shows the Q3 goals heading and everything under it, up to the next heading of the same level.

A line holding only a slash and a file name works too, and not only for notes:

/Chapter 1.mdThe note's text
/data/sales.csvA table; the first row is the header
/assets/chart.pngThe image (png, jpg, gif, webp, svg, avif)
/scripts/auth.tsThe code with syntax colours (most languages, plus txt and log); long files show their first 400 lines

A file path is looked up next to the note first, then from the vault root. Start a line with / and type the start of a note's name: the rest of the best match appears in faded text, and Tab (or →) accepts it. The slash menu also lists matching notes; picking one writes its path for you. Or type /embed anywhere and pick Embed file: it puts a / on a line of its own (splitting the line if you were mid-sentence) and opens the menu there, so you can choose a note or type a file's path.

Embeds stay current: a note open in a pane shows its unsaved edits, and other files are checked again whenever you come back to the window, so a CSV you just changed in a spreadsheet app shows its new rows. Click a note's name above its embed to open it. Private notes stay hidden until you show them, and a board shows its caption.

To build one document from many, such as a book whose main note holds only /01-introduction.md, /02-analysis.md and so on, use Export as PDF or Export as Compiled Markdown: every embed is filled in, embeds inside embedded notes too, CSV files become tables, code files code blocks, and images keep working. A note that would end up inside itself is left as its line, so nothing loops.

Slash menu

Type / at the start of a line or after a space for a searchable menu of insertable content, plus AI actions when AI is configured.

The menu opens grouped by kind. Keep typing after / to search: a command is found by its name, any word of it, a short alias (/h1, /todo, /ul, /hr, /yaml, /url) or a word of its description, best match first. ↑/↓ to move the selection, Enter to insert, Escape to dismiss.

The basic blocks turn the current line into that block and keep its text: type /h2 on an empty line for a new heading, or at the end of a line to turn it into one.

Text · Heading 1–3Plain text or a heading
Bulleted · Numbered · To-do listA list item or checkbox
Quote · DividerA quotation, or a line between sections
EmojiPick from the emoji shortcodes
Link · WikiLinkOpen the link dialogs
DatePick a date from a calendar
TaskChecklist task with status, due date & tags
TableStarter table
Code · MermaidFenced code / diagram block
BoardName a new drawing board and link it at the caret (with a vault open)
A note's nameAt the start of a line, matching notes are offered to embed as /path.md
Callout · CollapseCallout / collapsed callout
FrontmatterInsert or reveal the YAML block
Template (/template, /tpl)Insert a template from your vault
AI Chat & AI actionsOnly when AI is configured

Templates

A template is a note you start other notes from. Fields like Today's date or Ask: Owner fill in each time you use it.

Make a template

Run New template… from the command palette, or press New template on the Templates page, and give it a name. It starts with a heading for the note's title and a spot where you start typing; add what you need. If a template with that name already exists, it opens instead. For ready-made ones, add a template pack.

Or turn a note you already like into one: run Save as template… from the command palette, or type /save-template in the note. Only a name is asked, prefilled from the note's first heading. The note is copied into templates/ as a plain .md file.

Edit a template like any note: open it from Files, or hover it in the template list and press the pencil (⌘E / Ctrl+E). The line at the top says Editing template. Changes save as you type and apply the next time you use it.

Add fields

A field is a spot that fills itself in when the template is used. Press + Add field in the line at the top of the template, or type /field, and pick one:

Ask a question…Asks you each time, e.g. Owner. Questions you already ask are listed first, so reusing one fills in the same answer
Today's date2026-10-05; any format, see below
Current time14:30
Note titleThe new note's title
Year, Month number, Day of the month2026, 10, 05
Day name, Month nameMonday, October; short forms Mon, Oct
Week number, Quarter41, Q4
Title as file nameThe title in kebab-case: auth-spec
ClipboardWhat you last copied
Start typing hereWhere the caret lands
Selected textWhat you had selected when inserting the template
Tomorrow's date2026-10-06; also any other day, week, month or year away
Yesterday's date2026-10-04
Long dateMonday, 5 October 2026
This week's name2026-W41
Blank to fill in…Stays in the new note as a highlighted blank, e.g. Task 1

In a template, fields show as small labelled boxes. Click one to see what's really written in the file. If something won't fill in, such as a misspelled field, the line at the top tells you.

Fill in the blanks

Blanks left by a template show as grey boxes in the new note. Press Tab to select the next one and type to replace it, or Shift+Tab to go back. Clicking a blank selects it too. When none are left, you'll see Template ready ✦. Press Esc to use Tab normally again in that note.

Where new notes go

A template only gives a note its text. A note made from a link is named by the link and goes in the link's folder if it has one ([[rfcs/auth-spec]] goes in rfcs/), else in your New Notes folder.

Use a template

  • An empty note shows your templates as small buttons under the first line; click one to fill the note. With no templates yet, a few built-in ones (meeting notes, an outline, a project brief, a book note) are offered instead, and Browse template packs takes you to the Templates page to add your own.
  • /template in a note inserts a template where you're typing. Click a template to preview it, then Use template, or press ⌘1–⌘9 (Ctrl+1–9).
  • Links: clicking a link to a note that doesn't exist yet, or the From template tab when adding a link, lets you pick a template or a blank note. The template the name points to comes first: one named after the folder (rfcs/ → rfc), one whose name starts it ("Meeting notes 2026-10-05"), or your journal for a date.

Under the hood

Templates are the .md files in templates/ at the root of your vault, directly or one folder down in a pack. The folder is made the first time you need it. They stay plain text: a field is written {{date}} and a question {{prompt:Owner}}. You can also type these by hand. Typing {{ opens the same field list:

---
status: draft
---
# {{title}}
Owner: {{prompt:Owner}}
{{cursor}}

Dates take a format after a colon, such as {{date:dddd, D MMMM}} (Monday, 5 October) or {{time:H.mm}}, using YYYY YY MMMM MMM MM M dddd ddd DD D HH H mm ss, ww (ISO week), GGGG (that week's year), Q (quarter) and [literal text]. Date math works too: {{date+1d}}, {{date-2w}}, {{date+1m}}, {{date+1y}}, and with a format, {{date+1d:dddd}}. {{selection}} is the selected text. The date parts have short names too: {{year}}, {{month}}, {{day}}, {{weekday}}, {{monthName}}, {{week}}, {{quarter}}, and {{slug}} is the title as a file name. Field names work in any case: {{Year}} is {{year}}. Any other name, like {{task_1}}, is a blank.

This week{{date:GGGG-[W]ww}} → 2026-W42
This month{{date:YYYY-MM}} → 2026-10
This quarter{{date:YYYY-[Q]Q}} → 2026-Q4
This year{{date:YYYY}} → 2026
Last week's note[[{{date-1w:GGGG-[W]ww}}]]

Use these in headings and links, for example in weekly, monthly or yearly notes. Frontmatter lines (author, status, …) are copied into each new note. Templates stay out of the Tasks page. AI Chat can write templates for you; see AI templates.

Template packs

Keep your templates in packs, add the ones HermesMarkdown ships, and keep a journal with them.

Open Templates from the sidebar, or run Open Templates from the command palette. The page lists every template in your vault and the packs you can add.

Your templates

Templates live in templates/ at the root of your vault. A pack is a folder inside it, like templates/Journal/; templates directly in templates/ are listed first, under Not in a pack. Edit opens a template itself; changes apply the next time you use it. Delete moves one template to the Trash, with Undo. To use a template, type /template in a note, pick one from an empty note's buttons, or from a link to a note that doesn't exist yet.

Each pack has New (a template in that pack), Duplicate (copy the pack under a new name, to change it without touching the original) and Delete (move it to the Trash, with Undo). New pack at the top makes an empty one. Packs are ordinary folders, so you can also rename or move them in Files, sync them, or copy one into another vault to reuse it there.

Packs to add

JournalDaily, Weekly, Monthly, Yearly and Log entry
MeetingsMeeting notes, One-on-one, Standup
WritingDraft, Outline, Book note
ProjectsProject brief, PRD, Spec, Report
EngineeringREADME, Decision record
FinanceMonthly budget, Expense log, Savings goals, Subscriptions

Add to vault copies a pack's templates into templates/ as files you own. A file you already have is never replaced: the button says how many are missing, and Added once you have them all.

The Finance templates are tables with formulas: type amounts over the zeros and the totals update. The monthly budget's summary adds up its Income and Expenses tables by name, so add or remove rows freely; in Savings goals and Subscriptions, copy a row's formula when you add one.

A journal from templates

HermesMarkdown has no daily sheet of its own: a dated page is just a note you name by date. The Journal pack's Daily template starts like this:

# {{date:dddd, D MMMM}}

Create a note named by date, like journal/2026-10-12 (or click a link to it), and pick Daily: it's suggested first for a date. Or type /template in an empty note. Weekly and Monthly link the one before with date formats, like [[{{date-1w:GGGG-[W]ww}}]] (last week's 2026-W41). Change the templates to suit yourself.

Tasks page

A vault-wide checklist — every checkbox task across every note, on a Board or in four lists: Now, Today, Upcoming and All.

Open it from the command palette (Open Tasks). The page scans every file in the vault for Markdown task lines.

- [ ] taskTo Do
- [/] taskIn Progress
- [!] taskOn Hold
- [x] taskDone
- [-] taskCancelled

A task's status is the character in its box, and nothing else: tags on the line never change it. In the editor the box shows as typed, so you can write the status by hand, like [/] for In Progress (keep one character between the brackets). Ctrl/Cmd+Click on the box or Ctrl/Cmd+Enter cycles To Do → In Progress → Done → To Do (on hold resumes, cancelled reopens), and the command palette has Task: Start, Task: Put on hold, Task: Cancel and Task: Reset to To Do.

Status changes from the box, the shortcut, the palette or the Tasks page date the task for you (a status typed by hand doesn't). Starting it adds @started(2026-10-12) (once: pausing and resuming keeps the first date), and completing it adds @done(2026-10-12), both at the end of the line. Reopening a done task removes @done; resetting it to To Do removes both, as if it was never started. The Tasks page shows them under the task, like Started 2 days ago or Done today, and you can edit or delete them like any other text.

A task can also carry a due date (@due(2026-01-31)), a priority (@priority(high|med|low)), and any number of custom #tags — all stripped from the display text and shown separately under the task. Due dates are color-coded: overdue tasks are flagged in red, tasks due today in amber.

BoardA column per status: To Do [ ], In Progress [/], On Hold [!], Done [x]. The page opens on it
NowIn Progress, then Up Next: the next five to-dos by due date
TodayOverdue, then due today
UpcomingLater due dates, one section per day
AllEvery task, grouped by status or by note

Switch lists with the control under the title; each shows how many tasks it holds, and the page remembers the last one. Now, Today and Upcoming list only open tasks (to do, in progress, on hold). Type in the search field to filter by text, or type # to pick a tag; picked tags show as chips under the field, and a task must carry every one. Search and tags apply to every list. In All, the ⋯ menu groups by status or by note and sorts by due date, priority, status, note or title, ascending or descending.

Click a task's status ring to move it on, as in the editor: To Do → In Progress → Done → To Do (on hold resumes, cancelled reopens). For any other status, right-click the ring (long-press on touch) or use the ⋯ button at the end of the row. The change writes straight back to the source line in the file, no need to open it first. To open its note at that line, click the task text, double-click the row, or choose Open Note from the same menu.

On the Board, drag a card to another column to give it that status; it moves at once. Cancelled tasks stay off the board. On a narrow screen the columns scroll sideways; the ring, the menu and swiping work there too.

After a change, the task stays where it is for a moment, already showing its new status, so you can tick off several in a row without the list moving under you; then it moves to its new place. A toast says what changed, with Undo to put the line back exactly as it was, dates included.

On a touch screen, swipe a task. Swipe right to move it forward: Start a to-do, Complete a task in progress, Resume one on hold, or Reopen a done or cancelled one. Swipe left to set it aside: Hold, or Cancel a task already on hold. The action runs once the row passes the point where its label brightens; let go before that to leave the task as it was.

Frontmatter

The YAML block at the top of a file — edited as plain text, with a shortcut to add one.

Type /frontmatter to insert a starter block with title and tags and put the cursor on the title. If the file already has frontmatter, the same command unfolds it and jumps to it instead.

---
title:
tags: []
---

The editor gives frontmatter a subtle background. Collapsed, it shrinks to one quiet Properties row at the top of the note. The title shows as itself, a status and the first few tags as chips, followed by the names of the other keys (for example Properties · Release plan · draft #work #ideas · created). Click the row, or press the up arrow from the first line, to expand it; the same row, now the top of the frontmatter panel, collapses it again. Clicking the row changes the note in front of you (in every split pane showing it) and is remembered: notes you open next start the same way.

Callout blocks

Obsidian-compatible callout syntax — a typed, foldable blockquote, written in plain Markdown.

> [!tip] Optional title
> Body text, same as a regular blockquote.

Insert one from the slash menu: /callout adds a plain [!note] callout and /collapse adds a foldable one that starts collapsed. A menu of types opens right away; pick one, or press Esc to keep note. To change it later, type any type below in place of note.

Add + or - after the type to make it foldable: + starts expanded, - starts collapsed. No suffix means a plain, non-foldable callout.

> [!warning]- Collapsed by default
> Click the title to expand.

The type is case-insensitive and any word works, but these have dedicated colors and icons:

note📝
abstract📋
infoℹ️
tip💡
success✅
question❓
warning⚠️
failure❌
danger🔥
bug🐛
example📑
quote💬

Command palette

A fuzzy-searchable list of every app-level action — open it instead of hunting for a menu.

Open it anywhere with CTRL/CMD+K (files) or CTRL/CMD+SHIFT+P (commands). On mobile, tap the active-file bar. The palette opens in Quick Open mode, where plain text searches note names and paths. To search inside notes, start with / or press CTRL/CMD+SHIFT+F.

With nothing typed it lists your pinned and recent notes, then a short menu of what you reach for most: Search Notes… (note text), Ask or Edit with AI…, New Note, Insert template…, Toggle Focus Mode; then, set apart, the pages it can take you to: Open Tasks, Open Templates, Open Settings and Open Documentation. An arrow marks a row that opens another page; Open Documentation opens in a new tab, so your note stays put. A row with a chevron opens a menu in place; Backspace in its empty search field, or the back button, goes up a level.

Plain textFiles by name or path
#All unique vault tags; choose one to filter Files
>Commands by name, description, category, or keyword
!Tasks; choose one to open its note at the source line
@Headings in the active note; choose one to place it at the top
/Note text across the vault; choose a line to open the note at that match
~Your templates; Enter inserts one into the note, CTRL/CMD+Enter starts a new note from it

Note text search ignores case and finds notes that contain every word you type, in any order (at least 2 characters; no fuzzy matching). Frontmatter isn't searched; code blocks are. Exact phrases rank first, and each note shows up to three matching lines. Private notes never appear in note text results, whatever the Privacy Mode. Right after a vault opens, a footnote shows how many notes are still being indexed.

The palette's footer lists these modes as chips (Tags, Tasks, Headings, Text, Templates, Commands): click one instead of typing its prefix, and click it again to go back to notes.

Matching is fuzzy and deterministic. Recently opened files and recently run commands receive a ranking boost. Commands that need a vault, active note, selection, AI provider or another pane remain visible when useful and explain why they are disabled. Async commands show a running state and cannot be submitted twice. Press CTRL/CMD+D to pin the selected file or command (up to five) to the top of the palette.

SaveCTRL+S
NotesNew Note, Open Note from Disk…, Export as Markdown (always a .md download, never a save), Copy Markdown, Rename / Duplicate / Move / Delete Note
FoldersNew folder (one level at a time)
EditingUndo, redo, focus, formatting, tasks, and templates
AIAsk or Edit with AI… (CTRL/CMD+J): Freeform Prompt, Improve Writing, Summarize / Structure, Insert Element
Pin NoteKeep the note first in the palette and in Files
Export as PDFPrint the note, or save it as a PDF
Export as HTMLDownload the note as a standalone web page
Show FilesCTRL/CMD+SHIFT+E
Open Tasks—
Open TemplatesYour templates and template packs
PanesOpen in pane, split down, next/previous, close
Open notesNext/previous, close current/other/all
TasksGrouping, due-date filters, and clear filters
Toggle Hidden Files / Toggle Sidebar—
Theme: Light / Dark / System—
Light Theme: … / Dark Theme: …The palette each mode uses
Toggle Full Width / Word Wrap / Line Numbers / Invisibles / Word Count / Vim Mode—
Toggle Focus ModeDim other paragraphs, or turn Focus off
Focus: …Off, or dim other paragraphs or sentences
SettingsEditor Font, Text Size, Autosave, Open Settings
GitHubCommit, push, sync, pull — GitHub vaults only
Open Vault / Close Vault / Refresh Vault—
Create New Vault—
New NoteBlank note, named from its first line
New FolderChoose a vault folder, then enter a name
Rename / DeleteUses the same prompts for files and folders
Ask or Edit with AI…CTRL/CMD+J · when AI features are on
NavigateOpen All Notes, Open Tags, Open Tasks, Open Templates, Open Trash, Open Settings, Open Documentation, Show Keyboard Shortcuts

Searching for a note that doesn't exist? The last result, Create "…", starts a new note with that title.

Use ↑/↓ (or Tab/Shift+Tab) to move through results, Enter to run the selected item, and Escape to close. The controlled clear button resets the query without closing the palette and returns focus to the search field.

Combine this with the per-context shortcuts in Keyboard shortcuts and the slash command menu (/) for inserting content, and the editor is fully operable without ever reaching for the mouse.

Export as PDF

Save a clean, printable PDF of any note. It's made on your device; the note never leaves it.

Run Export as PDF from the command palette (the button at the top of the page, or CTRL/CMD+K). A dialog shows the page setup and a preview of the pages. Save as PDF… opens your browser's print dialog; choose Save as PDF as the destination (on iPhone and iPad, share the preview or save it to Files).

PrintedHeadings, lists, task boxes, tables, code, callouts (folded ones open), Mermaid diagrams, math and vault images
Left outFrontmatter, raw HTML and comments
LinksWeb links stay clickable; wikilinks print as their text
LookAlways light, whatever your theme, with page breaks that keep rows, code blocks and headings together

Set the page up in the dialog; your choices are remembered for the next export.

PaperA4 (the default) or Letter
MarginsNarrow, Normal (the default) or Wide
Header and footerText with {title}, {date} (the export day), {page} and {pages}, e.g. {title} | {date} or {page} / {pages}. On its own it's centred; | splits it into left | right, or left | centre | right. Leave it empty for none.
Page breaksA line that's exactly <!-- pagebreak --> starts a new page. Turn on New page at each rule to break at every horizontal rule (---) too.
PreviewFollows your choices as you make them. Each page break starts a new sheet; long sections run onto more pages when printed, and faint lines show roughly where

The PDF's title comes from the note's first heading, or its file name. A note marked private can only be exported once you've shown it. CTRL/CMD+P still opens the command palette.

Export as HTML

Download any note as one standalone web page. It's made on your device; the note never leaves it.

Run Export as HTML from the command palette (the button at the top of the page, or CTRL/CMD+K). The note downloads as a single .html file named after it, ready to open in any browser, send, or put on a website.

IncludedEverything Export as PDF prints: headings, lists, task boxes, tables, code, callouts, Mermaid diagrams, math, embeds and vault images
StandaloneImages, diagrams and styles are inside the file, so it opens offline and loads nothing else (images the note links to on the web stay links)
LookA centred reading column that follows the reader's light or dark setting, and prints like the PDF

The page's title comes from the note's first heading, or its file name. Like Export as PDF, a note marked private can only be exported once you've shown it.

Vault

How notes are stored: folders on disk, browser vaults and GitHub.

Vault overview

A vault is a folder. HermesMarkdown reads and writes plain Markdown files in it and otherwise leaves it alone.

Any folder you open becomes a vault. Subfolders, file names, and organization are entirely yours — HermesMarkdown doesn't enforce a structure or move files around.

my-vault/
  projects/         ← yours
    roadmap.md
  daily/            ← yours
    2026-06-25.md

Every note is a plain .md file, optionally with a YAML frontmatter block. Open the folder in any other editor, sync it with Dropbox or Google Drive, or move it to another machine — nothing about it depends on HermesMarkdown being installed. The only folders HermesMarkdown creates on its own are assets/, for images you paste or drop into a note, and the hidden .hermes/trash/, which holds what you delete for 30 days.

Folder on diskChrome, Edge, Brave, Arc, Opera
Browser vaultEvery modern browser, including Safari, Firefox, iPhone, iPad
GitHub vaultEvery modern browser; syncs with a repository

A browser vault holds the same plain files, just inside the browser's private storage instead of a folder you can see. Nothing is locked in: Export vault as zip hands you every file, and Import files into vault… brings a zip or folder into any vault.

Organizing files

Files, in the sidebar or on the mobile Files page, works like a Finder list: select, drag, rename in place, and undo.

Click a row to select it, CMD/CTRL-click to add or remove rows, and Shift-click to select a range. Drag a selected row onto a folder to move the whole selection; hovering a closed folder while dragging opens it. Right-click a row (or use its ⋯ button) for its actions, or empty space for New Note and New Folder. Empty folders always show, so you can set up a structure before filling it.

New notes and folders, and renames, are named right in the list: type, then press Return or click away to keep the name, or Esc to back out.

↑ / ↓Move the selection (Shift extends it)
→ / ←Open or close a folder; step in or out
Return (Mac) / F2Rename
CMD+O or CMD+↓ (Mac) / EnterOpen
CMD+Backspace (Mac) / DeleteMove to Trash
CMD/CTRL+ZUndo the last rename, move or move to Trash
CMD/CTRL+ASelect all

GitHub vaults

Optionally keep a Markdown vault in a GitHub repository you control, with explicit commits instead of background uploads.

Choose Connect GitHub Vault when opening a vault. You can select a repository you can access or create a new private repository. HermesMarkdown imports Markdown files and files under .hermes/; other repository files are left outside the vault workspace.

New repositoryPrivate
Imported content*.md and .hermes/**
BranchRepository default branch
CredentialsEncrypted HttpOnly session cookie

Branches

A GitHub vault opens on the repository's default branch, commonly main. The branch remains fixed for that vault workspace. Branch switching and branch creation are not available in HermesMarkdown yet; create or select the desired default branch in GitHub before connecting it.

Commit and sync

Save your notes, then use the command palette's GitHub: Commit, GitHub: Push, or GitHub: Sync command. All three create a commit directly on the connected branch, so there is no separate local Git staging area or push step.

HermesMarkdown compares the branch head recorded when the vault was opened before updating it. If somebody else advances the branch, the app stops rather than silently overwriting their changes. Run GitHub: Pull to bring in their changes, then commit again.

Privacy and access

Connecting GitHub uses OAuth with the repo permission so the signed-in user can read and write repositories they own or can access. The access token stays server-side in an encrypted HttpOnly cookie and is never written to note files, IndexedDB, or client-side application state.

Frontmatter conventions

Frontmatter is optional and free-form. A few fields are read by the app.

titlestring · optional
tagslist · optional
privatetrue · optional
Anything elseKept as-is

title

A display title for the note. Notes save fine without it — the file name is the identifier.

tags

Free-form tags. Together with inline #tags, they feed the palette's # mode.

private

private: true, or a private tag, marks a note as private.

Private notes

Keep notes with revenue figures, keys or personal details off the screen while you share or record it.

A note is private when its frontmatter says so, so the marker travels with the plain Markdown file. Either form works:

---
private: true
---

or

---
tags: [finance, private]
---

Or type /privacy in a note: Privacy: mark as private adds private: true; on a private note, Privacy: mark as public removes it and the private tag. An inline #private in the body doesn't count.

A private note opens behind a veil showing only its title, until you choose Show note or Show all private notes this session (both last until you reload). It never shows up in note text search (/) and is never sent to AI. In lists, Privacy Mode decides; set it under Settings → Files → Privacy or with the Privacy mode: … commands:

Mask in lists (default)Pinned notes, quick open and Tasks show the title with a lock; preview and task text are bullets
Hide from listsLeft out of pinned notes, quick open and Tasks

AI Features

Bring your own key for chat, drafting, formulas and more.

BYOK setup

AI is optional and off by default. Turn it on with your own Anthropic or Google Gemini key — there's no default model HermesMarkdown provides.

Anthropic ClaudeModels fetched from your account
Google GeminiModels fetched from your account

AI is optional and off until you turn it on. Settings → AI Features → switch on AI features, pick a Provider (Claude or Gemini) and paste your API key. Then pick a Model (the refresh button reloads the list) and, if you like, Test connection. With a key set, AI Chat, the Ask AI toolbar and the AI items in the slash menu appear; the palette lists Ask or Edit with AI… while the switch is on and runs its actions once a key is set. With the switch off, none of them show.

Nothing is sent until you use an AI feature. The key is stored in your browser. Each AI request passes through HermesMarkdown's servers on its way to Anthropic or Google — the key is never logged or saved there. See Privacy model for the full picture.

AI commands

One place to talk to the AI — AI Chat — plus one-click rewrite actions, all once a key is configured.

AI Chat

Open it with CTRL+SHIFT+B, Freeform Prompt in the palette's AI menu, or the 💬 Ask AI button in the toolbar that appears on a text selection. The chat sees the current note and your selection. Type @ to reference another note by name, or use @folder:path / @vault to share an index (paths, titles, tags) of a folder or the whole vault. Attach images or files, ask follow-ups, and switch models per chat.

Nothing changes your note until you choose: each reply can be edited, then used to replace the selection (or insert at the cursor) or replace the whole note.

One-click actions

Common rewrites skip the conversation. Press CTRL/CMD+J (or choose Ask or Edit with AI… in the command palette) for one menu of four modes: Freeform Prompt opens AI Chat, and Improve Writing, Summarize / Structure and Insert Element each list their actions. Type to search every action at once (“grammar”, “table”). They work on the selection, or on the note where that makes sense. Each result opens in a diff review — red for removed, green for added — with Replace, Insert Below, or Cancel.

Improve WritingImprove writing · Fix spelling and grammar · Shorten · Expand · Continue writing · Change tone (formal, casual, direct, polished)
Summarize / StructureSummarize · Extract tasks · Create outline · Generate title · Explain selection
Insert ElementGenerate table · Generate Mermaid diagram · Generate formula

AI templates

Ask AI Chat for a template and it writes one you can save into templates/ with one click.

Mention a template in AI Chat, for example “make me an RFC template that asks for an owner”, or start a message with /template. From then on, the chat knows the template tokens. Each template in a reply shows a card with its path (for example templates/rfc.md) and any problems it spotted, like an unknown token.

Nothing is saved until you click Save template. If a template with that name exists, the button reads Replace template. Saved templates show up in /template straight away. You need an open vault to save.

The template instructions are only added to chats that mention templates, as part of the same AI request. Nothing else is sent.

Tasks in AI Chat

Ask AI Chat about your tasks, and it works from your own open tasks.

Mention tasks, to-dos or action items, or start with /tasks, and the chat sees your open tasks: in progress, to do and on hold, with their due dates, priorities and notes. Ask what to work on next, what's overdue, or paste meeting notes and ask for tasks. You get task lines with real @due() dates, worked out from today. The chat can't change your notes: apply its lines yourself.

AI Chat tools: search and tasks

With a vault open, AI Chat can look things up in your notes and tasks.

Ask about your own notes and the chat looks them up instead of guessing. It can search your notes (by text, name or tag), read a note, and list your open tasks: all of them, in progress, due today, overdue or upcoming, or by tag. Each lookup shows as a quiet line in the thread, like Searched notes for “pricing” · 3 found.

The tools only read. To put what the chat writes into a note, use Insert at cursor or Copy under its reply.

AI & table formulas

The AI knows how table formulas work. It writes totals as live formulas and never replaces your formulas with numbers.

Ask AI Chat for a table with totals, averages or counts, and you get formulas like =SUM(B2:B5) in a totals row, not numbers the AI worked out itself. The table keeps computing correctly as you edit it. You can also ask it to add or fix a formula, or explain why a cell shows #REF! or #CIRCULAR!.

Tables the AI writes keep their heading right above them, with any description below the table, so formulas such as =SUM(Income!B) can find them by name.

Every AI action that rewrites text (improve, fix grammar, shorten, change tone, expand, continue, fix document) is told to keep formulas exactly as written. It never swaps a =SUM(...) for its current result.

AI & your notes' syntax

The AI writes tasks, links and callouts the way HermesMarkdown reads them, and keeps them intact when it rewrites text.

AI Chat, Continue writing and new notes from a prompt know HermesMarkdown's own syntax. Tasks get their status in the box ([ ] [/] [!] [x] [-]), never a #todo tag, with @due() and @priority() at the end of the line. Links to other notes are [[wiki links]], and callouts use the > [!tip] form.

Every action that rewrites text keeps task boxes, their @started() and @done() dates, links, tags and callout headers exactly as written.

Privacy model

No AI request leaves your machine unless you've configured a key, and the key itself is never stored on HermesMarkdown's servers.

HermesMarkdown is local-first: your vault is read and written directly from the browser, with no upload step and no HermesMarkdown database holding your notes.

Local vault filesNever leave your machine
GitHub vault filesSent to GitHub only when you commit or pull
AI requestsRelayed to Anthropic / Google, not stored
App settings (theme, font, editor layout)Browser localStorage / IndexedDB
AI API keyBrowser localStorage

Settings

Appearance, Home and vault options, and keyboard shortcuts.

Appearance

Pick a theme, the font you write in and the text size.

System/light/dark theme controls are available in Settings → Appearance and from the command palette (Theme: Light, Theme: Dark, Theme: System). System follows your operating system automatically. Each mode has its own color theme: Paper (the default), Solarized or Plain for light, and Ink (the default), Nord or Graphite for dark. Paper and Ink are warm paper and ink (Ink is the dark paper); Plain and Graphite are neutral, with no tint. Every theme has a faint paper grain. You can also pick them on the home page before you start. Each theme has its own accent hue, kept to the caret, text selection, focus rings, toggles and selections; icons and buttons stay quiet ink on paper. Settings → Appearance shows the colors for the mode you picked, and both under System; the command palette also has Light Theme: … and Dark Theme: …. The editor font, text size and Full Width (on by default) are set under Settings → Appearance → Typography and apply to every pane in a split workspace. Vim mode and Focus are under Settings → Editor. Word wrap, line numbers and invisibles (¶ on empty lines, dots for spaces) are command palette toggles: Toggle Word Wrap, Toggle Line Numbers, Toggle Invisibles.

ThemeSettings → Appearance
Light / Dark themePaper, Solarized, Plain / Nord, Ink, Graphite
SidebarThe Sidebar button, CTRL/CMD+\, CTRL/CMD+ALT+S or Toggle Sidebar: navigation, notes and the vault's files on the window's left edge, on every editor page (desktop)
TypefaceQuattro by default, Duospace or Geist Mono

New notes & templates

Choose where new notes go. Templates always live in templates/.

New Notes FolderEmpty = vault root, or a folder like inbox

New drafts are saved there, and so are notes made from a template or a link that names no folder. It lives under Settings → Files; a folder that doesn't exist yet is created the first time a note is saved there.

Templates are always in templates/ at the root of your vault, made the first time you need it: every .md file directly in it, or one folder down (a template pack), is a template.

Keybindings

Shortcuts are fixed — there's no remapping screen yet.

Every shortcut in HermesMarkdown is built in and not user-configurable. See Keyboard shortcuts for the full reference grouped by context.

Mobile

Using HermesMarkdown on a phone or tablet.

Mobile layout

Below a 768px viewport, the palette button becomes a fixed file indicator bar, and Files opens full screen.

A thin bar stays fixed at the top of the screen showing the active file's name and save status — there's no keyboard shortcut for the command palette on mobile, so tapping this bar is the one always-present way to open it. From there, Show Files, Search, Open Tasks, New Note, and every other command work exactly as they do on desktop.

Files and Search open full screen rather than as docked panels.

Vaults on phones and tablets

iPhone and iPad use browser vaults; install the app to your home screen to write offline.

iPhone / iPad (Safari)Browser vault or GitHub vault
Android (Chrome)Folder on the device, browser vault, or GitHub vault
Other mobile browsersBrowser vault or GitHub vault

From the command palette, choose Browser vaults… to create or reopen one. On iOS, use Share → Add to Home Screen: the installed app opens full-screen and starts without a connection.

Table editor on mobile

Tables edit in place, same as desktop.

Tables use the same in-place cell editing as desktop. Tap a cell to type in it, and tap a column letter or row number (or long-press a cell on Android) for the table menu.

Cell navigation works the same as desktop. Only the surrounding chrome changes.

Differences from desktop

Mobile trades some desktop-only surfaces for touch-first equivalents — the underlying editing model is unchanged.

FilesFull screen instead of the sidebar
VaultsBrowser vaults on iPhone/iPad; see Vaults on phones and tablets

Selecting text shows the same toolbar on both: Turn into (text, headings, lists, quote), Bold, Italic, Link, and Ask AI when AI is set up. On desktop it sits above the selection; on mobile it sits at the bottom of the screen, above the keyboard, clear of the phone's own Copy/Paste bar. AI Chat is also in the command palette.