u/Belphemur

Hey r/ObsidianMD,

I've been using Obsidian Sync for a while, but the official CLI kept driving me crazy. It's a minified cli.js that constantly drops connections, and since it's not really open source, there's no way to fix it or contribute improvements.

So I decided to do something about it.

What I did:

  1. Used AI to help un-minify the official cli.js and understand the protocol
  2. Built a clean 1:1 TypeScript port to reverse-engineer how it actually works
  3. Rewrote the entire thing from scratch in Go with proper error handling

What's different:

  • 🔗 Reliable reconnection — WebSocket backoff that actually survives network drops
  • Parallel downloads — chunked transfers that sync full vaults much faster
  • 🧠 Lower memory — Go binary uses a fraction of the RAM vs Node.js
  • 📦 Native packages — .deb, .rpm, .apk, Homebrew, Winget, Docker
  • 🔓 Actually open source — GPL-3.0, readable code, contributions welcome

It supports the full Obsidian Sync + Publish protocol with E2E encryption. I've been using it daily on my NAS and it's been rock-solid.

If anyone else has been frustrated with the official CLI, you can check it out here: https://belphemur.github.io/obsidian-headless/

Happy to answer questions about the reverse-engineering process or the Go implementation!

reddit.com
u/Belphemur — 15 days ago