mooncodee1 downloadsSync your vault across devices through your own Google Drive, end-to-end encrypted and compatible with rclone crypt.
Sync your Obsidian vault across all your devices — Mac, Windows, Linux, iPhone, iPad, Android — through your own Google Drive, with end-to-end encryption. Google stores only encrypted files: no note names, no text.
The encryption format is rclone crypt, so your synced vault is also readable, checkable and restorable with plain rclone on any computer — no lock-in to this plugin.
Network use. The plugin connects to Google only:
oauth2.googleapis.com — to sign in and refresh the sign-in;www.googleapis.com — Google Drive API, to store and read your encrypted files.Signing in opens google.com/device in your browser, where you paste the code. There are no other servers, no analytics, no telemetry.
Account required. You need a Google account (a free one works; storage counts toward your Google quota) and your own free Google Cloud OAuth client (created once in about five minutes; the plugin walks you through it).
Access scope. The plugin requests drive.file: it can see only files it created itself. The rest of your Google Drive is invisible to it.
Vault access. To sync, the plugin lists and reads every file in the vault (except dot-files such as .obsidian) and writes files it downloads. Nothing outside the vault is touched.
Clipboard. The plugin only writes to the clipboard: the Google sign-in code, when you press “Copy code and open Google”. It never reads the clipboard.
Privacy policy: https://mooncodee.github.io/crypt-drive-sync/privacy.html
Release builds are produced by GitHub Actions from this repository and carry build provenance attestations: gh attestation verify main.js -R mooncodee/crypt-drive-sync.
crypt-drive-sync/).Your password and Google sign-in are kept in Obsidian's secret storage on each device, separately for each vault. They are never synced and never sent anywhere. The password cannot be recovered — without it the encrypted notes cannot be read.
main.js, manifest.json and styles.css from the latest release into <vault>/.obsidian/plugins/crypt-drive-sync/.Enable the plugin — the setup wizard opens by itself. Allow about ten minutes the first time and two on each next device:
google.com/device opens in your browser; paste the code and press Allow.crypt-drive-sync) and the vault's name inside it (default: the vault's name).On every other device: install the plugin and go through the same steps with the same client, password and folder name.
Sync then runs by itself:
The ↻ ribbon button and the status bar item sync immediately.
If you already use an rclone crypt remote on Google Drive, the plugin can share it. Example config:
[drive]
type = drive
scope = drive.file
client_id = <your client id>
client_secret = <your client secret>
[crypt]
type = crypt
remote = drive:encrypted
password = <obscured>
Set up the plugin with:
encrypted;The vault then appears as crypt:<vault name>. Check it with:
rclone cryptcheck <local vault> crypt:<vault name>
Google's drive.file scope is per Google Cloud project, so the plugin can see a folder created by your rclone only if both use the same project: create the plugin's “TVs and Limited Input devices” client in your rclone's project.
.obsidian) and other dot-files are not synced.The password, the Google sign-in and the client secret live in Obsidian's secret storage, which uninstalling a plugin doesn't clear. First choose Advanced → Reset setup on this device, then uninstall. Revoke access at myaccount.google.com/permissions; delete the plugin's folder in Google Drive to remove the encrypted copy.
npm install
npm test # includes byte-for-byte compatibility tests against real rclone (run tests/make-fixtures.sh once)
npm run build
Optional, for private builds only: place google-client.json (the JSON downloaded for a “TVs and Limited Input devices” client) next to package.json to bake that client in, so the people you give the build to can skip step 1. It is never part of the repository, and public releases are built without it.