An Android app that syncs GitHub repositories to local folders — designed for Obsidian users who want Git-backed vaults without a desktop.
- Add GitHub repos via Personal Access Token (PAT)
- Two-way sync: auto-commit local changes, rebase, and push
- Conflict detection with a resolution dialog
- Background sync via WorkManager
- Sync log with per-repo history
- Material 3 UI (dark/light theme)
- Language: Kotlin
- UI: Jetpack Compose + Material3
- Git: JGit 6.9.0 (no system Git required)
- DI: Hilt
- DB: Room + DataStore
- Background: WorkManager
- Android Studio Hedgehog or newer
- Android SDK 26+
- A GitHub Personal Access Token with
reposcope
./gradlew assembleDebugThe APK will be at app/build/outputs/apk/debug/app-debug.apk.
adb install app/build/outputs/apk/debug/app-debug.apk- Open the app and go to Settings → enter your GitHub PAT
- Tap + to add a repository (owner/repo + local folder)
- Tap Sync on any repo card to pull/push changes
- Background sync runs automatically via WorkManager
app/src/main/java/com/gitsync/
├── data/ # Room entities, DAOs, DataStore prefs
├── di/ # Hilt AppModule
├── git/ # GitSyncManager, ConflictDetector
├── notification/ # SyncNotifier
├── ui/ # Compose screens (repolist, addrepo, settings, synclog, conflict)
├── util/ # SAF helpers, path utils
└── worker/ # SyncWorker (WorkManager + Hilt)
- PAT is stored in DataStore (not WorkManager InputData) to avoid exposure in job history
- Never commit your PAT to source control
MIT