Product Documentation.

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

Get Started

Installation

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

Vaults are read and written through the browser's File System Access API, which only Chromium-based browsers implement. Use one of the browsers below.

Google ChromeSupported
Microsoft EdgeSupported
Brave / Arc / OperaSupported
FirefoxNot supported
SafariNot supported
NoteOn an unsupported browser, the editor still loads, but the vault picker is disabled — there's no folder to open or save to.

HermesMarkdown ships a web app manifest, so supported browsers offer an Install option in the address bar. Installing gives it its own window and app icon, but doesn't change how it works — it's the same browser-based app, not a native build.

Create a vault

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

Click the vault icon in the sidebar 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 or writes files of its own into it.

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.

In the sidebar, click the vault icon and choose New Vault, or run it 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 a blank note. 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

New File opens a blank Markdown file with its frontmatter panel ready to fill in.

Use the + button in the sidebar, or run New file from the command palette.

The frontmatter panel opens automatically on every new file, prompting for the fields defined in your vault's schema — title, status, and whatever else you've configured. Fill in what's relevant and skip the rest; nothing here is required beyond title.

titleRequired
statusDefaults to draft
Everything elseOptional
TipClosed the panel without finishing? Click the ✎ icon in the frontmatter header to reopen it at any time.

Save manually with CTRL+S, or rely on autosave — configurable under Settings → Editor. The status bar shows whether the file has unsaved changes.

Editor layout

The app opens straight into a full-screen editor — every panel is summoned, not docked by default.

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

The sidebar (files, search, tasks) stays hidden at rest. Move the mouse to the left edge to open it, or pin it with CTRL+SHIFT+E; switching between its panels happens from the command palette rather than a row of icons.

SidebarHover edge / CTRL+SHIFT+E
Command PaletteCTRL+SHIFT+P
AI ChatCTRL+SHIFT+B
Voice inputCTRL+SHIFT+V
Frontmatter panel✎ in document header

Open several files side by side: split right from the tab bar, drag tabs between panes, and resize with the divider.

Keyboard shortcuts

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

Editor

SaveCTRL+S
BoldCTRL+B
ItalicCTRL+I
UndoCTRL+Z
Exit a block, leaving a blank lineSHIFT+ENTER
Expand date pickerALT+↓
Toggle sidebarCTRL+SHIFT+E
AI ChatCTRL+SHIFT+B
Voice inputCTRL+SHIFT+V
Dismiss / closeESCAPE

Table

Move between cellsTAB / SHIFT+TAB / ARROWS
Edit focused cellENTER
New row at endENTER on last row

Navigation

Open link or dateCTRL+CLICK
Toggle task checkboxCLICK [ ] / [x]
Cycle lifecycle tagCLICK ‹ #tag ›

Command Palette

OpenCTRL+SHIFT+P
FilterKeep typing
Navigate results↑ / ↓
Run commandENTER
DismissESCAPE

Editor

Writing

Two views of the same file — Rendered shows a formatted WYSIWYG document, Source shows raw Markdown with inline highlighting. Both are editable; toggle between them anytime.

New files and vaults open in Rendered by default — type directly into a formatted document instead of raw syntax. Source is still there for anyone who wants the plain-text view: it highlights Markdown inline over the raw text as you type — headings, bold, links, and lifecycle tags render in place, without hiding the underlying syntax. Both surfaces write to the same file; switching between them never loses changes.

Toggle a pane between Source and Rendered with the eye icon in its tab bar, or change the default new files open in from Settings → Editor → Default View.

Two column widths are available from Settings → Editor: Standard and Narrow. Below the medium breakpoint, the column collapses to full width regardless of the setting.

StandardWider column, more characters per line
NarrowProse-width column
Small screensFull width, setting ignored
TipClick actions work without touching raw syntax — checkboxes toggle, lifecycle tags cycle on click, and wikilinks open with CTRL+Click.

Tables

