A native macOS Menu Bar app for real-time bidirectional folder synchronization, powered by unison.
Built for syncing Obsidian vaults between Google Drive and iCloud, but works with any folder pair.
- Real-time sync — FSEvents-based file watching with 2-second debounce
- Bidirectional & one-way — Choose sync direction per pair
- Multiple sync pairs — Manage as many folder pairs as you need
- iCloud support — Automatic placeholder file materialization
- Conflict handling — Keeps newer file, backs up old as
{name}.conflict.{ext} - Exclusion rules — Global + per-pair, with 17 built-in presets
- Sync log — Searchable, filterable, persistent (up to 500 entries)
- Bilingual UI — English & Traditional Chinese, with drop-in language pack support
- Export/Import — Backup and restore all settings as JSON
- Launch at Login — Runs silently in the Menu Bar
- macOS 14 (Sonoma) or later
- unison installed via Homebrew
- Download the latest
.dmgfrom Releases - Open the DMG and drag FolderSync to your Applications folder
- Launch FolderSync — it will appear in the Menu Bar
- Install unison if you haven't:
brew install unison
# Clone the repository
git clone https://github.com/adamtan945/FolderSync.git
cd FolderSync
# Install unison
brew install unison
# Build and run
swift build
swift run FolderSyncNote: When running via
swift run, the app resolves language files from the source directory. For a proper.appbundle experience, use the DMG.
- Click the FolderSync icon in the Menu Bar
- Open Settings (⌘,)
- Go to Sync Pairs → Add Sync Pair
- Select source and destination folders
- Choose sync direction (one-way → or bidirectional ⇄)
- FolderSync will begin watching and syncing automatically
FolderSync uses JSON-based language files. To add a new language:
- Copy
FolderSync/Resources/Locales/en-US.json - Rename to your locale (e.g.,
ja-JP.json) - Translate all values, set
"languageName"to the native name (e.g.,"日本語") - Place in the
Locales/folder - Click the reload button (↻) next to the language picker
| Component | Technology |
|---|---|
| Language | Swift 5.10 + SwiftUI |
| Sync Engine | unison CLI |
| File Watching | FSEvents C API |
| iCloud | brctl download |
| Persistence | JSON in ~/Library/Application Support/FolderSync/ |
| UI | MenuBarExtra + NavigationSplitView |