Product Documentation.

How HermesMarkdown works, feature by feature. Plain .md files, a minimalist writing surface, and optional AI assistance when you want it. No account needed, saves straight to your machine.

Get Started

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.

NoteOffline, everything except AI features and GitHub sync keeps working. Notes are never sent anywhere unless you use those features.

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, or delete browser vaults
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.

WarningA browser vault exists only in this browser. Clearing site data deletes it, and Safari may remove site data after about seven days without use unless the app is installed or storage is marked as kept (the dialog shows this and offers Keep data). Export regularly — HermesMarkdown reminds you when a vault hasn't been backed up for two weeks.

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.

WarningDropbox and iCloud can lock files mid-sync. If saves start failing inside a synced folder, pause the sync client and retry.

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 on its home feed. No example content is added.

NoteThe dialog checks for an existing folder with the same name at the chosen location and stops if one is found — it will never overwrite an existing directory.

Your first note

Start typing. On its first save the note asks which folder to go in, and it is named after its first line.

Press CTRL+ALT+N, click + on the home feed, or choose New file from the command palette. A blank note opens, ready to type, with no name prompt.

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.

The first save asks which folder the note goes in, with your default folder already selected: press Enter to accept it, or type to filter the list or name a new folder. If you dismiss the picker, the note stays an unsaved draft and nothing asks again, even after a reload; press CTRL/CMD+S when you're ready to choose.

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 current file for that.

Default folder for new notesVault root · Settings → New Notes Folder
Pick a folder and name firstNew file in folder… command
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 → Autosave. With autosave set to manual, a new note is saved only when you press CTRL/CMD+S.

Home feed

Your recent notes, newest first. It's where a vault opens.

Each row shows a note's title and the first few lines of its text. The column on the left groups notes by the day they were last changed: Today, Yesterday, the weekday for the rest of the week, then the date. If you entered your name during setup, the feed greets you with it.

At the bottom, Search or create a note… opens the command palette. Type to find a note, or type a new title and pick Create "…" to start that note. The > button opens the palette's command list, and + starts a blank note.

Move between notes↑ / ↓ or J / K
Open the selected noteENTER
SearchStart typing
Back to your open notesESCAPE
Come back to the feedHome button or Home feed command

The Home button is at the far left of the editor's header on desktop, and at the top left on phones.

In a large vault, notes appear right away in the correct order. Their previews fill in from the top down while Indexing notes… is shown. Notes that haven't changed since last time load instantly from a cache kept in your browser.

TipPrefer to reopen the notes you had open last time? Set Settings → On Vault Open to Resume last tabs. The feed is still one click away.

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.

The header shows your open notes as tabs, even when only one is open. Home is on the left, and the command palette, AI Chat (when an AI key is set), Save, and more options are on the right.

