Mount SMB network shares as local Finder volumes with smart caching and offline file support.
- One-click mounting — connect to any SMB share as a local volume in Finder
- Smart caching — files are cached locally as you access them; configurable cache size
- Keep on this Mac — download an entire share for offline access, like iCloud's "Keep Downloaded"
- Offline protection — mark individual files or folders so they're never evicted from cache
- Drag-and-drop setup — drag a file from an existing Finder SMB connection to auto-configure a new share
- Per-share sync modes — stream (access-as-needed) or keep-local (full offline copy)
- Menu bar control — quick connect/disconnect from the menu bar icon
- Auto-updates — built-in updater checks for new versions automatically (via Sparkle)
- macOS 14.0 (Sonoma) or later
- Apple Silicon or Intel Mac
- rclone installed (the app will offer to install it automatically on first launch)
- Download
Mirage-v1.0.0-aarch64.zipfrom the Releases page - Extract the zip and move
Mirage.appto your Applications folder - Double-click to open — macOS will block it the first time
- Go to System Settings → Privacy & Security and click Open Anyway
- Mirage will open normally from that point on
- Click + or drag a file from a Finder SMB connection into the app window
- Enter your server address, share name, username, and password
- Click Connect — the share appears in Finder as a local volume
- To work offline, click Keep on this Mac to download everything to your local cache
All settings are in Mirage → Settings:
| Setting | Description |
|---|---|
| rclone path | Path to rclone binary (auto-detected) |
| Max cache size | Global disk limit for all cached shares (default: 50 GB) |
| Auto-connect on launch | Mount all shares when the app opens |
Per-share settings (in the share's detail view):
| Setting | Description |
|---|---|
| Cache mode | off / minimal / writes / full |
| Cache max age | How long files stay cached before rclone re-checks |
| Write-back delay | How long before modified files are uploaded |
| Custom cache location | Override to an external drive |
git clone https://github.com/NorthwoodsCommunityChurch/avl-mirage.git
cd avl-mirage/Mirage
xcodegen # generates Mirage.xcodeproj from project.yml
open Mirage.xcodeprojBuild and run with ⌘R in Xcode, or use the release build script (see App Updates/sparkle-build-template.sh).
rclone must be installed separately: brew install rclone
Mirage/
├── Mirage/
│ ├── App/ # Entry point, AppState coordinator, AppDelegate
│ ├── Models/ # SMBShareConfig, MountStatus, VFSCacheMode
│ ├── Services/ # RcloneProcessManager, CacheManager, CacheWarmer,
│ │ # KeychainHelper, RcloneInstaller, StatusMonitor
│ ├── Utilities/ # Process async wrapper, byte formatting, extensions
│ ├── Views/ # All SwiftUI views
│ └── Resources/ # Info.plist, entitlements, app icons
├── MirageTests/ # XCTest unit tests (command builder, paths)
└── project.yml # XcodeGen project configuration
MIT — see LICENSE
See CREDITS.md