llewellyn500114 downloadsSync your vault with Google Drive using your own Google Cloud credentials.
Tether is a Google Drive sync plugin for Obsidian that keeps your vault structure in sync using your own Google Cloud project and Google account.
Pull notes from Google Drive first, then push local changes back as Drive revisions.
Tether is built for people who want a self-managed sync workflow across desktop and mobile-compatible Obsidian setups without relying on shared credentials. It creates a dedicated folder for your vault in Google Drive, keeps the folder structure intact, and separates pull and push actions so each direction is predictable.
| Feature | What it means |
|---|---|
| Full-vault sync | Syncs notes, attachments, nested folders, and the .obsidian folder |
| Directional sync | Pull from Google Drive or push local changes with separate commands and sidebar buttons |
| Your own credentials | Uses your Google Cloud OAuth client instead of a shared backend |
| Mobile-friendly networking | Uses Obsidian's requestUrl API for Google OAuth and Drive requests |
| Built-in setup flow | Includes an in-app setup guide, login flow, folder picker, and sync status sidebar |
| Automatic syncing | Supports sync on startup and interval-based background sync |
Once Tether is approved in the Obsidian Community Plugins directory:
Settings -> Community plugins.Browse and search for Tether.Until the community listing is live, you can install Tether manually:
main.js, manifest.json, and styles.css from the latest release..obsidian/plugins/tether/ inside your vault.Tether under Settings -> Community plugins.Open Guide if you want the in-app screenshot walkthrough.Client ID and Client Secret.Open Login Page, sign in with Google, and paste the returned URL into Authorization URL.Pull from Google Drive for the first sync, then use Push to Google Drive for local changes.Important: if your Google Cloud OAuth app stays
External+Testing, Google issues Drive refresh tokens that expire after 7 days. After confirming the setup works, move the OAuth app toIn productionin Google Cloud, then log in to Tether once more so Google issues a new refresh token. Tether can refresh normal access tokens automatically, but no local plugin can keep using a refresh token after Google expires or revokes it.
If you already have Tether working on another device, the easiest iOS setup is to transfer the entire vault locally instead of configuring everything again on the phone or iPad.
.obsidian folder so the plugin settings come with it.Run Next Tether SyncPull from Google DrivePush to Google DriveOpen Sync Status Sidebar.obsidian folder..git, .trash, and its own sync state file at .obsidian/gdrive-sync.json.0.15.0tetherisDesktopOnly: falserequestUrl API and avoid Node/Electron-only APIs in the mobile path.https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/drive.metadata.readonly, openid, and email..obsidian/gdrive-sync.json..obsidian, in order to synchronize content.accounts.google.com, oauth2.googleapis.com, llewellyn500.github.io, raw.githubusercontent.com, and www.googleapis.com.atob()/btoa() base64 calls (2 total), which may be used to obscure strings.vault.read, vault.cachedRead).vault.modify, vault.create, etc.).Tether includes an in-app setup guide with screenshots. If you prefer a GitHub-readable version, expand the walkthrough below.
Tether-Sync.APIs & Services.Library.Google Drive API.Enable.OAuth consent screen.Get started.Tether as the app name.External.Use the hosted Tether support site for the values Google asks for during branding and OAuth setup:
Homepage URL: https://llewellyn500.github.io/obsidian-tether/
Privacy Policy URL: https://llewellyn500.github.io/obsidian-tether/privacy.html
Terms of Service URL: https://llewellyn500.github.io/obsidian-tether/terms.html
Authorized Domain: llewellyn500.github.io
Logo URL: https://llewellyn500.github.io/obsidian-tether/assets/tether-google-cloud-logo.png
Branding.llewellyn500.github.io under authorized domains if Google asks for an authorized domain.If Google requires a verified custom domain before full verification, you can still use these pages for setup while testing, then point a custom domain at the same GitHub Pages site later.
Data Access.Add or remove scopes.https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.metadata.readonly openid email
Audience and add your email as a test user.Clients and select Create client.Web application.Tether Sync.https://llewellyn500.github.io/obsidian-tether/oauth/callback.html
Open Login Page.Authorization URL.Verify Login.Audience in Google Cloud and publish the OAuth app to In production to avoid weekly re-logins. If it remains External + Testing, Google expires Drive refresh tokens after 7 days. After changing the publishing status, log in to Tether again so Google issues a fresh refresh token.Select Folder.If login succeeds but Select Folder fails with Google Drive API Error or status 403, check these items in the same Google Cloud project that owns your OAuth client:
APIs & Services > Library and confirm Google Drive API is enabled.Google Auth Platform > Data Access and confirm these scopes are added:https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.metadata.readonly openid email
Testing, open Audience and confirm the user's Google account is added as a test user.If you run into a bug or want to request an improvement, open an issue in the repository used to publish this plugin.
Llewellyn Paintsil
GitHub profile
MIT