Perchnote raven, perched on a meeting notePerchnoteGitHub
Perchnote raven, perched on a meeting note

Local-first meeting notes for macOS

A familiar
that listens.

Records your meetings, writes up the notes, and keeps everything on your Mac. No cloud, no account.

macOSOpen sourceNo accountBYO AI key
Perchnote app showing live transcription of a meeting

The pact

Your meetings never leave your Mac.

  • On-device transcription

    whisper.cpp runs right on your Mac. Your audio doesn't get uploaded anywhere, not even to transcribe it.

  • Bring your own AI key

    Pick Anthropic, a local Ollama model, or Apple Intelligence. Your API key lives in your Keychain, not on a server we run.

  • Nothing phones home

    No analytics. No telemetry. No account. The only network calls are the ones you ask for.

Capabilities

Five things, done well.

  1. 01Capture

    Record and transcribe live.

    Captures your mic, and your system audio if you want it. whisper.cpp writes the transcript as you talk.

  2. 02Recognize

    Knows who's talking, next time too.

    Click play on a clip, type the name, save. The next time that person joins a call, Perchnote recognizes their voice.

  3. 03Shape

    Cleaned-up notes in one press.

    Hit Enhance. The transcript becomes a real document with sections, action items, assignees, deadlines, and tags.

  4. 04Ask

    Ask questions about anything you've recorded.

    Search one meeting or your whole archive. The answers come from your transcripts, not the web.

  5. 05Connect

    Calendar and Slack, only if you want them.

    Sync with Google, Microsoft, or any ICS feed. Share notes to Slack through a webhook you set up.

Stack

Built like infrastructure.

~/perchnote/stack
shell       Tauri 2 + Rust  // small native binary, not Electrontranscribe  whisper.cpp  // runs locally, audio stays on your Macai          Anthropic · Ollama · Apple Intelligence  // pick whichever you wantstore       SQLite + macOS Keychain  // local file, local secretseditor      TipTap 2  // with custom blocks for AI output

Security

Engineered to keep its mouth shut.

  • keychain.secrets

    Auth tokens live in the macOS Keychain. They never touch the database.

  • csp.hard

    The production Content Security Policy blocks unsafe-eval and unsafe-inline scripts.

  • no.shell.plugin

    The web frontend can't spawn processes or open random URLs.

  • ssrf.guard

    Every outbound fetch resolves DNS itself and rejects private, loopback, and cloud-metadata IPs.

  • path.traversal.safe

    File IDs are validated as UUIDs before they touch the filesystem. Paths stay inside the app's data folder.

  • prompt.injection.fenced

    Transcripts get fenced before going to the model. A system preamble tells it to treat fenced content as data, not commands.

Read the full threat model on GitHub →

Perchnote is open source.

Read the source. File issues. Star it if you like it.

Star Perchnote on GitHub

Built for macOS · Open source · Source on GitHub