Skip to content

tuanda2912/hark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

93 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ™οΈ Hark

Local-first meeting transcription for macOS

Live captions Β· translation Β· speaker recognition Β· a markdown second-brain β€” running entirely on your Mac.

Platform Apple Silicon On-device No telemetry License Status


Hark listens to your microphone and your meeting's system audio, transcribes it on-device with WhisperKit, labels who spoke with FluidAudio diarization, and writes clean markdown notes into a vault folder you own and control.

No cloud speech-to-text. No account. No telemetry. No background sync.

Important

Your meeting content never leaves your Mac unless you explicitly invoke an action that sends it somewhere. Transcription, speaker recognition, and storage are 100% on-device. The two sensitive features β€” keeping audio and remembering voices β€” are off until you turn them on. See Your data & privacy below.


✨ What Hark does

  • 🎧 Live captions while you record β€” your mic and the meeting's system audio, mixed and transcribed in near real-time. Tap your meeting audio even while listening on Bluetooth headphones, without forcing the room to hear it.
  • 🌍 Translation β€” caption languages you don't speak (quality modes in progress).
  • πŸ—£οΈ Speaker labels β€” after you stop recording, an accurate offline pass labels each line ("Speaker 1", "Speaker 2", …). Name them once; with Remember speakers on, Hark recognizes those voices automatically in future meetings.
  • πŸ“ A markdown vault β€” every meeting is a plain .md file with front-matter, transcript, and bookmarks. Yours to grep, link, back up, and own forever.
  • πŸ”– Bookmarks β€” mark a moment mid-meeting and jump back to it later.

πŸ”’ Your data & privacy

Privacy and trust are the product. Hark is built so that lawful, private use is possible β€” everything stays on your machine, and the sensitive bits are opt-in.

Hark keeps three kinds of data, and you control each one:

What Why it exists Stored? Leaves your Mac?
πŸ“„ Transcript (markdown) your meeting notes β€” the product βœ… always, in your vault only if you sync your vault
🎡 Audio recording re-listen / verify-by-ear review β›” off by default β€” opt-in β›” off by default
🧬 Voiceprints (.speakers/) recognize known voices across meetings β›” off by default β€” opt-in β›” off by default

Where everything lives

Location Contents
~/Documents/vault/hark (configurable) Your transcripts. Audio + voiceprints only if you enable them. Hark never auto-deletes or silently rewrites this folder, and every change goes through git so your history is recoverable.
~/Library/Application Support/Hark/ Model cache + preferences. No transcripts, no audio, no personal content.
~/Library/Logs/Hark/ Local-only logs. Never uploaded.

You opt in β€” knowingly, and reversibly

The two sensitive features are off until you turn them on, and you're asked to choose during onboarding:

  • 🎡 Keep audio β€” save the meeting's audio so you can re-listen later. Off by default.
  • 🧬 Remember speakers β€” when you name a speaker after a meeting, store a voiceprint (a mathematical fingerprint of their voice) so Hark can auto-recognize them next time. Off by default.

Change them any time in Settings β†’ Privacy, which shows exactly what's stored and where.

Syncing is off by default

Audio recordings and voiceprints are excluded from your vault's git history (.gitignored), so they never travel through a git remote. If you keep your vault in a folder-syncing service (iCloud Drive, Dropbox, …), remember those copy whole folders β€” so if you've enabled audio/voiceprints and want them to stay on this Mac only, exclude them there. Settings β†’ Privacy spells this out.

Warning

A note on consent β€” this is not legal advice. Recording conversations and storing voiceprints may require the consent of the other participants under your local laws β€” you are responsible for obtaining it. Hark keeps everything on your Mac, and keeps these features off by default, to support that.

Full rationale: ADR-0027 β€” Privacy & data-control model.


🚫 What Hark deliberately does not do

  • No cloud speech-to-text. Transcription is 100% on-device.
  • No telemetry, analytics, or content-exfiltrating crash reporters.
  • No auto-join of Zoom / Teams / Meet, and no calendar integration.
  • macOS only β€” no Windows, Linux, iOS, or Android.

These are intentional, locked decisions β€” see the ADRs for the reasoning.

Why there's no live "who's speaking now"

Diarizing a mixed, compressed meeting stream live (everyone blended into one system-audio track) isn't reliably solvable on-device today β€” even the accurate offline pass struggles on that audio. So speaker labels appear after you stop recording, where they're accurate, rather than showing confidently-wrong labels live. See ADR-0025.


πŸ—οΈ How it works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         ws://127.0.0.1 (loopback only)        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   harkd  (Swift daemon)  β”‚ ◄───────────────────────────────────────────► β”‚  Electron + Angular   β”‚
β”‚                          β”‚                                                β”‚       front-end       β”‚
β”‚  mic ─┐                  β”‚                                                β”‚                       β”‚
β”‚       β”œβ”€ mixer ─ VAD ─ WhisperKit ─ segments ──►  (over the socket) ──►   β”‚  live captions, tray, β”‚
β”‚  sys β”€β”˜                  β”‚                                                β”‚  settings, vault view β”‚
β”‚                          β”‚                                                β”‚                       β”‚
β”‚  on stop: FluidAudio     β”‚                                                β”‚                       β”‚
β”‚  diarization + enrollmentβ”‚                                                β”‚                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ writes
           β–Ό
   ~/Documents/vault/hark/*.md

A Swift sidecar daemon (harkd) does capture + ASR + diarization and exposes a loopback-only WebSocket. The Electron + Angular front-end connects over ws://127.0.0.1. The daemon binds only to localhost, writes its port to app-data, and never opens an outbound socket. Full design rationale: meetingmind-handoff.md.


πŸ› οΈ Building from source

Pre-v1: there's no released binary yet. These are the development build steps. Apple Silicon

  • macOS 14.4+ required.

Engine (harkd Swift daemon):

cd engine
swift build -c release            # builds harkd + the hark-* CLIs
swift test                        # run the engine test suite

System-audio capture needs a signed bundle for TCC permission attribution β€” see engine/scripts/sign-dev-bundle.sh and the dev loop in STATUS.md.

Front-end (Electron + Angular):

cd ui
npm install
npm run dev        # Angular dev server + Electron, against a running harkd
npm run pack       # unpacked app bundle (electron-builder --dir)
npm run dist       # signed/packaged .app (electron-builder --mac)

πŸ“‚ Project layout

hark/
β”œβ”€β”€ engine/                 Swift daemon β€” WhisperKit ASR + FluidAudio diarization + WS server
β”‚   └── scripts/            dev signing helper
β”œβ”€β”€ ui/                     Electron + Angular 21 front-end
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ decisions/          Architecture Decision Records (the "why")
β”‚   └── BACKLOG.md          deferred-work ledger
β”œβ”€β”€ CLAUDE.md               operating manual / project conventions
β”œβ”€β”€ STATUS.md               current-state snapshot (start here when resuming)
└── meetingmind-handoff.md  full design rationale

πŸ“š Documentation


πŸ“„ License

MIT Β© 2026 Dang Anh Tuan

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors