To verify that Ghost Pepper is running 100% locally with no unauthorized network calls, you can run a privacy audit using an AI assistant (like Claude Code) with access to the repository.
Use the following prompt to audit the codebase:
Review the Ghost Pepper codebase and confirm that all default features run 100% locally with no network calls. Specifically verify:
- Speech-to-text — transcription runs entirely on-device (WhisperKit, FluidAudio, Qwen3-ASR). No audio is sent to any server.
- Text cleanup — the local Qwen LLM cleans up transcriptions on-device. No text is sent to any API.
- Audio recording — mic and system audio capture use AVAudioEngine and ScreenCaptureKit only. No audio is streamed or uploaded.
- Meeting transcription & summarization — chunked transcription, markdown storage, and LLM summary generation all happen locally. No meeting content leaves the device.
- OCR & screen capture — Vision framework runs on-device. Screenshots are processed locally and never transmitted.
- File storage — all meeting notes, transcripts, and summaries are saved as local markdown files. No cloud sync, no remote backup.
- No third-party tracking SDKs — confirm there are no tracking SDKs (Firebase, Mixpanel, Sentry, Amplitude, PostHog, Datadog, Segment, etc.) anywhere in the codebase. Local-only usage counters (UserDefaults) power the in-app Usage report panel — verify they don't make network calls.
For each item, check the relevant source files and confirm no URLSession, URLRequest, or HTTP URL strings exist in the core feature code. List any cloud-connected features separately and confirm they are all opt-in (disabled by default, require user-provided API keys).
Output your findings as a checklist with pass/fail for each item.
> Review the Ghost Pepper codebase and confirm that all default features run 100% locally with no network calls. Specifically verify:
>
> 1. **Speech-to-text** — transcription runs entirely on-device (WhisperKit, FluidAudio, Qwen3-ASR). No audio is sent to any server.
> 2. **Text cleanup** — the local Qwen LLM cleans up transcriptions on-device. No text is sent to any API.
> 3. **Audio recording** — mic and system audio capture use AVAudioEngine and ScreenCaptureKit only. No audio is streamed or uploaded.
> 4. **Meeting transcription & summarization** — chunked transcription, markdown storage, and LLM summary generation all happen locally. No meeting content leaves the device.
> 5. **OCR & screen capture** — Vision framework runs on-device. Screenshots are processed locally and never transmitted.
> 6. **File storage** — all meeting notes, transcripts, and summaries are saved as local markdown files. No cloud sync, no remote backup.
> 7. **No third-party tracking SDKs** — confirm there are no tracking SDKs (Firebase, Mixpanel, Sentry, Amplitude, PostHog, Datadog, Segment, etc.) anywhere in the codebase. Local-only usage counters (UserDefaults) power the in-app Usage report panel — verify they don't make network calls.
>
> For each item, check the relevant source files and confirm no `URLSession`, `URLRequest`, or HTTP URL strings exist in the core feature code. List any cloud-connected features separately and confirm they are all opt-in (disabled by default, require user-provided API keys).
>
> Output your findings as a checklist with pass/fail for each item.