Click inside a pipe table for a floating toolbar, and edit cells directly in the text — no separate view to switch to.

Type /table in the slash menu, or the {table} shortcode. Both drop a 3×2 starter table with the cursor in the first cell.

Click inside any table to get a floating toolbar over it. Drag it out of the way by its grip handle if it's covering something you need to see.

Move the toolbarDrag the grip handle
Add / remove row+Row / −Row
Add / remove column+Col / −Col
Cycle column alignmentLeft / Center / Right
Sort a column↑ / ↓, header cell only
Copy as CSVCSV in toolbar
Delete table× in toolbar
Cell navigationTab / Shift+Tab / Arrows
Edit a cellEnter
New row at endEnter on last row

Smart sorting recognizes dates, currency, and plain numbers regardless of column alignment. Output stays clean, auto-padded Markdown that respects left, center, or right alignment markers.

NoteTable cells hold plain text — there's no formula engine or spreadsheet-style calculation. What you type is what gets written back to the file.

Code, diagrams & math

Fenced code blocks get real syntax highlighting, ```mermaid fences render as live diagrams, and $...$ / $$...$$ render as formulas — all inline, in Rendered view.

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.

A ```` ```mermaid ```` fence is a special case: instead of highlighted text, it renders as a live diagram, with a small Diagram / Code tab in the corner to switch between the rendered view and the raw source — clicking the diagram itself also drops straight into the source, the same as clicking the tab. Invalid syntax shows an inline error instead of a blank diagram.

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

Math works the same way: type $E=mc^2$ and the closing $ instantly renders it as a formula. For a multi-line or display formula, use /math from the slash menu, or wrap it in $$...$$ yourself. Click a formula to edit its raw LaTeX; click away to render it again.

NoteAll three 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 a formula is still literal$...$ text. Nothing HermesMarkdown-specific gets written to the file.

Slash menu

Type / anywhere in Rendered view for a searchable, categorized menu of everything insertable — headings, lists, tables, code, callouts, and math.

Keep typing after / to filter by title or keyword; / to move the selection, Enter to insert, Escape to dismiss. Results are grouped under Text, Lists, Insert, and Callouts.

Tasks pane

A vault-wide checklist — every checkbox task across every note, grouped into To Do, In Progress, and Done.

Open it from the command palette (Open Tasks). The pane scans every file in the vault for Markdown task lines and lists them grouped by status.

- [ ] taskTo Do
- [ ] task #progIn Progress
- [x] taskDone

A task counts as In Progress when it's unchecked and tagged #prog anywhere on the line. The #prog tag itself — along with #todo and #done, which are purely cosmetic — is stripped from the text shown in the pane. Within each group, tasks are sorted by their note's title.

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 and In Progress start expanded. Click a group header to fold or unfold it.

Frontmatter panel

A structured form over the YAML block at the top of a file — edit fields without writing YAML by hand.

Click the ✎ icon in a document's frontmatter header to open the panel. It also opens automatically on new files.

The panel renders three fields: title, status, and tags. That's the whole schema — fixed, not configurable, kept deliberately small.

Every change in the panel writes straight back to the YAML block at the top of the file — there's no separate save step for frontmatter and no risk of the panel and the raw block drifting apart.

NoteOn a mobile screen, the panel uses a bottom-sheet layout to stay clear of the soft keyboard.

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 — search "Callout" for Note, Tip, or Warning. Slash-menu callouts start foldable with a click-to-collapse chevron next to the title; hand-typed callouts are foldable only if you add + or - yourself.

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) 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. The mic button is hidden entirely on unsupported browsers.

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 the mic button is clicked 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.

CTRL+SHIFT+P. Keep typing to filter — matching characters are highlighted, and each entry shows its own shortcut if it has one.

Every command here is a second entry point to something also reachable another way — there's no command-only behavior. The palette adapts to context: pane- and file-scoped commands only appear when there's an active pane or open file to act on.

