Free and open-source iOS device manager for macOS.
Download -
Website -
Features -
Install
Phosphor gives you complete control over your iPhone, iPad, and iPod touch without proprietary software, iCloud lock-in, or subscriptions. Built natively with SwiftUI and powered by pymobiledevice3 with libimobiledevice as fallback. Supports iOS 17-26+.
Apple's Finder integration is all-or-nothing. Proprietary tools like iMazing cost $50/year. Phosphor fills the gap:
| Feature | Finder | iMazing | Phosphor |
|---|---|---|---|
| Full device backup | Yes | Yes | Yes |
| Incremental backup | No | Yes | Yes |
| Browse backup contents | No | Yes | Yes |
| Selective file restore | No | Yes | Yes |
| Export iMessages to CSV/HTML | No | Yes | Yes |
| Export WhatsApp messages | No | Yes | Yes |
| Photo extraction (no iCloud) | No | Yes | Yes |
| App data extraction | No | Yes | Yes |
| Install/remove IPAs | No | Yes | Yes |
| Battery health diagnostics | No | Yes | Yes |
| Real-time device console | No | Yes | Yes |
| Device file system browser | No | Yes | Yes |
| Drag-and-drop file transfer | No | Yes | Yes |
| Scheduled Wi-Fi backups | No | Yes | Yes |
| Time Machine backup restore | No | No | Yes |
| Contacts export (vCard/CSV) | No | Yes | Yes |
| Calendar export (ICS/CSV) | No | Yes | Yes |
| Apple Watch data browsing | No | Yes | Yes |
| Backup archive format | No | .imazing | .phosphor |
| Localization (7 languages) | No | Yes | Yes |
| Crash report viewer | No | Yes | Yes |
| Process monitor | No | Yes | Yes |
| Ringtone creator | No | Yes | Yes |
| HEIC to JPG conversion | No | Yes | Yes |
| iOS 26 support | N/A | Paid | Yes |
| Price | Free | $49.99/yr | Free |
| Open source | No | No | MIT |
- Automatic detection of connected iOS devices via USB
- Device info: model, iOS version, serial, UDID, IMEI, Wi-Fi/Bluetooth MAC
- Pair/unpair devices
- Restart, shutdown, sleep commands
- Take device screenshots
- Create full and incremental local backups (no iCloud required)
- Browse backup contents through parsed
Manifest.db - Navigate by domain (Camera Roll, Apps, Home, System, Keychain, etc.)
- Search files across the entire backup
- Extract individual files or entire domains
- Manage backup encryption
- Delete old backups
- Browse all iMessage and SMS conversations from backups
- View messages in a native chat-bubble interface
- Search across all messages
- Export conversations to CSV, HTML, Plain Text, or JSON
- Export all conversations at once
- HTML export styled like native iMessage (blue/gray bubbles)
- Browse Camera Roll from backup without restoring
- Filter by type: Photos, Videos, Screenshots
- Grid and list view modes
- Batch extract to any folder
- Preserves original filenames and structure
- List all installed apps on connected devices
- Browse apps stored in backups with data sizes
- Install
.ipafiles directly to device - Remove apps from device
- Extract individual app containers (Documents, Library, tmp)
- Browse device filesystem via AFC (Apple File Conduit) - no FUSE/ifuse required on macOS Sonoma+
- Navigate directories, view file metadata
- Copy files to/from device via pymobiledevice3 AFC push/pull
- Browse specific app containers (Documents, Library, tmp)
- Delete files on device
- Drag-and-drop file transfer
- Browse all contacts from backup AddressBook database
- View phone numbers, emails, organization details
- Search across all contacts
- Export as vCard (.vcf) or CSV
- Browse calendars and events from backup
- View event details, duration, all-day status
- Export as ICS (iCalendar) or CSV
- View paired Apple Watch info from iPhone backup
- Browse WatchKit extension apps with data sizes
- Activity ring history (Move, Exercise, Stand)
- Extract all Watch-related data from backup
- Battery: current charge, charging status, health percentage, design vs. actual capacity (mAh), cycle count, temperature
- Storage: total capacity, usage breakdown (Apps, Photos, Media, Other), available space
- Visual storage bar similar to macOS About This Mac
- Real-time device system log (syslog) streaming with proper process termination
- Filter and search logs
- Export logs to file
- Color-coded log levels (Error/Warning/Debug)
- Crash report viewer - Pull and browse device crash reports
- Process monitor - Live process list from device
- Time Machine mode: 3D animated backup browser for visual restore
- Scheduled backups: automatic hourly/daily/weekly/monthly via USB or Wi-Fi
- .phosphor archives: portable backup export/import format
- Backup encryption management (enable/disable/verify)
- Drag-and-drop file transfer in file browser
brew tap momenbasel/phosphor
brew install --cask phosphor- Download the latest
.dmgfrom Releases - Drag
Phosphor.appto Applications - Install pymobiledevice3:
pip3 install pymobiledevice3 - Optional fallback:
brew install libimobiledevice ideviceinstaller
# Install pymobiledevice3 (primary)
pip3 install pymobiledevice3
# Optional fallback tools
brew install libimobiledevice ideviceinstaller
# Clone and build
git clone https://github.com/momenbasel/Phosphor.git
cd Phosphor
swift build -c release
# Create app bundle
bash Scripts/build.sh
# Launch
open .build/Phosphor.app- macOS 14.0 (Sonoma) or later
- pymobiledevice3 (primary backend, supports iOS 17-26+):
pip3 install pymobiledevice3 - libimobiledevice (optional fallback):
brew install libimobiledevice - ideviceinstaller (optional fallback for app management)
- ifuse (legacy file mounting, not needed with pymobiledevice3)
Phosphor checks for available tools on launch and uses the best available backend automatically.
Sources/Phosphor/
App/ SwiftUI app entry point
Models/ DeviceInfo, BackupInfo, Message, MediaItem, AppBundle
Services/ DeviceManager, BackupManager, MessageExporter,
PhotoExtractor, AppManager, FileTransferManager,
DiagnosticsManager
ViewModels/ MVVM state management layer
Views/ SwiftUI views organized by feature
Utilities/ Shell (process runner), SQLiteReader, BackupManifest,
PlistParser
Key design decisions:
- pymobiledevice3 primary, libimobiledevice fallback - Every operation tries pymobiledevice3 first (JSON-based, supports latest iOS), falls back to libimobiledevice CLI if unavailable.
- No C bindings - Wraps CLI tools via subprocess. Simpler dependency chain, easier to maintain.
- Direct SQLite - Parses iOS backup databases (
Manifest.db,sms.db) using systemsqlite3. Zero external Swift dependencies. - MVVM - Services handle business logic, ViewModels manage UI state, Views are declarative and composable.
- Zero external dependencies - Only system frameworks (SwiftUI, Foundation, sqlite3, UniformTypeIdentifiers).
Phosphor directly parses Apple's backup format:
~/Library/Application Support/MobileSync/Backup/<UDID>/
Info.plist Device metadata
Manifest.plist Encryption status, app list
Manifest.db SQLite database mapping files to SHA-1 hashes
Status.plist Backup state
<xx>/<sha1-hash> Actual files, organized in 2-char prefix dirs
The Manifest.db contains a Files table with columns:
fileID- SHA-1 hash (also the filename on disk)domain- e.g.,CameraRollDomain,AppDomain-com.example.apprelativePath- Original path within the domainflags- 1=file, 2=directory, 4=symlink
Phosphor parses this to provide file-system-like browsing without modifying the backup.
- WhatsApp message parsing (ChatStorage.sqlite)
- Apple Notes extraction (NoteStore.sqlite)
- Call log browsing and export
- Safari bookmarks and history
- Health data extraction (samples, workouts, all data types)
- Music and ringtone transfer (extract from backup, install to device via AFC)
- Batch operations (multi-select extract in Photos, Music)
- Wi-Fi device connection (libimobiledevice network mode)
- Encrypted backup browsing (via iphone-backup-decrypt)
- Drag-and-drop file transfer
- Localization (English, Arabic, Spanish, French, German, Japanese, Chinese)
- Apple Watch data through paired iPhone
- Time Machine-style backup restore with 3D animation
- Scheduled automatic backups (hourly/daily/weekly/monthly, Wi-Fi support)
- .phosphor backup archive format (portable backup export/import)
- Contacts browsing and export (vCard, CSV)
- Calendar events browsing and export (ICS, CSV)
- Device-to-device transfer (clone) - backup source, restore to destination
- Full pymobiledevice3 migration (72 Shell calls, 13 services)
- Crash report viewer
- Process monitor
- Ringtone creator (afconvert)
- HEIC to JPG conversion (sips)
- Backup progress bar with percentage
- Syslog proper process termination
- Backup cancel support
- Backup encryption management (enable/disable/change password)
- Voicemail browsing
Starting with v1.0.4, Phosphor's default backup directory is ~/Documents/Phosphor Backups. This is a user-owned location, so Phosphor needs no special permission grant; it also keeps Phosphor's backups separate from Finder's, which eliminates any risk of a Phosphor run corrupting Finder-managed backups.
If you are upgrading from v1.0.3 or earlier and were using the system MobileSync directory, Phosphor will detect existing backups there on first launch and pin it as your override - nothing changes. You can switch to the new default any time from Phosphor -> Settings -> Backup Directory -> Reset.
Phosphor now surfaces the underlying pymobiledevice3 and idevicebackup2 stderr in the failure message. Common causes:
- Directory "is not readable" / permission denied - you pointed Phosphor at
~/Library/Application Support/MobileSync/Backupbut did not grant Full Disk Access. Prefer switching the backup directory back to the default~/Documents/Phosphor Backupsin Settings; only grant Full Disk Access if you specifically need Phosphor to read Apple's shared backups. - Trust prompt missed - Unlock the device, tap Trust This Computer, enter your passcode, then retry the backup.
- Stale pymobiledevice3 - iOS 17/18/26 require a recent release. Upgrade with:
pip3 install --upgrade pymobiledevice3
- Binary not on PATH - GUI apps do not inherit your shell PATH. Phosphor probes
pipx, Homebrew, and~/Library/Python/3.{10..14}/binautomatically; if you installed pymobiledevice3 elsewhere, symlink it into one of those directories. - Missing Python dependencies -
ModuleNotFoundErrorin the failure details means a partial install. Reinstall withpip3 install --upgrade --force-reinstall pymobiledevice3. - Pairing record mismatch - From Terminal, run
pymobiledevice3 lockdown paironce, accept the Trust prompt, then retry.
For encrypted backup issues, verify the device has a passcode set and that pymobiledevice3 backup2 encryption reports the expected state.
See CONTRIBUTING.md for development setup and guidelines.
- pymobiledevice3 - Pure Python implementation of Apple's mobile device protocols (primary backend)
- libimobiledevice - Cross-platform protocol library for iOS devices (fallback)
- ifuse - FUSE filesystem for iOS devices (legacy)
- Apple's SF Symbols for iconography
MIT - Use it, fork it, ship it.