Consolidate every phone backup into one deduplicated library — and reclaim the rest.
Local-first desktop app to recover, unify, and explore Android phone data. Your photos, videos, audio, contacts, messages, notes, and calendar from every backup — merged once, deduplicated by content, with full provenance so you can safely purge the old backups.
You back up your phone — SmartSwitch, a folder copy, an export — and it's great. Then you do it again. And again. Each backup re-copies photos, videos, and audio that were already in the last one. After a few rounds you have overlapping backups eating tens of GB, and no idea which one is safe to delete or what you removed in between. It becomes a mess.
PhoneBridge merges all your backups into one library, deduplicated by content (not by filename or path), and remembers where every file came from. Once a backup is fully represented in the library, PhoneBridge tells you it's safe to purge — so you reclaim space without ever losing data.
Privacy first: everything runs on your machine. No cloud upload, no telemetry, ever.
| Capability | Status | |
|---|---|---|
| 🗂️ | Index user-selected folders into a SQLite library | ✅ Working |
| 📦 | Detect Samsung SmartSwitch backups + metrics | ✅ Working |
| 🖼️ | Local gallery with photo previews | ✅ Working |
| 🔌 | Detect connected Android devices (ADB) | ✅ Working |
| ♻️ | Content-based dedup across backups | 🚧 In progress |
| 🧭 | Provenance + "safe to purge" advisor | 🚧 In progress |
| 📁 | Pick any folder / any phone as a source | ✅ Working |
| 📲 | On-device sync straight from the phone (no SmartSwitch) | 🚧 Alpha |
| 👤 | Contacts · 🗓️ Calendar · 📝 Notes · Apps/APKs · 💬 WhatsApp | 🚧 Alpha |
SmartSwitch ┐
Folder ─────┤ hash (SHA-256) ┌─ one copy per unique file
ADB pull ───┼──▶ dedup by content ─┤─ provenance: which backups/devices/paths
Takeout ────┘ + index (SQLite) └─ safe-purge advisor (reclaim GB)
PhoneBridge is Android-generic by design: Samsung SmartSwitch is the first backup adapter, not the
product boundary. New sources plug in through a single BackupAdapter trait.
- Frontend — React 19 + TypeScript + Vite
- Backend — Rust (Tauri v2),
rusqlite,walkdir,zip, local crypto helpers for user-supplied backup keys - Storage — local SQLite library at
~/.phonebridge/, media under a consolidated folder - Design — see Art Direction ("Indigo local-first")
PhoneBridge is built in epics (full backlog tracked privately):
- A — Consolidation engine: content dedup, provenance, safe-purge (core)
- B — Multi-device & adapters: folder picker, generic folder, adapter registry, Google Takeout
- C — On-device sync: pull media (incl. WhatsApp) straight from the phone via the app
- D — Structured data: contacts, calendar, Samsung Notes, messages, apps, browser
- E — Branding & polish: identity, dark mode, real screenshots
- F/G — Hardening, tests, DX
Tauri v2 · Rust · React · TypeScript · Vite.
npm install
npm run typecheck
npm run tauri devBefore a PR: npm run typecheck && npm test && npm run build && npm audit --audit-level=high && cargo test --manifest-path src-tauri/Cargo.toml.
See CONTRIBUTING.md.
Tagged releases build installers with GitHub Actions and attach them to the release page.
- macOS: download the
.dmg, dragPhoneBridge.appto/Applications, then open it. - Linux: download the
.AppImageor.deb. - Windows: download the
.msior.exe.
If macOS blocks the app because it was downloaded outside the App Store, remove the quarantine attribute locally:
xattr -cr /Applications/PhoneBridge.appThis does not notarize the app; it only clears the local download quarantine flag for your copy.
PhoneBridge is designed to ask for the minimum it needs.
- Open Start and choose Start guided import.
- Pick one source: a connected Android phone, a detected SmartSwitch backup, or any folder.
- Review the preview, then click Import and deduplicate.
By default, PhoneBridge stores deduplicated copies in ~/.phonebridge/library and leaves your original phone,
backup, and folder data untouched. Advanced path editing and low-level tools are hidden unless you choose to
open them.
WhatsApp message databases are handled separately because they are encrypted. PhoneBridge can decrypt locally only when you provide your own encrypted database and matching key material; it never roots a phone or extracts keys automatically.
PhoneBridge handles highly sensitive data (photos, messages, contacts, call logs, device identifiers).
- Process data locally by default — no network calls.
- No telemetry without explicit opt-in.
- Never commit real backups, IMEI values, account emails, messages, contacts, or media fixtures.
- Prefer anonymized fixtures; redact device identifiers in logs.