Open the dedicated Explorer with CTRL/CMD+SHIFT+E (or CTRL/CMD+B when the cursor isn't in a note, where it means Bold) or the Open Explorer command. It provides a full workspace view for browsing, organizing, renaming, moving, and deleting files and folders without covering the editor. Tasks uses a matching dedicated view; file search, tags, and headings are available through the command palette.

Home feedHome button in the header
ExplorerDedicated files view / CTRL/CMD+SHIFT+E
Quick switcherCTRL/CMD+K or CTRL/CMD+P
Command paletteCTRL/CMD+SHIFT+K or CTRL/CMD+SHIFT+P
Search filesCTRL/CMD+SHIFT+F
Palette modes# vault tags · > commands · ! tasks · @ current-note headings
Commands on or offThe > button in the search field
Explorer controlsRefresh, new note, new folder, and file actions
AI ChatCTRL+SHIFT+B
Voice inputCTRL+SHIFT+V
Keyboard shortcutsShow keyboard shortcuts command

On phones, the file overlay also has a Views tab with Smart Workspaces: saved, rule-based filters over your notes' tags and frontmatter.

Open several files side by side: choose Open in pane from the header, drag tabs between panes, and resize with the divider.

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
Undo / redoCTRL/CMD+Z / CTRL+Y
Indent / outdent list itemTAB / SHIFT+TAB
Cycle task statusCTRL/CMD+ENTER
Open helper at cursor (link, date, diagram, image)CTRL/CMD+SHIFT+ENTER
AI ChatCTRL+SHIFT+B
Voice inputCTRL+SHIFT+V
Dismiss / closeESCAPE

Tabs & files

Open ExplorerCTRL/CMD+SHIFT+E
New fileCTRL+ALT+N
Close current tabCTRL/CMD+ALT+W
Select workspace tabCTRL/CMD+1–9

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
Toggle task checkboxCLICK [ ] / [x]
Cycle lifecycle tagCLICK ‹ #tag ›

Home feed

Move between notes↑ / ↓ or J / K
Open the selected noteENTER
SearchStart typing
Back to your open notesESCAPE

Command Palette

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

Editor

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. Word wrap, line numbers, font and theme live under Settings.

Dates (2026-09-27, 27/09/2026, [[2026-09-27]], @due(…)) and @priority annotations show as small pills. CTRL+Click a date to open the date picker.

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.

Shortcodes

Type a shortcode and it expands in place.

{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}Emoji
calc(2*21)=Inline calculation
TipClick actions work without touching raw syntax — checkboxes toggle, lifecycle tags cycle on click, and wikilinks open with CTRL+Click.

Vim mode

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

Turn on Vim mode during the welcome setup, or enable it later under Settings → Appearance (or the Enable Vim mode command). It shows the current mode in a status line below the editor.

TipPress Escape to leave Insert mode and return to Normal mode.

Flow mode

Fade everything but the paragraph you're writing and keep the current line centered.

Turn on flow mode during the welcome setup, or enable it later under Settings → Appearance (or the Enable flow mode command). It's off by default.

Paragraph focusOther paragraphs fade while you write
Typewriter scrollingThe caret line stays centered

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.

NoteFlow mode only changes how the note looks. The Markdown in your file stays the same.

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
TableCopy 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.

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. 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.

NoteFormulas are stored as plain text in the Markdown file (| =SUM(B2:B5) |), so other Markdown apps show the formula, not the result. References to other notes read those notes when you open this one and refresh when you return to its pane.

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

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]
```
NoteBoth round-trip as plain Markdown — a highlighted code block is still a fenced code block on disk, a diagram is still a ```mermaid fence, and math is still $$. Nothing HermesMarkdown-specific gets written to the file.

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.

Keep typing after / to fuzzy-filter by name; ↑/↓ to move the selection, Enter to insert, Escape to dismiss.

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
Callout · CollapseCallout / collapsed callout
FrontmatterInsert or reveal the YAML block
AI Chat & AI actionsOnly when AI is configured

Tasks page

A vault-wide checklist — every checkbox task across every note, grouped by status or note.

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

- [ ] taskTo Do
- [ ] task #prog / - [/] taskIn Progress
- [ ] task #holdOn Hold
- [x] taskDone

A task counts as In Progress when it's unchecked and either tagged #prog anywhere on the line or uses the [/] checkbox marker. It counts as On Hold when it's unchecked and tagged #hold. The #prog/#hold tags — along with #todo and #done, which are purely cosmetic — are stripped from the text shown on the page.

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.

The toolbar above the list lets you switch between grouping by status and grouping by file, filter by search text, due-date bucket (overdue, due today, upcoming, no due date), or one or more custom tags. Combine tag filters to show only tasks carrying every selected tag. Sort tasks by due date, priority, status, note, or task text in either direction. A Clear button appears once any filter is active.

Click a task's checkbox to toggle it — the change writes straight back to the source line in the file, no need to open it first. Click the task text instead to open its note and jump to that line.

NoteThe Done group starts collapsed so completed work doesn't crowd out what's still outstanding; To Do, In Progress, and On Hold start expanded. Click a group header to fold or unfold it.

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. Enable Settings → Appearance → Collapse Frontmatter to start with the block folded into a small Metadata placeholder whenever you open a file; click it to expand.

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. Change note to any type below.

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💬
NoteAliases resolve to one of the types above — e.g. tldr and summary map to abstract; hint and important map to tip; check and done map to success; help and faq map to question; caution and attention map to warning; fail and missing map to failure; error maps to danger; and cite maps to quote. An unrecognized type falls back to the note style with your own label.