SaveCTRL+S
New file
Export current file
Rename current file
Delete current file
Copy Markdown
Undo / Redo
Close current tab
Close all tabs
Open Files / Search / Open Tags / Open Views / Open Tasks
Toggle sidebarCTRL+SHIFT+E
Split Right / Close Pane / Close other tabsWhen more than one pane is open
Switch pane to Source / Rendered
Toggle hidden files
Toggle word wrap
Toggle tabs bar by default
Switch theme
Open settings
Start welcome tour
Open vault / Close vault / Refresh vault
Create new vault
New folderWhen a vault is open
Start / Stop voice inputCTRL+SHIFT+V
Open AI ChatCTRL+SHIFT+B · when AI is configured
Repurpose note into blog / social / newsletter draft…When AI is configured, on a note with content
Home / Documentation
Focus editor

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 with a small 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. HermesMarkdown never writes files of its own into the vault.

Frontmatter conventions

Three fields, fixed — all optional except title.

titlestring · required
statusenum · default draft
tagslist · optional

title

The note's primary identifier. The only field a note can't be saved without.

status

One of draft, review, active, or archived. Stays in sync with the document's lifecycle tag — change one and the other follows.

tags

Free-form domain tags, distinct from the lifecycle tag that mirrors status.

AI Features

BYOK setup

Every AI feature is hidden until you connect your own Anthropic or Google Gemini key — there's no default model HermesMarkdown provides.

Anthropic ClaudeSonnet, Haiku, Opus tiers
Google GeminiModels fetched from your account

Settings → AI Features → choose a provider → paste your API key → Test Connection. Once a key validates, every AI action in the editor and command palette becomes visible.

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 by clearing the field in Settings → AI Features and saving. AI actions disappear again until a new key is set.

AI commands

Highlight text in the editor to bring up a small floating toolbar — only visible once a key is configured.

Select some text and a small toolbar appears right above the selection:

💬 Ask AIType any instruction — rewrite, translate, convert, anything

It only appears while something is selected, positioned at the selection itself.

TipAsk AI opens a diff review before anything touches your note — red for removed, green for added — then Replace, Insert Below, or Cancel. Nothing is applied without a confirmed review.

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 never touches HermesMarkdown's servers at rest.

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.

Vault filesNever leave your machine
App settings (theme, font, sidebar width)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, type size, line height, letter spacing, and typeface are independent settings — each one editable on its own.

Dark/light theme is a single toggle in Settings → Interface. Type settings live in Settings → Typography.

Dark themeSettings → Interface
Text sizeCompact / Standard / Large / XL
Line heightNormal / Relaxed / Loose
Letter spacingNormal / Wide
TypefaceIBM Plex Mono, Space Mono, IBM Plex Sans, Literata (Serif)
NoteLine height only offers the default or looser — the highlighted overlay and the underlying textarea have to stay pixel-aligned, so tighter values aren't exposed.

Editor width

Standard or Narrow sets the maximum line width of the editor column.

Settings → Editor → Display → Editor Width.

StandardWider column, more characters per line
NarrowProse-width column
Below the medium breakpointFull width, setting ignored

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

Files and Search open as full-screen overlays rather than a docked sidebar panel.

Table editor on mobile

Tables edit in place, same as desktop — only the frontmatter panel switches to a bottom sheet.

Tables use the same floating toolbar and in-place cell editing as desktop — there's no separate view to switch to. Tapping the frontmatter ✎ icon instead slides a sheet up from the bottom edge, capped to a portion of the screen height so the soft keyboard never covers it. Drag the handle down to dismiss.

Cell navigation and range selection work 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.

SidebarFloating button + full-screen overlays
Frontmatter panelBottom sheet, not centered dialog
Selection toolbarBold, Italic, Link only

On desktop, selecting text surfaces a toolbar with Ask AI. On mobile, the equivalent toolbar is pared down to Bold, Italic, and Link — 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.