Vellum Markdown EditorMaintained by DreamLab AI and John O’Hare. The Marketplace publisher ID is Install from the Marketplace · Download a VSIX · Visual walkthrough · Feature test report · Changelog · Report an issue A live, what-you-see-is-what-you-get Markdown editor for VS Code, with diagrams rendered by Pele and webviews locked down by a strict content security policy. Vellum is a modified version of Obsidian-style Markdown Live Editor by Thinh Vu, released under the same licence, GPL-3.0. See Attribution. PreviewThe live editor and notes sidebar in VS Code, with task lists, a table, a Pele-rendered flowchart and inline maths:
See the same note in source modeSwitch between rendered Markdown and the built-in CodeMirror source editor using the Toggle Source Mode button in the toolbar.
These screenshots show the current 0.4.0 build in a VS Code Extension Development Host on Linux. Copy the demo workspace to try the same content, or follow the illustrated flows for editing, backlinks, renaming notes, templates, selection references, and PDF export. See selection handoff to the normal VS Code editorSelect a paragraph, then run Markdown Live: Reveal Selection in Text Editor to open the same source lines beside Vellum.
The installed 0.4.0 extension opening an existing Obsidian knowledge vault in VS Code.
The
What it does
What differs from upstream
The full review, including what is not fixed, is in SECURITY-REVIEW.md. Diagram compatibilityMermaid stays the source syntax, so your documents do not change. Pele targets Mermaid 12.1
syntax and lays diagrams out with its own engine, so a diagram can look different from
Mermaid's rendering. Mermaid themes, Links and backlinksVellum links notes the way Obsidian does, and stores them as plain
Limits: Note graphMarkdown Live: Show Note Graph opens a panel beside the editor that draws the note in focus
and the notes linked to it, in either direction. Run it from the Command Palette, the Backlinks
panel's title bar or the editor's
The graph shows navigation links only: wikilinks and relative Markdown links in a note's body. Links in code and in YAML front matter are not included, as elsewhere in Vellum, so it is not an ontology view. Links resolve within one workspace folder, so the graph never crosses folders. The panel uses two components shared with other projects, both bundled in the extension and verified by SHA-256 at build time: the Canvas renderer and layout driver from Ontomark, which Ontomark Obsidian also uses, and the force layout from vowl-wasm, which is Rust compiled to WebAssembly. The layout runs in short slices in the panel itself, with no worker and no network request. If the WebAssembly module cannot start, the graph is still drawn and the panel says the notes are not arranged. ADR-VEL-001 records the design. The installed extension was checked in desktop VS Code 1.106.3 on Linux: the Command Palette opened the graph beside the live editor in an existing knowledge vault, with 118 notes, two missing targets and 400 links. The graph was then maximised for the screenshot above. The page also ran in Chrome under its real content security policy with a stand-in for the VS Code API, covering dragging, search and note activation. Desktop interaction coverage remains partial; vscode.dev, multi-root workspaces and graphs near 1,000 notes remain untested. docs/TESTING.md has the detail. Working with Claude CodeVellum is a custom editor. While it has focus VS Code has no active text editor, so an
assistant that reads "the open file and the selection" sees neither. Vellum closes that gap
for the Claude Code extension
(
Limits: with nothing selected and Vellum focused, Claude does not see which note is open; use Reveal or Send. While Claude is showing a proposed change to a note as a diff, opening that note in Vellum shows a notice in place of the editor until the diff is closed. Line mapping is exact in source view and matched by content in the rendered view, so a selection inside one of two identical lines can land on the nearer one. The link graph from a terminal (
|
| Command | Answers |
|---|---|
notes |
Every note the extension would index |
links <note> |
Links in a note and where each resolves |
backlinks <note> |
Lines in other notes that link to this one (wikilinks and Markdown links) |
mentions <note> |
The note's name as plain text elsewhere (unlinked mentions) |
unresolved [note] |
Wikilinks to notes that do not exist |
context <note> |
The link-context text, exactly as the Backlinks panel copies it |
resolve <target> [--from <note>] |
The note [[target]] leads to, written from --from |
linktext <note> |
The shortest unambiguous wikilink for a note |
graph |
Every note-to-note edge |
neighbours <note> [--depth N] [--max N] |
The bounded neighbourhood the Note Graph draws: notes within N links (1 to 3), at most --max (10 to 1,000), and whether the bound cut it short |
orphans |
Notes with no links in or out |
rename <from> <to> [--apply] |
Link edits that keep links working after moving a note or folder |
- A
<note>is a path relative to the root (notes/plan.md) or anything a wikilink could say (plan,notes/plan). --root DIRis the folder treated as the workspace folder; it defaults to the current directory. Links resolve within it, as in the extension.--jsonprints machine-readable output: lines are 1-based,start/endcolumns 0-based.- Exit status is 0 on success, 1 when a note or target is not found, 2 on a usage error.
- Rename outside VS Code with
rename --apply. VS Code only updates links for renames made in its own Explorer.git mv,mvor an agent's file tools leave the links broken.--applyrefuses to overwrite existing files or dangling symlinks, rejects moving a folder inside itself, and normalises backslash paths before applying edits. It writes the link edits first and moves the file second, so commit first or review with the dry run.
The CLI bundles to out/vellum-graph.mjs on each run. That file is gitignored and not shipped in
the VSIX. It reads files only, so unsaved edits in an open editor are not seen, and symlinked
folders are not followed.
Status
Vellum is available on the VS Code Marketplace. Version 0.4.1 adds the Note Graph and headless graph CLI; PUBLISHING.md records the release process.
The current build was exercised in desktop VS Code 1.106.3 on Linux: live/source
editing and saving, backlinks and mention linking, missing-note creation, Explorer
rename link updates, templates, selection references and reveal, link context, outside
file changes, and print export. All 79 automated tests pass, including the headless
vellum-graph queries. The test report
distinguishes desktop checks from unit coverage and lists remaining gaps.
PDF export produces an A4 document, but dark-theme colours currently give pale text on white pages. Actual Claude Code delivery and native image clipboard transfer remain unverified in this run; see the report before relying on those flows.
Install
Install Vellum Markdown Editor from the VS Code Marketplace, or run:
code --install-extension dreamlab-ai.vellum-markdown-editor
For manual installation, download the .vsix from the
latest GitHub release
and run Extensions: Install from VSIX... in VS Code.
Build from source
Requires Node 20 or later.
npm ci --ignore-scripts # install scripts are not needed to build
npm run test:unit # 79 tests
npm run package # verifies the pinned assets, then bundles into dist/
npx @vscode/vsce package # produces a .vsix
code --install-extension vellum-markdown-editor-*.vsix
npm run package fails if Pele or Paged.js does not match its pinned SHA-256
(scripts/verify-pins.mjs).
After replacing an installed build, run Developer: Reload Window from the Command
Palette. To reinstall the same version, add --force to code --install-extension.
Vellum keeps upstream's command and setting identifiers (markdown-live.*, markdownLive.*),
so existing settings and keybindings carry over. For the same reason, do not install it
alongside the upstream extension: the two would register the same commands and editor.
Use
Open a .md file, then any of:
Ctrl + Alt + Shift + M(Cmd + Ctrl + Shift + Mon macOS).- Right-click the file in the Explorer and choose Open in Markdown Live Editor.
- Click the pencil icon at the top right of the text editor.
For a guided smoke check, copy the demo workspace and follow the screenshot walkthrough. It covers editing and saving, source mode, linked notes, backlinks, safe renames, templates, slash commands, assistant references, and export. The feature test report records the observed results.
| Command | macOS | Windows and Linux |
|---|---|---|
| Open live editor | Cmd + Ctrl + Shift + M |
Ctrl + Alt + Shift + M |
| Send selection to AI assistant | Cmd + Shift + L |
Ctrl + Shift + L |
| Reveal selection in text editor | Cmd + Ctrl + Shift + T |
Ctrl + Alt + Shift + T |
| Insert link | Cmd + K |
Ctrl + K |
| Insert table | Cmd + Option + T |
Ctrl + Shift + T |
| Insert code block | Cmd + Option + C |
Ctrl + Shift + C |
| Bold | Cmd + Option + B |
Ctrl + Shift + B |
| Italic | Cmd + I |
Ctrl + I |
| Heading 1 to 6 | Cmd + Option + 1-6 |
Ctrl + Shift + 1-6 |
Settings
| Setting | Default | Purpose |
|---|---|---|
markdownLive.language |
en |
Interface language (en or vi) |
markdownLive.fontFamily |
sans-serif |
sans-serif or serif; local fonts only |
markdownLive.tableDisplayMode |
scroll |
scroll or wrap for wide tables |
markdownLive.enableSlashCommand |
true |
The / menu |
markdownLive.defaultNoteDirectory |
empty | Where new notes are created |
markdownLive.sidebarScanDirectory |
empty | Folder the sidebar lists |
markdownLive.templateFolder |
empty | Folder of note templates |
markdownLive.imageDirectory |
assets/images |
Where pasted images are saved |
markdownLive.imagePublicPath |
empty | Prefix for image paths that start with / |
markdownLive.printHeaderFormat |
{title} |
PDF header; accepts front-matter variables |
markdownLive.printFooterFormat |
{signature} |
PDF footer |
markdownLive.printPageNumberFormat |
{page} |
PDF page numbering |
markdownLive.printFontFamily |
empty | Font for PDF export |
markdownLive.printAutoTOC |
false |
Insert a contents page when exporting |
markdownLive.updateLinksOnRename |
true |
Rewrite links when a note or folder is renamed or moved |
markdownLive.aiTarget |
auto |
Assistant for Send Selection: auto, claude, antigravity, chat, clipboard |
markdownLive.claudeDelivery |
selection |
How a selection reaches Claude Code: selection, newTab, clipboard |
markdownLive.graph.depth |
1 |
How many links away from the note the Note Graph shows when it opens (1 to 3) |
Development plans
The shared graph ADR and implementation handoff record how the note graph shares its renderer and layout with Ontomark, and what is still planned: the remaining desktop interaction checks, measurements on large graphs, and compatibility with typed Ontomark vaults before Vellum claims to edit them. The Note Graph is included from 0.4.1; the 0.4.0 Marketplace release does not contain it.
Privacy
Vellum sends no telemetry and makes no network request of its own. A note that references an image on a remote server will still load that image when opened, as Markdown images do.
Attribution and licence
Vellum Markdown Editor is free software under the GNU General Public License, version 3 (LICENSE). It comes with no warranty.
- It is a modified version of Obsidian-style Markdown Live Editor 0.1.4, © 2026 Thinh Vu
(thinh-vu/vscode-markdown-editor,
commit
b90af69), licensed GPL-3.0. Upstream's own README is kept as README.upstream.md. - Modifications © 2026 DreamLab AI Consulting Ltd, first made on 14 November 2026 and listed in CHANGELOG.md and SECURITY-REVIEW.md.
- Third-party components and their licences are listed in NOTICE.md.
Vellum is not affiliated with or endorsed by Thinh Vu, Vnstock, Obsidian or Dynalist Inc. "Obsidian" and "Mermaid" are names of their respective owners, used here only to describe compatibility. Security fixes are offered back to upstream; please report problems with this version in this repository, not upstream.




