[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1389":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":14,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":28,"discoverSource":29},1389,"solomd","zhitongblog\u002Fsolomd","zhitongblog","A markdown editor — and the bridge to your LLM. Local-first, MIT, ~15 MB. Bundled MCP server lets Claude Code \u002F Codex \u002F Cursor drive your vault directly. 14 AI providers BYOK.",null,"TypeScript",366,15,2,18,0,6,22,126,76.61,"MIT License",false,"main",true,[],"2026-06-12 04:00:09","# SoloMD\n\n> The editor where agents live.\n\n[![Latest release](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fzhitongblog\u002Fsolomd)](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fzhitongblog\u002Fsolomd?color=orange)](LICENSE)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fzhitongblog\u002Fsolomd\u002Ftotal)](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases)\n[![Website](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwebsite-solomd.app-ff9f40.svg)](https:\u002F\u002Fsolomd.app)\n\n🌐 **[中文](README.zh.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Deutsch](README.de.md) · [Français](README.fr.md) · [Español](README.es.md) · [Português](README.pt.md) · [Italiano](README.it.md)** · 🪞 **[Gitee mirror →](https:\u002F\u002Fgitee.com\u002Fzhitong45\u002Fsolomd)** (faster downloads from China)\n\n[**Download v4.0**](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest) · [**Launch post**](https:\u002F\u002Fsolomd.app\u002Fblog\u002Fv4-0-0-agent-native-author\u002F) · [**How we built it**](https:\u002F\u002Fsolomd.app\u002Fblog\u002Fv4-0-0-how-we-built-it\u002F) · [**Website**](https:\u002F\u002Fsolomd.app) · [**Security**](https:\u002F\u002Fsolomd.app\u002Fsecurity)\n\n![SoloMD editor](web\u002Fpublic\u002Fdemo\u002Fsolomd-demo.svg)\n\nYour 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 \u002F 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.\n\nBuilt 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.\n\n## Three halves of one product\n\n**The editor.** WYSIWYG live edit (Typora-style), tabs + split panes, KaTeX + Mermaid, image paste to `_assets\u002F`, slideshow mode (`⌘⌥P`), Vim mode, Hunspell + CJK proofread, semantic search (`⌘⇧F`), wikilinks + backlinks, Pandoc export. CJK encodings (GBK \u002F Big5 \u002F Shift-JIS) auto-detected.\n\n**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 \u003Cprompt>` CLI that hands off to Claude Code \u002F Codex CLI with the MCP pre-wired.\n\n**The agent surface (v4.0).** Right-side Agent Panel: streamed chat-with-vault, `[[wikilink]]` citations, tool-call cards inline, **Insert** \u002F **Copy** buttons drop the reply into the active note. Plus declarative **recipes** as YAML in `\u003Cworkspace>\u002F.solomd\u002Fagents\u002F*.yml` — `cron` \u002F `on-save` \u002F `on-commit` \u002F `on-tag-add` \u002F 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.\n\n| Feature | |\n|---|---|\n| **Agent Panel** *(v4.0)* | Streamed chat-with-vault peer to Outline \u002F Backlinks \u002F Tags \u002F History. Tool-call cards expand inline; reply Insert \u002F Copy to active editor; run history persists as plain markdown under `.solomd\u002Fagent-runs\u002F`. |\n| **Scheduled recipes** *(v4.0)* | YAML jobs in your vault. AutoGit branch sandbox + accept\u002Freject UI before merge. Per-run write-cap (default 5, ceiling 50). 11-recipe cookbook ships in-tree. |\n| **Replayable trace** *(v4.0)* | `trace.jsonl` per step (`prompt` \u002F `model_call` \u002F `tool_call` \u002F `tool_result` \u002F `git_commit`). Replay-from-step rewinds and re-executes. |\n| **Workspace federation** *(v4.0)* | `solomd-mcp --workspace path1 --workspace path2`. One Claude Desktop session, many vaults. MCP profiles UI in Settings → Integrations. |\n| **Ollama first-class** *(v4.0)* | Auto-detect at `localhost:11434`. Three model presets (`qwen2.5:1.5b\u002F7b\u002F14b`). `provider: local` recipe alias for zero-cloud-cost autonomous loops. |\n| **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. |\n| **GitHub-backed sync** | Push your vault to a private GitHub repo on every save. Optional E2EE (Argon2id + XChaCha20-Poly1305). GitLab \u002F Gitea \u002F any HTTPS git URL works too. |\n| **AutoGit per note** | Every `⌘S` is a commit in a local `.git` inside the workspace. libgit2 vendored, no system git needed. Never auto-pushed. |\n| **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. |\n| **REST API** *(v4.0)* | Localhost only, token auth. Same surface as MCP for clients that don't speak MCP yet — Alfred \u002F Raycast \u002F n8n \u002F your own scripts. |\n| **BYOK cost meter** *(v4.0)* | Per-provider running tokens-spent counter, opt-in. Settings → Integrations. |\n| **Cloud-folder mode** | If your vault lives in `~\u002FLibrary\u002FMobile Documents\u002F...` or `~\u002FDropbox\u002F...`, SoloMD detects it and adds cross-device session restore on top — the OS already does the file sync. |\n| **Public read-only share** | Command palette → copy `solomd.app\u002Fshare\u002F?repo=...&path=...` link. Renders any file in your public GitHub repo, no SoloMD account needed to view. |\n\n## Use it\n\nAfter installing SoloMD on macOS \u002F Linux:\n\n**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\u002Fwrite inline. Reply too long? **Insert** drops it into the active note at the cursor (replaces selection); **Copy** to clipboard.\n\n**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.\n\n**3. Drive the same vault from another LLM client.** One-shot:\n\n```bash\n# Print the MCP config snippet for your AI client.\nsolomd mcp-config\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"solomd\": {\n      \"command\": \"\u002FApplications\u002FSoloMD.app\u002FContents\u002FResources\u002Fsolomd-mcp\",\n      \"args\": [\"--workspace\", \"\u002FUsers\u002Fme\u002FDocuments\u002FSoloMD\"]\n    }\n  }\n}\n```\n\nPaste into Claude Desktop \u002F Cursor \u002F etc. For multi-vault federation, repeat `--workspace`:\n\n```json\n\"args\": [\n  \"--workspace\", \"\u002FUsers\u002Fme\u002FDocuments\u002FSoloMD\",\n  \"--workspace\", \"\u002FUsers\u002Fme\u002FDocuments\u002Fwork-notes\"\n]\n```\n\n**4. Or hand a prompt to claude \u002F codex CLI directly:**\n\n```bash\nsolomd agent \"rewrite this week of dailies into a weekly review and commit it\"\n```\n\nPath-traversal guarded. No network port. The LLM only sees what you point the workspace at.\n\n## Install\n\nLatest release: [**v4.0.0**](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest).\n\n### macOS — universal dmg (Apple Silicon + Intel, signed + notarized)\n\n```bash\nbrew install --cask zhitongblog\u002Fsolomd\u002Fsolomd\n```\n\nOr download the dmg directly:\n\n```\nhttps:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest\u002Fdownload\u002FSoloMD_4.0.0_universal.dmg\n```\n\nOr one-line shell install:\n\n```bash\ncurl -fsSL https:\u002F\u002Fsolomd.app\u002Finstall.sh | bash\n```\n\n### Windows — x64\n\n- [`SoloMD_4.0.0_x64_en-US.msi`](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest\u002Fdownload\u002FSoloMD_4.0.0_x64_en-US.msi)\n- [`SoloMD_4.0.0_x64-setup.exe`](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest\u002Fdownload\u002FSoloMD_4.0.0_x64-setup.exe) (NSIS)\n- [`SoloMD_4.0.0_x64-portable.zip`](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest\u002Fdownload\u002FSoloMD_4.0.0_x64-portable.zip) — no installer\n\n```powershell\nirm https:\u002F\u002Fsolomd.app\u002Finstall.ps1 | iex\n```\n\n```powershell\nwinget install solomd\n```\n\n### Linux — x86_64 + aarch64\n\n- `.AppImage` (universal), `.deb` (Debian\u002FUbuntu), `.rpm` (Fedora\u002FRHEL) — both architectures from [the releases page](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Freleases\u002Flatest).\n- Arch users: [`solomd-bin`](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fsolomd-bin) on AUR.\n\n### iPad\n\n[App Store](https:\u002F\u002Fapps.apple.com\u002Fapp\u002Fsolomd\u002Fid6762498874) — same engine, native iPad UI.\n\n## Compared\n\n| | SoloMD v4.0 | Obsidian | Typora | Tolaria |\n|---|---|---|---|---|\n| License | **MIT** | proprietary (free) | paid ($14.99) | AGPL |\n| Stack | Tauri 2 (Rust + WebView) | Electron | Electron | Tauri 2 |\n| Platforms | macOS · Win · Linux · iPad | macOS · Win · Linux · iOS · Android | macOS · Win · Linux | macOS · Linux |\n| Installer | ~32 MB (mac) \u002F ~10 MB (win) | ~120 MB | ~95 MB | ~25 MB |\n| **Inline Agent Panel** | **✅ v4.0** | 🟡 paid plugins (Smart Composer \u002F Copilot) | ❌ | 🟡 external MCP only |\n| **Scheduled agent recipes** | **✅ v4.0** | ❌ | ❌ | ❌ |\n| **AutoGit branch sandbox + accept\u002Freject** | **✅ v4.0** | ❌ | ❌ | ❌ |\n| **Replayable agent trace** | **✅ v4.0** | ❌ | ❌ | ❌ |\n| **Multi-workspace MCP federation** | **✅ v4.0** | ❌ | ❌ | ❌ |\n| **MCP server bundled** | **✅ 13 tools, 5 SoloMD-only** | ❌ (community plugins) | ❌ | ✅ generic |\n| **Built-in AI rewrite** | **✅ 14 BYOK providers** | plugin only | ❌ | via external MCP |\n| GitHub-backed sync | ✅ | ❌ (Obsidian Sync $96\u002Fyr) | ❌ | ❌ |\n| End-to-end encryption | ✅ on your repo | ✅ on Obsidian's servers | ❌ | ❌ |\n| Local RAG \u002F semantic search | ✅ off by default | plugin only | ❌ | ❌ |\n| Version history per note | ✅ AutoGit | plugin only | ❌ | ✅ |\n| CJK encodings (GBK \u002F Big5) | ✅ auto-detect | ❌ | ❌ | ❌ |\n\nDetailed breakdowns: [vs Obsidian](https:\u002F\u002Fsolomd.app\u002Fcompare\u002Fvs-obsidian) · [vs Typora](https:\u002F\u002Fsolomd.app\u002Fcompare\u002Fvs-typora) · [vs Tolaria](https:\u002F\u002Fsolomd.app\u002Fcompare\u002Fvs-tolaria) · [vs Marktext](https:\u002F\u002Fsolomd.app\u002Fcompare\u002Fvs-marktext).\n\n## Privacy & security\n\nPure client-side. Your `.md` files stay in the folder you chose. API keys live in the OS keychain (macOS Keychain \u002F Windows Credential Manager \u002F 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.\n\n**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 \u002F MCP \u002F REST endpoint that accepts a user-supplied path.\n\nE2EE 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).\n\nFull writeup: \u003Chttps:\u002F\u002Fsolomd.app\u002Fsecurity>.\n\n## Build from source\n\nPrereqs: Rust (stable), Node 18+, pnpm.\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd.git\ncd solomd\u002Fapp\npnpm install\npnpm tauri dev      # dev with hot reload\npnpm tauri build    # release artifacts → src-tauri\u002Ftarget\u002Frelease\u002Fbundle\u002F\n```\n\nLinux additionally needs `libdbus-1-dev` for the keychain backend.\n\nThe MCP server is a separate crate at `mcp-server\u002F`; the dev MCP harness used for end-to-end testing lives at `dev-mcp\u002F`. End-to-end test entry point: `scripts\u002Fv4-self-test.sh` (run with `--with-release --with-ollama --with-ui` for full coverage).\n\n## Contributing\n\nIssues and PRs welcome — [open one](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Fissues). For a sense of direction, see [`docs\u002Froadmap.md`](docs\u002Froadmap.md). The v4.0 build log is at [solomd.app\u002Fblog\u002Fv4-0-0-how-we-built-it\u002F](https:\u002F\u002Fsolomd.app\u002Fblog\u002Fv4-0-0-how-we-built-it\u002F) — start there if you want to understand the engineering principles before sending a PR.\n\n## Contact \u002F 联系\n\nOne maintainer, two front doors. Async on [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fzhitongblog\u002Fsolomd\u002Fdiscussions). Real-time chat:\n\n- **Telegram (international):** [@SOLOMDAPP](https:\u002F\u002Ft.me\u002FSOLOMDAPP) — release announcements + chat\n- **WeChat (中文):** scan to add me — note \"SoloMD\" 注明 SoloMD 直接通过\n\n\u003Ca href=\"https:\u002F\u002Fsolomd.app\u002F#contact\">\u003Cimg src=\"web\u002Fpublic\u002Fcontact\u002Fwechat.jpg\" alt=\"WeChat — 智通\" width=\"180\" \u002F>\u003C\u002Fa>\n&nbsp;&nbsp;\n\u003Ca href=\"https:\u002F\u002Ft.me\u002FSOLOMDAPP\">\u003Cimg src=\"web\u002Fpublic\u002Fcontact\u002Ftelegram.jpg\" alt=\"Telegram @SOLOMDAPP\" width=\"180\" \u002F>\u003C\u002Fa>\n\n## License & credits\n\n[MIT](LICENSE) © 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](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fzhitongblog) or via [solomd.app\u002F#sponsor](https:\u002F\u002Fsolomd.app\u002F#sponsor).\n\u003C\u002Fcontent>\n\u003C\u002Finvoke>","SoloMD 是一个基于 Markdown 的编辑器，它通过集成本地 MCP 服务器来连接到多种 AI 提供商，如 Claude Code、Codex 和 Cursor，让这些 AI 能够直接驱动用户的笔记库。其核心功能包括 WYSIWYG 实时编辑、多标签和分屏视图、LaTeX 和 Mermaid 图表支持等。技术上，SoloMD 使用了 Tauri 2、Vue 3 和 CodeMirror 6 进行构建，确保了高性能和良好的用户体验。此外，它还提供了一个强大的代理界面，允许用户通过聊天与笔记库交互，并且能够创建定时任务或在特定事件触发时自动执行操作。SoloMD 非常适合需要高效组织个人知识体系并希望利用 AI 功能增强笔记管理的用户使用。","2026-06-11 02:43:26","CREATED_QUERY"]