Voice input

Dictate straight into a note — transcription only, with a small set of spoken commands to control the session, not to format the note.

Start voice input from the command palette (Start voice input) or with CTRL+SHIFT+V to start listening. Speech accumulates in an editable preview box instead of the document itself, so you can fix a mishear before it ever touches your note. Say "insert this" (or press Enter) to commit the reviewed text at the cursor, Shift+Enter to add a line break within the preview, or Escape to discard it.

WarningVoice input uses the browser's built-in Web Speech API, which only Chromium-based browsers implement — see Installation. On unsupported browsers the Start voice input command is disabled and explains why.

Dictation is transcription only — it never inserts Markdown syntax or otherwise formats the note from speech. A small set of session-control phrases works instead, since those act on the preview buffer rather than the document:

"new paragraph" / "new line" / "new row"Blank line / line break
"period" / "comma" / "question mark" / "exclamation point"Punctuation, mid-sentence or standalone
"colon" / "semicolon"Punctuation
"scratch that" / "delete last" / "undo that"Remove the previous dictated phrase
"scratch all text" / "clear all text" / "clear everything"Clear the whole preview
"insert this/it/text" / "commit this/it/text"Commit the preview into the document
"insert this and stop listening"Commit, then turn the mic off
"stop listening" / "done listening"Discard the preview and turn the mic off
TipEverything else is transcribed as plain text, so ordinary dictation always works. Sentences capitalize themselves automatically after a spoken "period", "question mark", or "exclamation point" (a comma or colon doesn't count).

Listening stops automatically when the pane loses focus, the tab is backgrounded, or you toggle voice input off again. If the browser denies microphone access, loses its network connection mid-session, or can't find a microphone, a toast explains why and listening stops rather than retrying silently.

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 only — there is no full-text search.

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
TipPrefixes select a result type; they are not combined. For example, #project searches tags only, while >project searches commands only.

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, voice support, 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
FilesNew, import, export, copy, rename, duplicate, move, delete
FoldersNew folder (one level at a time)
EditingUndo, redo, focus, formatting, tasks, and templates
AIChat, generate note, repurpose, and selection/document actions
Home feedYour recent notes
Open ExplorerCTRL/CMD+SHIFT+E
Open Tasks—
PanesOpen in pane, split down, next/previous, close
TabsNext/previous, close current/other/all
TasksGrouping, due-date filters, and clear filters
Show / hide hidden files—
AppearanceTheme, word wrap, and line numbers
SettingsEditor font, autosave, Vim, and AI provider
GitHubCommit, push, sync, pull — GitHub vaults only
Open Vault / Close Vault / Refresh Vault—
Create new vault—
New fileBlank note, named from its first line
New file in folder… / New folderChoose a vault folder, then enter a name
Rename / DeleteUses the same prompts for files and folders
Start / Stop voice inputCTRL+SHIFT+V
Insert / discard voice previewWhen a preview exists
Open AI ChatCTRL+SHIFT+B · when AI is configured
NavigateHome, editor, settings, documentation, and welcome tour

Searching for a note that doesn't exist? The last result, Create "…", starts a new note with that title. The > button in the search field switches between searching files and searching commands.

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.

Vault

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 folder HermesMarkdown creates on its own is assets/, for images you paste or drop into a note.

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.

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.

NoteGitHub: Pull merges remote changes with your local notes. Independent edits are combined automatically; overlapping edits are left as visible conflict markers, so neither version is silently replaced. Resolve those markers before your next commit and sync.

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
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 and Smart Workspace rules.

Notes created with Generate new note with AI also get status: draft, plus scope and read_when fields describing what the note covers and when it's worth reading.

AI Features

BYOK setup

AI features need 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

Settings → Provider Config → choose a provider → paste your API key → Test Connection, then pick a model (use the refresh button to reload the list). Once a key validates, AI Chat, Generate new note, Repurpose, the Ask AI toolbar, and the AI items in the slash menu appear. The palette's AI: … actions are always listed and explain that a key is needed until one is set.

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.

NoteRemove a key with the Remove AI key button in Settings → Provider Config. AI features are disabled again until a new key is set.

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, the Open AI Chat command, or — on desktop — the 💬 Ask AI pill that appears above 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. Run them from the command palette (AI: …) or the slash menu; 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.

RewriteImprove writing · Fix spelling and grammar · Shorten · Expand
ToneFormal · Casual · Direct · Polished
StructureSummarize · Extract tasks · Create outline · Generate title
OtherContinue writing · Explain selection

Generate new note with AI drafts a complete note from a prompt and saves it as a new file.

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!.

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.

TipWhen asking for changes that add or remove rows, check the totals row afterwards. The AI is asked to keep ranges in step, but the table's own Sum column action is the most reliable way to get a range that covers exactly the rows above.

Repurpose a note

Turn the note you're editing into a blog post, social post, or newsletter draft — as new files, with the source note left untouched.

Run Repurpose note into blog / social / newsletter draft… from the command palette (only visible once a key is configured, and only with an open note that has content).

Pick one or more target formats, then Draft. The AI drafts each selected format from the current note's content and shows every draft for review before anything is saved.

Confirming writes one new file per format, named after the source note (e.g. pricing-launch-blog.md, pricing-launch-social.md). The original note is never modified.

TipThis is a single in-app action instead of a manual prompt — the AI drafts every format in one pass and nothing is written until you confirm.

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
NoteWithout an AI key configured, no note content is ever sent anywhere. Every AI action is triggered manually — nothing runs on its own.

Settings

Appearance

Theme and a small editorial typeface pair shape the editor's paper-like writing surface.

System/light/dark theme controls are available in Settings → Appearance and from the command palette. System follows your operating system automatically. The editor font is set under Settings → Typography and applies to every pane in a split workspace. Word wrap, line numbers, Vim mode and flow mode also live under Appearance.

ThemeSettings → Appearance
TypefacePlus Jakarta Sans by default, with Geist Mono, Inter, and IBM Plex Mono options
NotePlus Jakarta Sans is the source-editor default for comfortable long-form writing. Geist Mono and IBM Plex Mono remain available for technical surfaces, while Inter remains available for interface-focused typography.

Vault home & new notes

Choose what a vault opens to and where new notes go.

On Vault OpenHome feed (default) or Resume last tabs
New Notes FolderEmpty = vault root, or a folder like inbox

These live under Settings → Files. A folder that doesn't exist yet is created the first time a note is saved there. Your open notes are restored either way; On Vault Open only decides what you see first.

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

Mobile layout

Below a 768px viewport, the tab bar is replaced by a fixed file indicator bar and full-screen overlays.

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, Open Explorer, Search, Open Tasks, New file, and every other command work exactly as they do on desktop.

The Home button at the left of that bar takes you back to the home feed. On the feed, the search bar and the + button sit at the bottom, within reach of your thumb.

Explorer and Search open as full-screen overlays rather than 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

Open the file overlay (or the command palette) and choose Browser Vault to create or reopen one. On iOS, use Share → Add to Home Screen: the installed app opens full-screen and starts without a connection.

WarningiOS may clear a website's data when it hasn't been used for a while. Installing to the home screen protects it, and Export vault as zip keeps a backup in Files. To import on iOS, pick a .zip or individual notes — folder picking isn't available there. See Browser vaults.

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.

ExplorerFull-screen file-management view
Smart WorkspacesViews tab in the file overlay
Selection toolbarBold, Italic, Link only
VaultsBrowser vaults on iPhone/iPad; see Vaults on phones and tablets

On desktop, selecting text surfaces a toolbar with Ask AI. On mobile, a toolbar below the selection offers Bold, Italic, and Link instead — there's no per-selection AI toolbar on mobile yet. AI Chat and Repurpose Note are still reachable from the command palette on either platform.