Solomd
A markdown editor β and the bridge to your LLM. Local-first, MIT, ~15 MB. Bundled MCP server lets Claude Code / Codex / Cursor drive your vault directly. 14 AI providers BYOK.
Ask AI about Solomd
Powered by Claude Β· Grounded in docs
I know everything about Solomd. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
SoloMD
The editor where agents live.
π δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄ Β· Deutsch Β· FranΓ§ais Β· EspaΓ±ol Β· PortuguΓͺs Β· Italiano Β· πͺ Gitee mirror β (faster downloads from China)
Download v4.0 Β· Launch post Β· How we built it Β· Website Β· Security
Your notes live in a folder. SoloMD is the editor on top β with a first-class agent surface inside the editor, and the MCP endpoint Claude Code / Cursor can drive from outside. Same .md files. Chat with your vault. Schedule recipes that run when you're not at the keyboard. Hand the same vault to any MCP client.
Built on Tauri 2 + Vue 3 + CodeMirror 6. Universal macOS dmg ~32 MB. Free, MIT, no subscription, no SoloMD-hosted servers. Your notes, AI keys, embeddings index, and git history all stay on your machine.
Three halves of one product
The editor. WYSIWYG live edit (Typora-style), tabs + split panes, KaTeX + Mermaid, image paste to _assets/, slideshow mode (ββ₯P), Vim mode, Hunspell + CJK proofread, semantic search (ββ§F), wikilinks + backlinks, Pandoc export. CJK encodings (GBK / Big5 / Shift-JIS) auto-detected.
The endpoint. A bundled solomd-mcp binary exposes the same vault to any MCP client β 13 tools out of the box, including 5 SoloMD-only ones (autogit_log, autogit_diff, autogit_rollback, sync_status, share_url) that no other markdown server has. v4.0 adds --workspace path1 --workspace path2 federation β one MCP session, many vaults. Plus a solomd agent <prompt> CLI that hands off to Claude Code / Codex CLI with the MCP pre-wired.
The agent surface (v4.0). Right-side Agent Panel: streamed chat-with-vault, [[wikilink]] citations, tool-call cards inline, Insert / Copy buttons drop the reply into the active note. Plus declarative recipes as YAML in <workspace>/.solomd/agents/*.yml β cron / on-save / on-commit / on-tag-add / manual triggers. Every agent write lands on its own AutoGit branch you accept or reject before it touches main; write-cap default 5; refuses to start when the working tree is dirty; replayable trace.jsonl per run with read_agent_trace MCP tool.
| Feature | |
|---|---|
| Agent Panel (v4.0) | Streamed chat-with-vault peer to Outline / Backlinks / Tags / History. Tool-call cards expand inline; reply Insert / Copy to active editor; run history persists as plain markdown under .solomd/agent-runs/. |
| Scheduled recipes (v4.0) | YAML jobs in your vault. AutoGit branch sandbox + accept/reject UI before merge. Per-run write-cap (default 5, ceiling 50). 11-recipe cookbook ships in-tree. |
| Replayable trace (v4.0) | trace.jsonl per step (prompt / model_call / tool_call / tool_result / git_commit). Replay-from-step rewinds and re-executes. |
| Workspace federation (v4.0) | solomd-mcp --workspace path1 --workspace path2. One Claude Desktop session, many vaults. MCP profiles UI in Settings β Integrations. |
| Ollama first-class (v4.0) | Auto-detect at localhost:11434. Three model presets (qwen2.5:1.5b/7b/14b). provider: local recipe alias for zero-cloud-cost autonomous loops. |
| AI rewrite, BYOK | 14 providers β OpenAI Β· Claude Β· Gemini Β· DeepSeek Β· Qwen Β· GLM Β· Kimi Β· Doubao Β· SiliconFlow Β· OpenRouter Β· Mistral Β· Groq Β· xAI Β· Ollama. Direct vendor calls. Keys in OS keychain. |
| GitHub-backed sync | Push your vault to a private GitHub repo on every save. Optional E2EE (Argon2id + XChaCha20-Poly1305). GitLab / Gitea / any HTTPS git URL works too. |
| AutoGit per note | Every βS is a commit in a local .git inside the workspace. libgit2 vendored, no system git needed. Never auto-pushed. |
| MCP server bundled | solomd-mcp ships in the install. 13 tools (8 generic + 5 SoloMD-only). stdio only, no network port. Read-only by default; --allow-write opt-in. |
| REST API (v4.0) | Localhost only, token auth. Same surface as MCP for clients that don't speak MCP yet β Alfred / Raycast / n8n / your own scripts. |
| BYOK cost meter (v4.0) | Per-provider running tokens-spent counter, opt-in. Settings β Integrations. |
| Cloud-folder mode | If your vault lives in ~/Library/Mobile Documents/... or ~/Dropbox/..., SoloMD detects it and adds cross-device session restore on top β the OS already does the file sync. |
| Public read-only share | Command palette β copy solomd.app/share/?repo=...&path=... link. Renders any file in your public GitHub repo, no SoloMD account needed to view. |
Use it
After installing SoloMD on macOS / Linux:
1. Chat with your vault. Open the right-side Agent Panel (ββ§P β "View: Toggle Agent Panel" if hidden). Streamed multi-turn against your notes; tool-call cards show every read/write inline. Reply too long? Insert drops it into the active note at the cursor (replaces selection); Copy to clipboard.
2. Schedule a recipe. Settings β Recipes β Browse cookbook. 11 starters ready: weekly review, daily summary, TODO extraction, translation pass, citation cleanup, CJK proofread agent, link-rot detector, frontmatter normalizer, outline-to-blog, refactor pass, weekly tag triage. Install one, edit the prompt, run it.
3. Drive the same vault from another LLM client. One-shot:
# Print the MCP config snippet for your AI client.
solomd mcp-config
{
"mcpServers": {
"solomd": {
"command": "/Applications/SoloMD.app/Contents/Resources/solomd-mcp",
"args": ["--workspace", "/Users/me/Documents/SoloMD"]
}
}
}
Paste into Claude Desktop / Cursor / etc. For multi-vault federation, repeat --workspace:
"args": [
"--workspace", "/Users/me/Documents/SoloMD",
"--workspace", "/Users/me/Documents/work-notes"
]
4. Or hand a prompt to claude / codex CLI directly:
solomd agent "rewrite this week of dailies into a weekly review and commit it"
Path-traversal guarded. No network port. The LLM only sees what you point the workspace at.
Install
Latest release: v4.0.0.
macOS β universal dmg (Apple Silicon + Intel, signed + notarized)
brew install --cask zhitongblog/solomd/solomd
Or download the dmg directly:
https://github.com/zhitongblog/solomd/releases/latest/download/SoloMD_4.0.0_universal.dmg
Or one-line shell install:
curl -fsSL https://solomd.app/install.sh | bash
Windows β x64
SoloMD_4.0.0_x64_en-US.msiSoloMD_4.0.0_x64-setup.exe(NSIS)SoloMD_4.0.0_x64-portable.zipβ no installer
irm https://solomd.app/install.ps1 | iex
winget install solomd
Linux β x86_64 + aarch64
.AppImage(universal),.deb(Debian/Ubuntu),.rpm(Fedora/RHEL) β both architectures from the releases page.- Arch users:
solomd-binon AUR.
iPad
App Store β same engine, native iPad UI.
Compared
| SoloMD v4.0 | Obsidian | Typora | Tolaria | |
|---|---|---|---|---|
| License | MIT | proprietary (free) | paid ($14.99) | AGPL |
| Stack | Tauri 2 (Rust + WebView) | Electron | Electron | Tauri 2 |
| Platforms | macOS Β· Win Β· Linux Β· iPad | macOS Β· Win Β· Linux Β· iOS Β· Android | macOS Β· Win Β· Linux | macOS Β· Linux |
| Installer | ~32 MB (mac) / ~10 MB (win) | ~120 MB | ~95 MB | ~25 MB |
| Inline Agent Panel | β v4.0 | π‘ paid plugins (Smart Composer / Copilot) | β | π‘ external MCP only |
| Scheduled agent recipes | β v4.0 | β | β | β |
| AutoGit branch sandbox + accept/reject | β v4.0 | β | β | β |
| Replayable agent trace | β v4.0 | β | β | β |
| Multi-workspace MCP federation | β v4.0 | β | β | β |
| MCP server bundled | β 13 tools, 5 SoloMD-only | β (community plugins) | β | β generic |
| Built-in AI rewrite | β 14 BYOK providers | plugin only | β | via external MCP |
| GitHub-backed sync | β | β (Obsidian Sync $96/yr) | β | β |
| End-to-end encryption | β on your repo | β on Obsidian's servers | β | β |
| Local RAG / semantic search | β off by default | plugin only | β | β |
| Version history per note | β AutoGit | plugin only | β | β |
| CJK encodings (GBK / Big5) | β auto-detect | β | β | β |
Detailed breakdowns: vs Obsidian Β· vs Typora Β· vs Tolaria Β· vs Marktext.
Privacy & security
Pure client-side. Your .md files stay in the folder you chose. API keys live in the OS keychain (macOS Keychain / Windows Credential Manager / Linux libsecret), never in localStorage or any config file. AI requests go direct from your machine to the provider you picked β no SoloMD relay. RAG embeddings and the AutoGit repo are local-only. The MCP server speaks stdio, never opens a network port. The whole codebase is MIT and auditable.
Agent safety rails (v4.0). Every recipe run starts on its own AutoGit branch β your main stays untouched until you click Accept on the diff. Per-run write-cap (default 5, hard ceiling 50) prevents runaway loops. Recipe runner refuses to start when the working tree is dirty (no agent commit will ever sweep your work-in-progress). Path-traversal guards reject .. segments and absolute paths upfront in every Tauri / MCP / REST endpoint that accepts a user-supplied path.
E2EE sync uses Argon2id (RFC9106 default params) β XChaCha20-Poly1305 with deterministic nonces and path-as-AAD. Plaintext stays on your devices; the remote sees only ciphertext. Failed sync.json parsing is fail-closed β refuses to push rather than degrading to plaintext (a v3.0.x audit fix).
Full writeup: https://solomd.app/security.
Build from source
Prereqs: Rust (stable), Node 18+, pnpm.
git clone https://github.com/zhitongblog/solomd.git
cd solomd/app
pnpm install
pnpm tauri dev # dev with hot reload
pnpm tauri build # release artifacts β src-tauri/target/release/bundle/
Linux additionally needs libdbus-1-dev for the keychain backend.
The MCP server is a separate crate at mcp-server/; the dev MCP harness used for end-to-end testing lives at dev-mcp/. End-to-end test entry point: scripts/v4-self-test.sh (run with --with-release --with-ollama --with-ui for full coverage).
Contributing
Issues and PRs welcome β open one. For a sense of direction, see docs/roadmap.md. The v4.0 build log is at solomd.app/blog/v4-0-0-how-we-built-it/ β start there if you want to understand the engineering principles before sending a PR.
Contact / θη³»
One maintainer, two front doors. Async on GitHub Discussions. Real-time chat:
- Telegram (international): @SOLOMDAPP β release announcements + chat
- WeChat (δΈζ): scan to add me β note "SoloMD" 注ζ SoloMD η΄ζ₯ιθΏ
License & credits
MIT Β© 2026 xiangdong li. SoloMD stands on Tauri 2, Vue 3, CodeMirror 6, markdown-it, KaTeX, Mermaid, libgit2, Pandoc, Hunspell, keyring-rs, and rmcp. Sponsor on GitHub Sponsors or via solomd.app/#sponsor.


