Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian
GitHub

GitHub Octokit Sync

rhoades-brownrhoades-brown95 downloads

Sync your Obsidian vault with GitHub using the Octokit API. Two-way sync, multi-repo support, visual diffs, conflict resolution, and auto-sync — no Git CLI required. Works on desktop and mobile.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates37

Sync your Obsidian vault with GitHub using the official Octokit API — no Git CLI required. Use GitHub as a remote backup and collaboration tool for your vault on any device, including mobile.

Features

Sync

  • Two-way sync — pull changes from GitHub and push local changes in a single operation
  • Selective sync — stage individual files or sync everything at once
  • Auto-sync — sync on save, on a configurable interval, or on startup
  • Subfolder mapping — sync your vault to a specific subfolder within the repository
  • Configuration sync — optionally sync .obsidian settings (themes, snippets, hotkeys) across devices
  • Batch commits — multiple file changes are committed in a single Git tree operation for efficiency

Multi-repo support

  • Additional repositories — sync extra GitHub repos into specific vault directories (e.g., a shared notes folder)
  • Independent sync — each additional repo syncs independently with its own branch, subfolder, and ignore patterns
  • Shared config across devices — additional repo configurations are stored in .github-sync-repos.json inside the vault, so they are synced with the primary repo and automatically picked up on other devices
  • Per-repo tokens — use the main token or a separate PAT for each additional repo

Security

  • Encrypted token storage — all GitHub tokens (main and per-repo) are stored in Obsidian's encrypted SecretStorage, never in plaintext data.json
  • Auto-migration — existing plaintext tokens are automatically migrated to SecretStorage on first load after upgrade

Conflict resolution

  • Automatic detection — files modified both locally and on GitHub are flagged as conflicts
  • Visual diff view — side-by-side and inline diff comparison for conflicting files
  • Resolution options — keep local, keep remote, or edit manually and re-sync

Sync panel

  • File change overview — files grouped by status (added, modified, deleted, conflict) with repo labels for multi-repo setups
  • Commit history — view recent commits with author, message, and timestamp (collapsible)
  • Live logs — real-time sync log viewer with filtering (collapsible)
  • Persistent UI state — panel collapse states are remembered across restarts via per-vault local storage

Other

  • Clipboard access — the "Copy logs" and "Export logs" buttons write sync log text to the system clipboard (write-only; the plugin never reads from the clipboard)
  • Ignore patterns — glob-based patterns to exclude files and folders from sync
  • Commit message templates — customisable templates with {date} and {action} variables
  • Status bar — live sync status indicator; click to open the sync panel
  • Ribbon icon — left-click to sync, right-click for quick actions (pull, push, open panel, settings)
  • Configurable logging — adjustable log level (debug/info/warn/error) with optional file persistence
  • Mobile compatible — works on iOS and Android (not desktop-only)

Prerequisites

  • Obsidian v1.12.7 or later
  • A GitHub account with a Personal Access Token

Installation

Note: Back up your vault before installing. This plugin is in early development.

From Obsidian Community Plugins

  1. Open Settings → Community plugins → Browse
  2. Search for "GitHub Octokit Sync"
  3. Select Install, then Enable

BRAT (for beta releases, not recommended)

  1. Install BRAT
  2. Open Settings → Community plugins → BRAT
  3. Select Add beta plugin
  4. Enter rhoades-brown/obsidian-github
  5. Choose latest as the version
  6. Select Add Plugin

Manual

  1. Download main.js, manifest.json, and styles.css from the latest release
  2. Create <vault>/.obsidian/plugins/github-octokit/
  3. Copy the downloaded files into this folder
  4. Reload Obsidian and enable the plugin in Settings → Community plugins

Setup

1. Generate a GitHub Personal Access Token

  1. Go to GitHub → Settings → Developer settings → Personal access tokens
  2. Select Generate new token (classic)
  3. Name it (e.g., "Obsidian Vault Sync") and select the repo scope
  4. Select Generate token and copy it

2. Configure the plugin

  1. Open Settings → GitHub Octokit Sync
  2. Paste your token and select Connect
  3. Select a repository from the dropdown
  4. Optionally configure branch, subfolder, sync triggers, and commit message template

3. Add additional repositories (optional)

  1. In settings, scroll to Additional repositories
  2. Select Add and enter the repo owner, name, branch, and local vault directory
  3. Choose whether to use the main token or a separate one
  4. The configuration is saved to .github-sync-repos.json in your vault and synced automatically

Usage

Commands

Open the command palette (Ctrl/Cmd + P) and search for:

Command Description
Sync now Full bidirectional sync
Pull from GitHub Download remote changes only
Push to GitHub Upload local changes only
Open sync panel Open the sidebar sync panel
Open sync modal Open the sync modal
Open diff view Open the diff comparison view
View sync conflicts Jump to conflicts in the sync panel
Open GitHub settings Open plugin settings

