Shameless self-plug: this is a private project, i just though it might be useful to some of you!
Repo: fanselau/obsidian-vault-cli - The README explains everything as well.
I’ve been running Obsidian LiveSync self-hosted (CouchDB on my own server) for a while and love it. Recently I started running openclaw as a persistent coding agent on the same machine, and kept hitting the same problem: the agent couldn’t access my notes.
The vault is fully end-to-end encrypted in CouchDB. You can’t just query the database, everything is AES-256-GCM encrypted, chunked with Rabin-Karp, and the path names are obfuscated. There’s no way to read or write files without re-implementing the full LiveSync protocol.
So I built a CLI that speaks the full LiveSync protocol using the same livesync-commonlib that powers the plugin. It handles all encryption transparently and auto-detects your vault settings.
obsidian-vault read "Projects/requirements.md"
obsidian-vault write "Projects/notes.md" "# Content"
obsidian-vault patch "Projects/todo.md" --old "draft" --new "done"
obsidian-vault grep "keyword" --path "Projects/"
obsidian-vault list "Projects/"
Files show up in Obsidian immediately via the LiveSync change feed. It’s been working great for my setup, the agent reads context from my vault, writes meeting notes, appends to logs, all without me copy-pasting anything. Obsidian stays my single source of truth.
It includes a skill file for Claude Code / OpenCode / OpenClaw (or any other agent for that matter) so the agent knows which commands to use.
Requirements: Node.js 20+, an existing LiveSync vault with E2EE enabled, and access to the CouchDB instance. Only tested with self-hosted CouchDB + LiveSync so far.
Would love if someone wants to try it out and let me know how it goes. PRs welcome too, especially if you run into edge cases with different vault configurations.
Please leave a start if this is useful to you. Would mean the world to me ![]()