See how iOS apps quietly change what they collect about you.
Warning
Pre-1.0 — no stable release yet. Anything can change in any release, including a patch: APIs, config keys, file formats, and data already on disk. Keep your own backups. Project status. The badge above is generated from the privacykey status list, which says what I promise for this project and every other one.
privacytracker watches the privacy labels Apple shows on each app's App Store page — Data Used to Track You, Data Linked to You, Data Not Linked to You — and tells you when an app you use changes them. It can summarise developer privacy policies in plain language, and pull historical label snapshots back to 2021 so you can see how an app's data practices evolved.
It runs entirely on your own computer. No accounts, no servers, no tracking.
Policy summaries are the one exception, and they are off by default. Turning them on means bringing your own model — OpenAI, Anthropic, or any OpenAI-compatible endpoint including a local Ollama. Nothing is sent anywhere until you configure a provider yourself.
Get your apps in. Four ways, because there is no good API for "what is installed on my phone": screenshots of your App Library (read with on-device OCR), a text or CSV file, an Apple Configurator export, or typing names in. There is also a stdlib-only Python helper that reads an iTunes backup or a connected device.
Watch what changes. Re-syncs diff each app's labels against the last snapshot and tell you what moved — a new tracking category, a permission that became linked to your identity. The per-app timeline shows every change since you started tracking it.
Decide what you're comfortable with. Set a privacy profile — Strict, Balanced, Anti-tracking only, Permissive, or per-category — and the app flags which of your apps don't match, rather than leaving you to read fourteen categories per app yourself.
Work out what to remove. Review recommendations and a shortlist help you get from "this is uncomfortable" to a decision, and you can compare apps side by side before choosing between them.
Set it up for who you're helping. The interface adapts depending on whether you're looking at your own phone, helping someone else with theirs, or checking a child's — the last of which adds age-rating checks and a parental-controls guide. There's also an accessibility mode where colour is never the only signal.
Also in the box: manual entries for apps that were never on the App Store, a customisable dashboard, statistics, backup and restore, an exportable audit bundle, and webhook notifications.
brew tap privacykey/tap
brew install --cask privacytrackerGrab the latest signed .dmg from
Releases.
Apple Silicon and Intel builds are both signed and notarised, so they open
without "unidentified developer" warnings and update themselves in the
background.
Available as a Docker image — see docs/ARCHITECTURE.md for how the pieces fit together.
Everything is stored in a single local SQLite file (data/privacy.db — a
Docker named volume by default, or the app-data directory in the desktop
build). The app restricts it to your user account on open (0700 on the
directory, 0600 on the database files).
Be aware that if you configure an AI provider, your API key is stored in plaintext inside that local database — anyone with access to your user account, or your backups, can read it. Treat the machine as the trust boundary and prefer a key with a spending cap. Moving desktop keys into the OS keychain is planned.
Contributions are welcome — CONTRIBUTING.md has the full setup. The commands CI runs:
pnpm install --frozen-lockfile
pnpm lint # Ultracite (Biome) — lint + format
pnpm typecheck # tsc --noEmit
pnpm test # node:test suite
pnpm lint:i18n # locale key parity against en.jsonUse pnpm, not npm — the repo pins pnpm@11.1.2 via packageManager and
every workflow installs from pnpm-lock.yaml. Node 24+ is required.
Two conventions are easy to miss: the accessibility gate is blocking, and all user-facing copy goes through i18n. AGENTS.md is the canonical deep-dive on how everything fits together, and docs/ARCHITECTURE.md has end-to-end diagrams of every process with weak points marked.
- Code of Conduct
- Getting help
- Release history
- Reporting a vulnerability — please don't open a public issue