wenzel198333 downloadsEnd-to-end encrypted vault sync to your own CouchDB, with a conflict diff view, one-string setup, and mobile support.
End-to-end encrypted Obsidian sync over your own CouchDB — with a real conflict diff view, file history, and cross-device passphrase rotation.
Vaultbridge keeps an Obsidian vault in sync across desktop and mobile through a CouchDB you control. Your notes are encrypted on the device before they ever leave it; the server only ever sees ciphertext. It builds on the proven PouchDB ↔ CouchDB replication protocol, so mobile support and conflict handling come from a battle-tested foundation rather than a custom sync engine.
No telemetry, no accounts, no third-party servers. Vaultbridge talks only to the CouchDB endpoint you configure. It loads no remote code and phones no home.
vbridge1:… setup string carries the server connection and encryption parameters. Generate it once, scan the QR code or paste the string on each device, done. The passphrase can be embedded in the string or kept separate and entered per device..claude/ and .hinote/ folders nested anywhere in the vault (e.g. inside a "Dev" folder you use with Claude Code or Codex). Because dotfiles raise no Obsidian events, Vaultbridge scans for them periodically. You control what stays out via a simple exclusion list — a single file, a whole folder (with its subfolders), or a name that matches everywhere. Device-local churn files (.obsidian/workspace*.json, .trash, .DS_Store) and .git internals are excluded by default (syncing a .git folder as plain files would corrupt the repo). Concurrent edits to a hidden file are preserved in a sidecar *.vaultbridge-konflikt file rather than being overwritten.community-plugins.json), and their settings (data.json) — with settings conflicts routed through the same diff view. A reload button applies plugin updates without restarting Obsidian. (Vaultbridge's own settings always stay local, so each device keeps its own identity.)isDesktopOnly: false).docs/server-setup.md — this covers a one-line Docker CouchDB, the required CORS configuration, and a hosted free-tier option (IBM Cloudant).CORS misconfiguration is the single most common onboarding problem. Vaultbridge's connection self-test checks for it explicitly and tells you what to fix.
Not yet submitted — this is planned. Until then, use manual installation.
main.js, manifest.json, and styles.css from the latest release.<your-vault>/.obsidian/plugins/vaultbridge/.You can also install directly from this repository with the BRAT plugin by adding DonnervS/vaultbridge.
docs/server-setup.md.vbridge1:… string and a QR code. Treat this string like a password — it contains your server credentials (and, if embedded, your passphrase).For a quick manual setup string during local testing, npm run make-setup prints one from prompts or environment variables.
npm install
npm test # runs the full test suite
npm run build # type-check + esbuild production bundle + bundle guard
The build produces main.js in the repository root. main.js is not committed — releases are built in CI (see below).
Releases are automated. Bump the version in manifest.json (and package.json), update versions.json, then push a matching tag:
git tag 1.0.1
git push origin 1.0.1
The release workflow (.github/workflows/release.yml) verifies the tag matches manifest.json, runs the tests and build, and publishes a GitHub release with main.js, manifest.json, and styles.css attached. The tag must equal the manifest version exactly, with no leading v (an Obsidian requirement).
MIT © 2026 Markus Wenzel