A private meeting recorder and transcriber for iPhone and Mac. Record in-person meetings on your iPhone and online meetings on your Mac, get transcripts in Arabic, English or both mixed together, and turn them into summaries, decisions and action items — all on your own devices.
No account, no server, no cloud, no analytics. Speech recognition, speaker detection and meeting intelligence run on-device. The iPhone and Mac talk to each other directly over your local network, encrypted.
Recording and transcription
- Organizations → projects → meetings; recurring meetings grouped automatically from your calendar
- Live transcript while recording, then an accurate final pass with WhisperKit
- Arabic, English and mixed Arabic/English, chosen per utterance
- Settings inherited from app → organization → project → recurring meeting → meeting (language, model, speakers, …)
- Optional fast English-only engine for saved and live transcripts (NVIDIA Parakeet via FluidAudio), marked experimental
- Model library with built-in models, models discovered from the WhisperKit repository without an app update, and custom Hugging Face models
- Speaker detection with remembered voices
Trusting the transcript
- Review: only the lines Hams is unsure about (low confidence, unsure words, missing speech, repetition, unfamiliar names, doubtful speaker changes)
- Re-transcribe a selection with any model and language, with surrounding audio for context, and compare before replacing
- Improve Transcript and Try Other Models; every line keeps its earlier versions
- Repeated corrections suggest vocabulary
Understanding meetings (Apple Intelligence, on-device)
- Summary, decisions, action items (owner, task, due), open questions and key moments — every item cites the moment it was said
- Since Last Time for recurring meetings: new decisions, last time's commitments, open questions
- Ask Hams: questions across a meeting, series, project, organization or everything, with cited sources
Hams for Mac
- Menu bar app that records what your Mac plays (everyone else) and your microphone (you) as two tracks — headphones don't matter, and no bot joins the call
- Transcribes on the Mac, identifies the other speakers, labels your lines with your name
- Pairs with the iPhone using a 6-digit code shown on both screens; finished meetings arrive in the right project
- Calendar nudge before meetings that belong to a project; start and stop from the iPhone
Apple integrations: Calendar and Reminders (two-way), Contacts, Siri and Shortcuts, Action Button, Focus filters, Spotlight, deep links.
- Xcode 27 or later, XcodeGen (
brew install xcodegen) - iPhone with iOS 26 or later (Apple Intelligence for summaries and Ask Hams)
- Mac with Apple Silicon and macOS 26 or later for Hams for Mac
xcodegen generate
open Hams.xcodeprojSigning is local. Create Config/Signing.local.xcconfig (it's git-ignored):
DEVELOPMENT_TEAM = ABCDE12345
HAMS_BUNDLE_ID = com.yourname.hams
HAMS_MAC_BUNDLE_ID = com.yourname.hams.mac
Then run the Hams scheme on an iPhone, or HamsMac on your Mac. Speech models download on first use.
| Path | Contents |
|---|---|
Hams/ |
iPhone app (SwiftUI, SwiftData) |
HamsMac/ |
Mac menu bar app |
Packages/HamsKit/ |
Shared code: data model and migrations (HamsCore), recording (HamsAudio), WhisperKit and SpeakerKit engines (HamsTranscription), Apple Intelligence engine (HamsIntelligence) |
Packages/HamsBench/ |
Speech benchmark tool comparing engines and pipelines on your own recordings |
HamsUITests/ |
UI tests |
scripts/ |
Helpers for tests and the benchmark |
cd Packages/HamsKit && swift testUI tests run from the Hams scheme in Xcode. The full transcription UI test needs a model on the simulator: scripts/seed-simulator-model.sh <simulator-udid> openai_whisper-large-v3-v20240930_626MB.
Opt-in suites use real models or the network: HAMS_INTEGRATION=1, HAMS_FOUNDATION_MODELS=1, HAMS_NETWORK=1.
Packages/HamsBench compares speech pipelines on recordings with verified reference transcripts (word and character error rates, English kept inside Arabic sentences, key names and numbers). Cases live in ~/Documents/Hams Bench/cases: an audio file plus a .txt reference with the same name, prefixed en-, ar- or mixed-. In the app, Export › Benchmark Case produces both from a corrected meeting.
cd Packages/HamsBench && swift build -c release
.build/release/hams-bench --engine whisper --pipelines current,whisper-detects+regions --modes auto,forcedBuilding the benchmark needs Xcode's Metal Toolchain (xcodebuild -downloadComponent MetalToolchain).
MIT — see LICENSE. Third-party components and models: THIRD_PARTY_NOTICES.md.