Visualize your Markdown notes as interactive mind maps while keeping Markdown as the source of truth.
[!IMPORTANT] Public release mirror — implementation changes are maintained in the monorepo.
The authoritative source code and development work live in the BloomMD monorepo. This repository exists for public Obsidian release artifacts and distribution through BRAT. Use Issues for user-facing plugin bugs and compatibility reports; implementation pull requests belong in the monorepo.
See an Obsidian note as an editable Markdown map, without moving your files into a new format.
BloomMD turns Markdown structure into a visual workspace. In Obsidian, this plugin maps the note or folder you already have, lets you work with headings as nodes, and writes structural edits back to normal .md files.
The wider BloomMD product is evolving as a local-first Markdown workspace: browser demo, macOS-first desktop beta, Obsidian compatibility, templates, and optional sync/team workflows later. This repository contains the Obsidian companion plugin.
Your headings become the map. # becomes the root, ## its children, and the text under each heading stays as that node's content.
Structure edits go back into the note. Rename a node, add a sibling or child, delete a subtree, copy/paste a branch, or reparent a branch; confirmed changes rewrite the same file through Obsidian's Vault API.
Whole folders can be mapped. Visualize current folder puts notes from the current folder onto one canvas so project structure is visible across files.
Markdown links become relationships. External links, [[wiki links]], and linked mentions appear as edges and can be opened from the inspector.
Layout stays local. Node positions, viewport, and collapsed branches live in .obsidian/plugins/bloommd/data.json. Your Markdown does not accumulate layout metadata.
Renaming stays coherent. Renaming a note or folder in Obsidian carries its local map layout and any explicit sharing binding to the new vault-relative path. Markdown, cloud document identity, tokens, and workspace rights are unchanged.
Sharing is explicit. A note remains entirely local until you choose to share that individual note with a BloomMD workspace. Shared changes are synchronized as Markdown/Yjs updates; the local vault path and layout data stay local.
Read this before using the plugin in an important vault.
## Goal <!-- bloommd:id=a1b2c3 -->. These comments give nodes stable IDs and are invisible in Obsidian preview.Collaboration is opt-in for each note. It is useful when a local Obsidian note should be edited with the same people who use a BloomMD workspace; it does not turn the complete vault into a cloud vault.
https://bloommd.app.data.json. Leave the workspace ID empty to use your default
workspace, or enter the workspace ID explicitly.While offline, edits remain local and are offered to the shared mirror after the connection returns. If access is revoked, the plugin stops writing remote updates and requires a new explicit share.
moellenbeck-digital/bloommd-obsidian.BRAT keeps the plugin updated as beta releases are tagged.
manifest.json, main.js, shared-runtime.js, styles.css, and icon.png from the latest release.<vault>/.obsidian/plugins/bloommd/.BloomMD: Visualize current note - also available from the ribbon.BloomMD: Visualize current folder.BloomMD: Open current note in BloomMD.BloomMD: Share current note with BloomMD workspace.BloomMD: Stop sharing current note with BloomMD workspace.| Action | How |
|---|---|
| Pan / zoom | Drag empty canvas; use wheel or trackpad to zoom at the cursor |
| Move a node visually | Drag the node body |
| Reparent a branch | Drag the orange handle from a parent onto another node |
| Rename | Double-click or press F2 |
| Add child / sibling | Node toolbar, or Tab / Enter |
| Multi-select | Hold Shift, then drag the selection |
| Copy / paste a branch | Cmd/Ctrl+C, select destination, then Cmd/Ctrl+V |
| Undo / redo | Cmd/Ctrl+Z / Cmd/Ctrl+Shift+Z |
| Edit content | Open the inspector; edits autosave and detect external changes |
Use GitHub Issues for plugin bugs and compatibility reports. Use the beta and contact channels linked from https://bloommd.io for product feedback, feature requests, and private reports.
The public product direction is documented on https://bloommd.io: local-first Markdown maps, bidirectional editing, templates, Obsidian compatibility, desktop workflows, optional sync, and team/cloud features after the core workflow is stable.
This plugin follows that roadmap as the Obsidian companion layer. Local TODO files are not used as a separate source of truth, and this README intentionally avoids linking to private or restricted GitHub project boards.
bun install
bun run typecheck
bun run test
bun run build
bun run release:verify
This checkout is a public release mirror. Development changes belong in the BloomMD monorepo; the commands above verify a generated public snapshot. The Markdown engine is covered by unit tests for CommonMark edge cases, including Setext headings, fenced and indented code, HTML blocks, unterminated frontmatter, ATX closing sequences, and heading-depth limits. See RELEASE.md for the release process.
MIT