Skip to content

Apple Juicer

Apple Juicer

Turn an iOS backup into browsable forensic artifacts.

Point Apple Juicer at a folder of Finder/iTunes backups. It discovers them, decrypts the encrypted ones in the background, indexes ten artifact types into a database, and gives you a web UI to browse conversations, photos, call history, locations and more, search across all of them at once, and export what you find.

APPLE JUICER · PIPELINE Drop in an encrypted backup, browse forensic artifacts out ENCRYPTED MANIFEST ARTIFACTS SCAN Discover backup paths find backups on disk WORKER Decrypt keybag + manifest background job WORKER Index registry ingest parse SQLite → DB UI Browse 10 artifact types search · timeline · export Self-hosted. Your backups never leave your machine. github.com/giovi321/apple-juicer

Apple Juicer indexes ten artifact types, each with its own browsable view:

ArtifactSourceWhat you get
WhatsAppChatStorage.sqliteChats, messages, attachments
Messageschat.dbiMessage and SMS conversations
PhotosPhotos.sqlitePhoto timeline with thumbnails and full-size view
NotesNoteStore.sqliteNote bodies and folders
CalendarCalendar.sqlitedbEvents and calendars
ContactsAddressBook.sqlitedbAddress book entries
CallsCallHistory.storedataCall log
SafariHistory.dbBrowsing history
Locationsroutined cachesSignificant locations
Voicemailvoicemail.dbVoicemail messages

On top of the per-artifact views, five features cut across all of them:

  • People. A contact-centric view that collapses one person’s WhatsApp messages, iMessages, calls, and voicemails into a single entity, with the name resolved from Contacts. It answers who, where search answers what and the timeline answers when.
  • Map. Significant locations and geotagged photos plotted on a Leaflet map — it answers where.
  • Global search. One query runs against every indexed type, and a hit links straight back to the conversation or record it came from.
  • Unified timeline. Messages, photos, calls and the rest merge into a single reverse-chronological stream.
  • Export. Download any tabular view as CSV, or generate a one-page PDF summary of the whole backup.
Terminal window
git clone https://github.com/giovi321/apple-juicer.git
cd apple-juicer
docker compose up -d

Open http://localhost:5173, paste the API token (dev-token by default), and refresh to discover the backups under your mounted directory. See Quick Start for the full walkthrough.

Apple Juicer runs as five services behind Docker Compose: a FastAPI backend, an RQ worker for the slow parsing jobs, PostgreSQL for the indexed data, Redis for the job queue, and a React frontend served by nginx. The backend stays responsive while the worker chews through a backup in the background, and the original backups stay on disk, mounted read-only.

See the Architecture Overview for the full picture.

ComponentTechnology
BackendPython 3.12 + FastAPI + async SQLAlchemy
WorkerRQ (Redis Queue)
FrontendReact 19 + TypeScript + Vite 7
DatabasePostgreSQL 16 (SQLite for tests and local runs)
QueueRedis 7
Decryptioniphone-backup-decrypt
DeploymentDocker Compose