Ribbon and status bar

  • Left-click the GitHub ribbon icon to sync
  • Right-click for quick actions (pull, push, open panel, settings)
  • Click the status bar indicator to open the sync panel

Resolving conflicts

  1. Conflicting files appear in the sync panel under Conflicts
  2. Select Diff to see a side-by-side comparison
  3. Choose a resolution:
    • Keep local — use your version
    • Keep remote — use the GitHub version
    • Manual — edit the file yourself, then sync again

Configuration

Setting Description
GitHub token Your Personal Access Token (stored encrypted)
Repository The GitHub repo to sync with
Branch Branch name (default: main)
Subfolder path Sync only a subfolder of the remote repo
Sync configuration Include .obsidian settings in sync
Sync on save Auto-sync when you modify a file (debounced)
Sync on interval Sync every N minutes
Sync on startup Sync when Obsidian opens
Commit message Template with {date} and {action} variables
Conflict strategy Default resolution: manual, keep-local, keep-remote, keep-both
Status bar Show/hide the sync status indicator
Notifications Show/hide sync result notices
Logging Enable/disable, set level, optionally persist to file

Ignore patterns

The following paths are always excluded from sync:

  • .obsidian/plugins/** — plugin files are managed separately
  • .obsidian/workspace.json and workspace-mobile.json — machine-specific
  • .git/**, .gitignore

Add custom glob patterns in Settings → Ignore patterns:

*.log
private/**
*.tmp
drafts/wip-*

Development & contributing

See DEVELOPMENT.md for build instructions, project structure, conventional commit guidelines, and the automated CI/CD versioning workflow.

Troubleshooting

"Authentication failed"

  • Verify your token has the repo scope
  • Check if the token has expired
  • Generate a new token and re-connect

"Rate limit exceeded"

  • GitHub allows 5,000 API requests per hour for authenticated users
  • The notification shows when the limit resets
  • Reduce sync frequency in settings

"Conflict detected"

  • Open the sync panel to view and resolve conflicts
  • Use the diff view to compare local and remote versions

Files keep re-syncing

  • Enable debug logging to inspect sync state
  • Verify line endings are consistent (the plugin normalises to LF)
  • Check that ignore patterns are correctly configured

Debug with logs

  1. Enable logging in Settings → Logging
  2. Set log level to Debug for verbose output
  3. Open the developer console (Cmd+Option+I on macOS, Ctrl+Shift+I on Windows) for real-time logs
  4. Or select View logs in settings to see recent entries in-app

License

MIT

98%
HealthExcellent
ReviewPassed
About
Sync your Obsidian vault with GitHub using the official Octokit API. No Git CLI required. Works on desktop and mobile. Two-way sync with batch commits. Selective or full vault sync. Auto-sync on save, on interval, or on startup. Subfolder mapping to sync your vault to a specific path within a repository. Configuration sync for themes, snippets, and hotkeys across devices. Multi-repo support lets you sync additional GitHub repos into specific vault directories, each with independent branches, subfolder mapping, and ignore patterns. Shared repo configs sync automatically across devices. Conflict resolution with automatic detection, side-by-side and inline diff views, and manual editing. Sync panel shows file changes grouped by status, commit history, and live logs. Glob-based ignore patterns for files and folders. GitHub tokens stored securely in Obsidian's encrypted SecretStorage. Requires a GitHub Personal Access Token with repo scope.
SyncingGitBackup
Details
Current version
0.6.0
Last updated
2 weeks ago
Created
6 months ago
Updates
37 releases
Downloads
95
Compatible with
Obsidian 1.12.7+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
rhoades-brownrhoades-brown
github.com/rhoades-brown
GitHubrhoades-brown
  1. Community
  2. Plugins
  3. Syncing
  4. GitHub Octokit Sync

Related plugins

GitHub

GitHub Sync

Sync vault to personal GitHub.

Easy Git

A secure, plug-and-play way to sync individual vault folders or sections with GitHub. Private repos supported, multiple folder mappings, bidirectional sync, and conflict resolution.

Git

Integrate Git version control with automatic backup and other advanced features.

YAOS

Simple real-time sync powered by your own Cloudflare Worker.

Remotely Save

Sync notes between local and cloud with smart conflict: S3, Dropbox, webdav, OneDrive, Google Drive, Box, pCloud, Yandex Disk, Koofr, Azure Blob Storage.

Sync Vault

Sync with cloud disk fast and safely.

Settings profiles

Create various global settings profiles, that sync between vaults.

GitHub

GitHub Gitless Sync

Sync a GitHub repository with vaults on different platforms without requiring git installation

Differential ZIP Backup

Back our vault up with lesser storage.

Remotely Sync

Security fixes for the remotely-save unofficial plugin allowing users to synchronize notes between local device and the cloud service. Not backwards compatible.