A desktop application to back up all your GitHub repositories locally and optionally to cloud storage (AWS S3 / Cloudflare R2).
- One-click GitHub backup — Enter your Personal Access Token and back up all repositories with full code and branches
- Smart incremental updates — First run clones everything; subsequent runs only fetch changes
- Flexible repo selection — Filter by owned, organization, starred, forked, or collaborator repositories
- Cloud storage support — Upload compressed
.tar.gzarchives to AWS S3 or Cloudflare R2 - Scheduled backups — Set daily, weekly, or monthly automatic backups with system tray support
- Rate limit aware — Handles GitHub API pagination and rate limits for accounts with 200-300+ repos
- Concurrent processing — Configurable parallelism (1-10 repos at a time) for faster backups
- Real-time progress — Detailed per-repo status tracking with live log viewer
- Secure — Token stored encrypted locally, cleaned from git remote URLs after operations
Configure your GitHub token, backup folder, and optional cloud storage with a guided setup flow.
Browse and select repositories with filters for owned, org, starred, forked, and collaborator repos.
Monitor real-time progress with per-repo status, progress bars, and a detailed log viewer.
Download the latest version for your platform from the Releases page.
| Platform | File | Notes |
|---|---|---|
| macOS | GitBackup-x.x.x.dmg |
Open the .dmg and drag GitBackup to Applications. On first launch, right-click → Open to bypass Gatekeeper. |
| Windows | GitBackup-Setup-x.x.x.exe |
Run the installer. Windows Defender may show a warning — click "More info" → "Run anyway". |
| Linux | GitBackup-x.x.x.AppImage |
Make it executable: chmod +x GitBackup-*.AppImage then run it. |
Prerequisite: Git must be installed on your system. GitBackup uses it to clone and update repositories.
You'll need a Personal Access Token to connect your account:
- Go to github.com/settings/tokens
- Click Personal access tokens → Tokens (classic)
- Click Generate new token (classic)
- Select scopes:
repo(full access) andread:org(for org repos) - Click Generate token and paste it into the app
Fine-grained tokens also work — grant Repository access → All repositories.
git clone https://github.com/hiteshchoudhary/gitbackup.git
cd gitbackup
npm installnpm run devThis starts the Vite dev server with hot reload and launches the Electron app.
# Build for current platform
npm run package
# Platform-specific builds
npm run package:mac
npm run package:win
npm run package:linuxPackaged apps are output to the release/ directory.
- Authenticate — Paste your GitHub PAT. The app validates it and fetches your account info.
- Select repos — Choose filters (owned, org, starred, etc.) and fetch your repository list. Select which repos to back up.
- Choose backup folder — Pick a local directory. Repos are cloned as
owner/repo-name/with all branches. - Configure cloud (optional) — Add AWS S3 or Cloudflare R2 credentials. Each repo is archived as an individual
.tar.gzand uploaded. - Run backup — Click Start. The app clones new repos and fetches updates for existing ones, compresses archives, and uploads to cloud — all with configurable concurrency.
- Schedule (optional) — Set up daily/weekly/monthly automatic backups. The app runs in the system tray.
gitbackup/
├── electron/ # Main process (Node.js)
│ ├── main.ts # App window, tray, lifecycle
│ ├── preload.ts # Secure IPC bridge
│ ├── tray.ts # System tray
│ ├── ipc/ # IPC handlers
│ ├── services/
│ │ ├── github.service.ts # GitHub API (Octokit)
│ │ ├── git.service.ts # Clone & update repos
│ │ ├── compress.service.ts # tar.gz archiving
│ │ ├── cloud.service.ts # S3/R2 uploads
│ │ ├── backup-orchestrator.ts # Core backup pipeline
│ │ └── scheduler.service.ts # Cron scheduling
│ └── store/store.ts # Encrypted settings
├── src/ # Renderer process (React)
│ ├── pages/ # Setup, Repos, Backup, Settings
│ ├── components/ # UI components
│ └── hooks/ # IPC & state hooks
└── resources/ # App icons
| Layer | Technology |
|---|---|
| Framework | Electron 35 |
| Frontend | React 19 + Tailwind CSS |
| Language | TypeScript 5 |
| Bundler | Vite 8 |
| GitHub API | @octokit/rest |
| Git | simple-git |
| Cloud | AWS SDK v3 (S3-compatible, works with R2) |
| Storage | electron-store (encrypted) |
| Scheduling | node-cron |
| Packaging | electron-builder |
All settings are persisted locally in encrypted storage. No data is sent to any third-party service other than GitHub API and your configured cloud storage.
| Setting | Description |
|---|---|
| GitHub Token | PAT with repo + read:org scopes |
| Backup Path | Local directory for cloned repos |
| Cloud Provider | None, AWS S3, or Cloudflare R2 |
| Schedule | Daily / Weekly / Monthly + time |
| Concurrency | 1-10 parallel repo operations |
MIT
A chaicode.com product