Sync.
Your vault. Your GitHub. Free.
We waited until v3.0 to ship sync because we didn't want to be a SaaS.
The shape we landed on instead: SoloMD is a git client. Your data lives on your own GitHub account.
No SoloMD server. No subscription. No account.
GitHub-backed sync
Paste a Personal Access Token (kept in your OS keychain). Pick an existing repo or let SoloMD create a fresh private one. Auto-push 5s after every save, auto-pull on a 5/15/30/60min interval. Conflict resolver in the History panel: Use Mine / Use GitHub / Keep Both, per file.
Built on libgit2 + the v2.2 AutoGit foundation. No
system git binary needed. GitLab, Gitea, or any HTTPS git URL
also works — the underlying push / pull is provider-agnostic.
End-to-end encrypted (optional)
Tick "Encrypt before push" + set a passphrase. The remote sees
only ciphertext: SLMD magic, 24-byte XChaCha20
nonce, 16-byte Poly1305 tag. Argon2id derives the key.
Plaintext stays on your device — search, RAG, AI rewrite all keep working. Salt + KDF params travel inside the encrypted repo, so a second device with the same passphrase derives the same key.
Already in iCloud / Dropbox / OneDrive?
v3.0 detects when your workspace is inside a known cloud-sync folder and surfaces a banner — Apple / Dropbox / Microsoft are already doing the file-level sync.
We add per-device session restore on top:
.solomd/session.<deviceId>.json tracks open tabs;
another device opens the same workspace and gets a one-click
"Restore tabs from Mac mini" prompt.
Public read-only share
One command-palette entry copies a
solomd.app/share/?repo=you/notes&path=note.md
link. Anyone with the URL gets a clean Markdown render — fetched
from raw.githubusercontent.com, sanitized via
DOMPurify, no SoloMD server in the loop.
Public repos only — for private notes, the page surfaces a clear "may be private" message instead of silently 404-ing.
vs. the alternatives
| SoloMD v3.0 | Obsidian Sync | iCloud-only | |
|---|---|---|---|
| Data lives on | Your GitHub | Obsidian's servers | Apple's servers |
| Price | Free | $96 / year | Free up to 5 GB |
| End-to-end encrypted | ✅ optional | ✅ optional | ❌ |
| Per-file version history | Full git log | 1 year | 30 days |
| Multi-provider | GitHub / GitLab / Gitea / custom | Obsidian only | Apple only |
| Subscription | No | Yes | Past 5 GB |
| Public share link | ✅ built in | ✅ Obsidian Publish ($120/yr) | ❌ |
Get started in 60 seconds
- Open SoloMD → Settings → GitHub Sync.
- Click Get a token — opens GitHub's token page with the right scope (
repo) pre-filled. - Paste the
ghp_…token, save. - Pick an existing repo or click Create & link for a fresh private one.
- (Optional) Tick Encrypt before push + set passphrase.
- Save a note. Watch the toast: "Pushed to GitHub." That's it.
Honest answers
What if I lose my passphrase?
Your encrypted vault is unrecoverable. We can't help — that's the entire point of E2EE. Write the passphrase down somewhere safe BEFORE you encrypt anything.
What if SoloMD shuts down?
Your vault is a normal git repo on GitHub. Clone it with git clone. Open the .md files in any editor. Even with E2EE on, the format is documented above and the encryption is standard XChaCha20-Poly1305 — you can write a 30-line decrypt script if you have to.
Why GitHub specifically?
Because everyone in our user base already has a GitHub account. We considered self-hosted options (NextCloud, custom S3) — they all add a setup step we don't want to be on the hook for. GitLab + Gitea are first-class fallbacks for users who don't trust GitHub.
Will sync ever cost money?
The sync feature won't. There's no SoloMD-side infrastructure that needs paying for — your data flows between you and GitHub, and we just orchestrate. (GitHub itself charges for >1 GB private storage; that's between you and them.)
Does sync work on iPad?
Not in v3.0. The iPad app is gated until the v3.0 desktop story is stable; we'll tackle it next. For now, iCloud Drive is the iPad sync path — our cloud-folder mode picks that up when you eventually open the same vault on macOS.
The first time I push, macOS asks me for my password — what is that?
That's macOS Keychain Access asking SoloMD's permission to read your saved GitHub token. Two prompts may appear: one for the GitHub token, one for the encryption key (only if you turned on E2EE). Click "Always Allow" (not "Allow") on each — that whitelists SoloMD permanently and you'll never see the prompt again. If you click "Allow" once, every push re-prompts because Keychain treats one-time authorization literally.
SoloMD never sends your password anywhere. It's macOS's authorization dialog, not ours; we don't even see what you typed.
I'm in China and push times out — what do I do?
github.com is unreliable from mainland China. SoloMD has a built-in proxy field: Settings → GitHub Sync → Advanced → HTTPS proxy. Paste your local proxy URL like http://127.0.0.1:7897 (Clash/Surge default) or socks5://127.0.0.1:1080. push and pull will route through that proxy.
Don't bother with shell HTTPS_PROXY exports — Tauri apps launched from Finder/Dock don't inherit shell env. The Settings field is the right place.