{"id":50034017,"url":"https://github.com/vertocode/whisper-pilot","last_synced_at":"2026-06-07T22:01:09.007Z","repository":{"id":357944816,"uuid":"1232426963","full_name":"vertocode/whisper-pilot","owner":"vertocode","description":"An invisible, local-first AI co-pilot for everything you do on your Mac. Listens, transcribes on-device, and lets you ask an AI about what's happening — without alt-tabbing.","archived":false,"fork":false,"pushed_at":"2026-05-29T23:41:43.000Z","size":2785,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T01:20:07.631Z","etag":null,"topics":["ai","ai-assistant","mac-app","meeting-assistant","meeting-notes","swift","whisper-pilot"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vertocode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-07T23:28:05.000Z","updated_at":"2026-05-26T22:05:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vertocode/whisper-pilot","commit_stats":null,"previous_names":["vertocode/whisper-pilot"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/vertocode/whisper-pilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertocode%2Fwhisper-pilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertocode%2Fwhisper-pilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertocode%2Fwhisper-pilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertocode%2Fwhisper-pilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vertocode","download_url":"https://codeload.github.com/vertocode/whisper-pilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertocode%2Fwhisper-pilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34039495,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistant","mac-app","meeting-assistant","meeting-notes","swift","whisper-pilot"],"created_at":"2026-05-20T23:10:30.299Z","updated_at":"2026-06-07T22:01:08.967Z","avatar_url":"https://github.com/vertocode.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Resources/Branding/whisper-logo-nobg.png\" alt=\"Whisper Pilot\" width=\"160\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eWhisper Pilot\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eAmbient, local-first AI co-pilot for live conversations on your Mac.\u003c/strong\u003e\u003cbr\u003e\n  Listens, transcribes on-device, and lets you ask an AI about what's happening — without alt-tabbing.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/vertocode/whisper-pilot/releases/latest\"\u003e\u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/v/release/vertocode/whisper-pilot?display_name=tag\u0026color=blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/vertocode/whisper-pilot/releases\"\u003e\u003cimg alt=\"Status: alpha\" src=\"https://img.shields.io/badge/status-alpha-orange\" title=\"Alpha: under active development, expect bugs and breaking changes\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"#requirements\"\u003e\u003cimg alt=\"macOS\" src=\"https://img.shields.io/badge/macOS-14%2B-lightgrey\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nWhisper Pilot listens to anything your Mac can hear — meetings, podcasts, tutorials, your own voice — transcribes it on-device, and streams answers from your favorite LLM into a translucent floating overlay. Bring your own key. No backend. No telemetry. No signup.\n\n**Built for:** live meetings (Zoom, Meet, Teams, Slack, Discord), tutorials and lectures, pair programming with screen context, live translation, and anything else you might want to ask a question *about right now*.\n\n## Install\n\n\u003e **Alpha note:** releases are not yet signed with an Apple Developer ID, so macOS Gatekeeper will block the first launch. See [Allow the app through Gatekeeper](#allow-the-app-through-gatekeeper) below for the one-time unblock — it takes about ten seconds. Prefer to build from source? See [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md#project-setup).\n\n### Homebrew\n\n```sh\nbrew install --cask vertocode/whisper-pilot/whisper-pilot\n```\n\nUpdate with `brew upgrade --cask whisper-pilot`. Uninstall with `brew uninstall --cask whisper-pilot`. Pass `--zap` to also clear preferences (session transcripts are deliberately kept).\n\n### Direct download\n\nGrab the latest `.dmg` from the [Releases page](https://github.com/vertocode/whisper-pilot/releases) and drag `WhisperPilot.app` into `/Applications`.\n\n### Allow the app through Gatekeeper\n\nBecause Whisper Pilot isn't signed with an Apple Developer ID yet, the first launch (whether installed via Homebrew or the `.dmg`) shows a dialog like *\"WhisperPilot can't be opened because Apple cannot check it for malicious software.\"* This is expected.\n\nTo allow it:\n\n1. Open **System Settings → Privacy \u0026 Security**.\n2. Scroll down to the **Security** section — you'll see a line that says *\"WhisperPilot was blocked to protect your Mac.\"*\n3. Click **Open Anyway** next to that line. macOS asks you to confirm with your password / Touch ID.\n4. Launch Whisper Pilot again. This time a smaller dialog appears with an **Open** button — click it once. From then on, the app launches normally with no prompts.\n\nIf you prefer the Terminal: `xattr -dr com.apple.quarantine /Applications/WhisperPilot.app` removes the quarantine attribute and skips the dialog entirely.\n\n### First run\n\n1. Launch — the Sessions window opens. Click **Start new** to enter the overlay.\n2. Open Settings from the overlay's `…` menu → **AI Provider** tab → paste your [Gemini API key](https://aistudio.google.com/app/apikey). Stored in Keychain.\n3. Click **▶** in the overlay. macOS will prompt for **Microphone** permission (so your own voice can be transcribed) and, on Macs where the Core Audio Process Tap fails or you've enabled \"Force ScreenCaptureKit\" in Settings → Capture, **Screen Recording** as well (used only for the system-audio capture path — no video is recorded). Grant whichever it asks for.\n\n### Permissions reset every release — why?\n\nmacOS's privacy system (TCC) binds permission grants like Microphone and Screen Recording to the **code signature** of the binary that asked for them, not just the bundle ID. Whisper Pilot is currently distributed **unsigned** (no Apple Developer ID), so every release produces a different code-signing identity (none, really) — macOS sees each new build as a different app and asks for permission again.\n\nThere's no script-level workaround: macOS deliberately doesn't let installers or `sudo` grant TCC permissions on the user's behalf. The fix is to sign the app with a stable Apple Developer ID, after which TCC keeps the grant across rebuilds. `bin/release` already supports this when `WP_DEVELOPER_ID` is set in the environment — adopting it just requires an [Apple Developer Program](https://developer.apple.com/programs/) membership ($99/year).\n\nIf you only have a Mac mini that can't see system audio, also see **Settings → Capture → Force ScreenCaptureKit** — that switches the system-audio capture path to the one that triggers macOS's Screen Recording prompt, which is necessary on some output-device configurations where the default Core Audio Process Tap silently delivers no frames.\n\n### Where to find logs after a crash\n\nIf Whisper Pilot vanishes without warning (\"the app closed by itself\"), it's almost always because of a hard crash. Because the app runs as an accessory (no Dock icon), macOS doesn't always show a dialog. Two places to look:\n\n- **`~/Library/Application Support/com.whisperpilot.app/runtime.log`** — Whisper Pilot's own rolling log, written line-by-line. The tail is what was happening immediately before the crash. The app surfaces the last ~20 lines automatically on the next launch via the in-app log pane.\n- **`~/Library/Logs/DiagnosticReports/WhisperPilot-*.crash` (or `.ips`)** — macOS's own crash report with a full stack trace. Open in Console.app (Action → Reveal in Finder works backwards too).\n\nPlease attach both when [reporting a bug](https://github.com/vertocode/whisper-pilot/issues) about unexpected closes.\n\n### Report a bug\n\nHit a problem during install or use? Please [open an issue](https://github.com/vertocode/whisper-pilot/issues) — include your macOS version, what you ran, and any messages from the overlay's log panel. Pull requests with a fix are even better.\n\n## Requirements\n\n- macOS 14 (Sonoma) or later\n- Apple Silicon recommended (Intel works; transcription is slower)\n- A Gemini API key from [aistudio.google.com](https://aistudio.google.com/app/apikey)\n\n## How you use it\n\nThe overlay is always available once you've picked a session.\n\n- **Detected questions.** When someone asks *you* a question in a meeting, the trigger engine notices and streams a suggested answer into the AI lane automatically.\n- **Composer.** Type any question in the box at the bottom. ⌘⏎ to send. Tick *See my screen* to also include a screenshot.\n- **Auto-send.** Optionally set an interval (30s–5m) and the assistant proactively summarizes the recent conversation on every tick. Off by default.\n- **Pause AI.** Sparkles button in the header. Listening + transcribing keep running; only the AI is silenced.\n\n## Privacy\n\n- **Audio never leaves your device.** Capture and transcription are entirely local — `SFSpeechRecognizer` with on-device recognition where the locale supports it.\n- **The LLM is the only thing that talks to the network**, and only when *you* trigger it (auto-send tick, detected question, or composer submit). No background polling.\n- **Your API key lives in the macOS Keychain.** Never written to disk in plaintext.\n- **Screenshots are sent only when you tick *See my screen*** — never cached, never persisted.\n\n## Documentation\n\n| | |\n| --- | --- |\n| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | Module-by-module breakdown, data flow, protocols |\n| [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md) | Every setting and what it controls |\n| [`docs/SESSIONS.md`](docs/SESSIONS.md) | On-disk session format and resume semantics |\n| [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) | Build from source, conventions, areas that need help |\n| [`docs/RELEASE.md`](docs/RELEASE.md) | DMG signing, notarization, Homebrew tap workflow |\n| [`docs/ROADMAP.md`](docs/ROADMAP.md) | What's next: WhisperKit, Ollama, diarization, modes, RAG |\n\n## Contributing\n\nThe codebase is small, protocol-first, and intentionally non-magical — most contributions fit inside a single module. Start with [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md), then [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md). High-value areas right now: WhisperKit transcriber, Ollama provider, snapshot tests for the trigger heuristics, real app icon.\n\n## License\n\nMIT — see [`LICENSE`](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvertocode%2Fwhisper-pilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvertocode%2Fwhisper-pilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvertocode%2Fwhisper-pilot/lists"}