Markdown-first structured outline editor with mind map view — for Obsidian and VS Code.
Write standard Markdown, see interactive outlines, switch to mind maps — all backed by the same .md file.
Dual View
- Outline view: drag-and-drop, keyboard shortcuts, inline editing, search & filter
- Mind map view: powered by Mind Elixir, with drag-and-drop, zoom, and focus mode
- One-click switching between views (data stays in sync)
Round-trip Fidelity
- Your Markdown file is the source of truth
- Unmodified content preserves exact formatting (
serialize(parse(text)) === text) - Edits only touch the changed nodes
Editing
- Drag-and-drop reordering (outline & mind map)
- Inline title editing (double-click or F2)
- Keyboard shortcuts: Tab/Shift+Tab (indent/outdent), Enter (new sibling), Delete, Ctrl+Z/Y (undo/redo)
- Task checkbox toggle
- Node detail panel for editing notes and viewing content blocks
Import & Export
- Import: OPML (WorkFlowy/Mubu), FreeMind (.mm)
- Export: OPML, JSON, PNG (mind map view)
- Copy as AI Context (structured prompt for LLMs)
| Platform | Package | Notes |
|---|---|---|
| Obsidian | @mindctx/obsidian |
Community plugin, embed blocks, mobile support |
| VS Code | vscode-mindctx |
Custom Editor extension, native undo/redo integration |
Both platforms share the same core engine: @mindctx/core.
MindCtx works with standard Markdown. Headings become tree branches, lists become leaf nodes:
---
mindctx: true
heading-depth: 4
---
# Project Plan
## Phase 1
- Research
- User interviews
- Competitor analysis
## Phase 2
- Implementation
- TestingThe heading-depth setting (default 4) controls when headings become list items. See format spec for details.
| Key | Action |
|---|---|
| ↑/↓ | Navigate between nodes |
| Enter | Create sibling node |
| Tab | Indent node |
| Shift+Tab | Outdent node |
| Ctrl+↑/↓ | Move node up/down |
| F2 | Edit node title |
| Delete | Delete node |
| Ctrl+Z | Undo |
| Ctrl+Shift+Z | Redo |
| Ctrl+F | Search |
pnpm install # install dependencies
pnpm build # build all packages
pnpm test # run core engine tests (125 tests)
pnpm typecheck # typecheck all packagespackages/
core/ # Shared engine (parser, serializer, operations, undo, import/export)
obsidian/ # Obsidian plugin
vscode/ # VS Code extension
docs/
format-spec.md # .mind.md format specification
examples/ # Sample .mind.md files
- Tooling: pnpm workspaces monorepo, TypeScript 5 (strict)
- Core: unified/remark (Markdown parsing), tsup (library bundling)
- UI: Preact + @preact/signals, Mind Elixir v4 (mind map rendering)
- Build: esbuild (Obsidian plugin + VSCode extension dual-target)
- Testing: Vitest
# Develop Obsidian plugin (watch mode)
pnpm --filter @mindctx/obsidian dev
# Develop VS Code extension (watch mode)
pnpm --filter vscode-mindctx dev
# Build core only
pnpm --filter @mindctx/core build
# Run tests
pnpm --filter @mindctx/core testMIT
