Draft, not reviewed by counsel
What Peek stores and sends
Peek works on your Mac. Your screen, its text and your voice go only to the AI you chose, after secrets are removed. Nothing about your captures is ever sent to Peek's developer.
Kept on your Mac
| What | Where | How long |
|---|---|---|
| Settings (shortcuts, format, toggles, tmux pane) | ~/Library/Preferences/dev.peek.Peek.plist | Until you change them |
| Claude and Gemini API keys | Login Keychain | Until you remove them |
| Peek Pro key, this Mac's activation id, purchase email | Login Keychain | Until you deactivate |
| Trial start date | Login Keychain | Kept, so reinstalling doesn't restart the trial |
| Last 20 captures: blurred image, masked text, AI description, masked voice note | ~/Library/Application Support/Peek/History/ | 14 days |
| Usage counts waiting to be sent (only if you turned them on) | ~/Library/Application Support/Peek/usage-queue.json | Until sent, at most 500 |
| Peek's log (content marked private by macOS) | macOS unified log | As macOS decides |
Settings › Privacy › Clear History removes captures. Uninstalling with brew uninstall --zap peek removes the rest except Keychain items.
Sent off your Mac
| To | What | When |
|---|---|---|
The AI you chose (Anthropic, Google, or your claude login) | The blurred image, the masked text, and if you turned them on: window text, voice note and coding-session excerpt, all masked | Each capture |
Lemon Squeezy (api.lemonsqueezy.com) | Your license key and this Mac's name | When you activate, about once a week, and when you deactivate |
PostHog EU (eu.i.posthog.com), only if you turned on usage counts | The events listed below | About every 10 minutes |
| PostHog EU, only if you agree each time or chose "Always send" | Where in Peek's code a crash happened, under a one-time random id (not the usage-counts id) | The launch after a crash |
Usage counts
Off unless you turn them on, in the setup screen or Settings › Privacy. Each event has a name and only these kinds of fields: a fixed list of values (such as chat or timeout), numbers, and yes or no. It also carries the app and macOS versions and a random id that you can reset. PostHog is told not to build a profile and not to keep your IP address.
It never carries your screen, any text from it, voice, window titles, file paths, project or branch names, coding-session content, URLs, API or license keys, email addresses, or your Mac's name. Peek's code has no way to attach free text to an event, and a test checks every field name that can be sent.
| Event | Fields |
|---|---|
app_launched | plan (free, trial or pro) |
onboarding_step | step number |
permission_granted | which permission |
capture_completed | kind of capture, kind of destination, which AI service, OCR and AI time, number of secrets hidden, success |
capture_failed | kind of capture, kind of failure (such as timeout or offline) |
agent_request | which peek or MCP command |
pro_gate_hit, upsell_shown | which Pro feature |
buy_clicked, trial_started, trial_ended, license_activated, license_revoked | nothing else |
Crash reports
After a crash, Peek asks before sending anything. Settings › Privacy › Crash reports sets it to Ask each time, Always send or Never send. A report holds the exception type, the signal, Peek's version and up to 30 code locations (library name, function, offset) from the crashed thread. It gets its own random id, so it can't be linked to usage counts or to another crash.
This website
peekhq.app sets no cookies and runs no analytics. Vercel hosts it and processes request data such as your IP address to serve pages. Purchases go through Lemon Squeezy, which acts as the seller and handles payment details; Peek never sees them.
Diagnostics
Settings › About › Copy Diagnostics copies your setup and Peek's recent log to the clipboard, with secrets and your user name removed. Nothing is uploaded: you decide where to paste it.
Questions
Write to support@peekhq.app.