Bhoopesh R K2k downloadsSync your vault across devices using GitHub's REST API without requiring local Git.
Sync your Obsidian vault across all your devices — desktop, iOS, and Android — using GitHub's REST API. No local Git installation required.
SyncGit is a community plugin that keeps your Obsidian vault synchronized across multiple devices using a private GitHub repository as the bridge. It handles three-way conflict resolution, offline detection, and cross-platform line-ending normalization automatically — so you can focus on your notes, not sync logistics.
localStorage, never written to data.jsonYou can also open it directly in Obsidian: Install SyncGit.
main.js, manifest.json, and styles.css from the latest Release.<Vault>/.obsidian/plugins/sync-git/.main.js, manifest.json, and styles.css into that folder.For detailed setup instructions, authentication modes, commands, and troubleshooting, see USAGE.md.
This plugin makes network requests to external services. As required by Obsidian Developer Policies:
| Service | URL | Purpose |
|---|---|---|
| GitHub REST API | https://api.github.com (default) or your custom hostname |
Upload, download, and commit vault files to a private GitHub repository |
No analytics, telemetry, or tracking data is collected or transmitted. Vault contents are only transmitted to GitHub as part of the explicit sync operation you control.
localStorage — it is never written into your vault folder or committed to any repository.btoa/atob): Runtime Base64 conversions are used strictly for communicating with GitHub's Git Blobs REST API (POST /git/blobs to upload file bytes and GET /git/blobs/:sha to decode downloaded file bytes). No executable code, tokens, URLs, or scripts are obfuscated or dynamically evaluated at runtime.npm install
npm run dev # Start compilation in watch mode
npm run build # Production build (type-check and bundle into main.js)
npm run lint # Run Obsidian-specific ESLint rules
This repository uses an automated version bump script (version-bump.mjs) wired to npm's version lifecycle hook:
npm version patch # Bug fixes (e.g. 1.2.4 -> 1.2.5)
npm version minor # Backwards-compatible features
npm version major # Breaking changes
Running npm version updates package.json, invokes version-bump.mjs to synchronize manifest.json and versions.json, creates the git commit, and tags the release (without a leading v, as required by Obsidian).
To publish the release:
git push origin main --follow-tags
GitHub Actions will automatically build production assets (main.js, manifest.json, styles.css) and attach them to the release.
MIT © Bhoopesh R K