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