README file from
GithubTether
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.
Why Tether
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.
Highlights
| 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 |
How it works
- Create your own Google Cloud OAuth app.
- Paste your client ID and client secret into Tether.
- Sign in with Google from inside Obsidian.
- Choose a Google Drive folder for Tether to use.
- Tether creates a vault-named folder inside that Drive folder and keeps both sides in sync.
Installation
Community Plugins
Once Tether is approved in the Obsidian Community Plugins directory:
- Open
Settings -> Community plugins. - Select
Browseand search forTether. - Install the plugin and enable it.
Manual installation
Until the community listing is live, you can install Tether manually:
- Download
main.js,manifest.json, andstyles.cssfrom the latest release. - Create the folder
.obsidian/plugins/tether/inside your vault. - Copy the three files into that folder.
- Reload Obsidian.
- Enable
TetherunderSettings -> Community plugins.
Quick start
- Open the Tether settings tab in Obsidian.
- Select
Open Guideif you want the in-app screenshot walkthrough. - Add your Google Cloud
Client IDandClient Secret. - Select
Open Login Page, sign in with Google, and paste the returned URL intoAuthorization URL. - Choose the Google Drive folder you want Tether to use.
- Run
Pull from Google Drivefor the first sync, then usePush to Google Drivefor local changes.
iOS setup
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.
- From a device where Tether is already working, send or AirDrop the full vault to the iOS device.
- Make sure the transfer includes the
.obsidianfolder so the plugin settings come with it. - In the Files app, move the vault into the Obsidian folder on the iOS device.
- Open that vault in Obsidian.
- Tether should continue from the existing setup. If Google asks you to authenticate again, open Tether settings and sign in again.
Commands
Run Next Tether SyncPull from Google DrivePush to Google DriveOpen Sync Status Sidebar
Sync behavior
- Tether syncs Markdown notes, attachments, nested folders, and the
.obsidianfolder. - Tether creates a dedicated vault folder inside the Google Drive folder you select.
- The first automatic sync pulls from Google Drive. Later automatic syncs push local changes to Google Drive.
- Pull replaces local files with the Google Drive version, while deferring open or recently edited local files.
- Pull mirrors remote deletions locally; push mirrors local deletions to Google Drive.
- Push updates existing Google Drive files so Drive keeps revisions instead of creating duplicate sibling files.
- Tether checks each Drive folder for duplicate same-name files, folds differing duplicate content into the chosen file's Drive revision history, then removes the extra Drive files.
- Tether excludes
.git,.trash, and its own sync state file at.obsidian/gdrive-sync.json.
Compatibility
- Minimum Obsidian version:
0.15.0 - Plugin id:
tether - Manifest setting:
isDesktopOnly: false - Designed for desktop and mobile-compatible Obsidian environments.
- Sync and auth network calls use Obsidian's
requestUrlAPI and avoid Node/Electron-only APIs in the mobile path. - Sign-in opens Google in the system browser and accepts either the redirected URL or authorization code. A fully automatic OAuth return into Obsidian on every desktop and mobile platform would require an owned HTTPS redirect flow, native platform clients, or a small backend.
Privacy, security, and disclosures
- Tether requires a Google account and your own Google Cloud project.
- Tether does not ship with shared Google credentials.
- Tether connects to Google OAuth and Google Drive APIs.
- Tether requests these Google scopes:
https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/drive.metadata.readonly,openid, andemail. - Tether stores your access token, refresh token, selected folder, and plugin settings in local Obsidian plugin data.
- Tether stores sync state in
.obsidian/gdrive-sync.json. - Tether reads and writes files in your vault, including
.obsidian, in order to synchronize content. - No ads, telemetry, or third-party analytics are used in the current plugin code.
- Tether is not affiliated with Google or Obsidian.
Disclosures
- Plugin might make requests to 5 external domains:
accounts.google.com,oauth2.googleapis.com,obsidian.md,raw.githubusercontent.com, andwww.googleapis.com. - Clipboard access: reads or writes the system clipboard, which may expose content the user copied from outside Obsidian.
- Found
atob()/btoa()base64 calls (2 total), which may be used to obscure strings. - Vault read: reads individual vault files via the Obsidian API (
vault.read,vault.cachedRead). - Vault write: creates or modifies vault files via the Obsidian API (
vault.modify,vault.create, etc.). - Malware scan not available.
- Obfuscation scan not available.
- Network requests scan not available.
Full Google Cloud setup
Tether includes an in-app setup guide with screenshots. If you prefer a GitHub-readable version, expand the walkthrough below.
1. Create a Google Cloud project
- Go to Google Cloud Console.
- Select or create a project.
- Create a new project named
Tether-Sync.
2. Enable the Google Drive API
- Open
APIs & Services. - Open
Library. - Search for
Google Drive API. - Open it and select
Enable.
3. Configure the OAuth consent screen
- Open
OAuth consent screen. - Select
Get started. - Use
Tether-Syncas the app name. - Choose your support email.
- Select
External. - Add your email under developer contact info.
- Accept the Google API Services: User Data Policy and create the app.
4. Add the required scopes
- Open
Data Access. - Select
Add or remove scopes. - Add this scope string:
https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.metadata.readonly openid email
- Update and save.
5. Create an OAuth client
- Open
Audienceand add your email as a test user. - Open
Clientsand selectCreate client. - Choose
Web application. - Set the client name to
Tether Sync. - Add this redirect URI:
https://obsidian.md
- Create the client.
- Copy the generated client ID and client secret into Tether.
6. Authenticate in Tether
- Open Tether settings in Obsidian.
- Select
Open Login Page. - Sign in to Google.
- When you are redirected to
obsidian.md, copy the full URL or just thecode=value. - Paste it into
Authorization URL. - Select
Verify Login.
7. Choose a sync folder
- Select
Select Folder. - Pick an existing Google Drive folder or create a new one.
- Tether will create a subfolder named after your vault inside that folder.
Support
If you run into a bug or want to request an improvement, open an issue in the repository used to publish this plugin.
Author
Llewellyn Paintsil
GitHub profile
License
MIT