PROJECT / LOCAL-FIRST MEETING TOOLS
Local Meeting Assistant
Capture a meeting, understand what was said, and return to the source. A native Mac menu bar app that keeps recordings, transcription and review on the device.
Working baseline · Version 0.1.0, not released. macOS 26+ on Apple silicon. Implementation and validation status follow the supplied project overview; original specification goals are not treated as shipped features.
Download Local Meeting Assistant.
Version 0.1.0 · 2.0 MB. Requires macOS 26 or later on Apple silicon.
Development preview · unreleased working baseline. The app is Developer ID signed; notarisation has not been confirmed and no ticket is stapled. macOS may block it from opening.
Download Local Meeting Assistant .dmgInstall on your Mac
- Open the downloaded disk image.
- Drag the app into Applications.
- Open the app from Applications.
Screen & System Audio Recording and Microphone permissions are required for capture. The app cannot verify participant consent; recordings and transcripts are stored locally.
Download SHA-256 checksumThe product
Local Meeting Assistant gives people a searchable, editable personal meeting record without a meeting bot, hosted account or transcription server. Start capture from the menu bar, review live text, then revisit video or original audio directly from a transcript passage.
Capture → transcribe → review
Three capture modes share one evidence-preserving workflow.
Choose the scope
Record the full display, one chosen app, or audio only. One-app capture fails with an explanation if isolation becomes unavailable rather than widening silently to full screen. Pause and resume are available only in audio-only mode.
Keep the sources
System audio and microphone audio remain separate canonical CAF files. A compressed MP4 combines the video with a mono speech mix, while the source tracks stay available for transcription and inspection.
Transcribe on the Mac
Apple SpeechAnalyzer and SpeechTranscriber process each track locally during capture or later from saved files. Initial setup can download the operating system’s speech model; no server fallback is implemented.
Review against the recording
Click timestamps or extracted items to play their source. Search titles, tags, notes and transcript text, and inspect individual source tracks, offsets, peak levels and SHA-256 checksums.
Edit without losing the original
An immutable machine transcript is retained separately from timestamped corrections. Original-machine and corrected exports stay distinguishable.
A modular native pipeline
The application is a SwiftPM package with separate targets for domain logic, storage, capture, transcription, vision and the SwiftUI menu bar interface. It uses the Swift 6.2 toolchain in Swift 5 language mode, without an Xcode project.
MeetingCore and MeetingStorage
Domain rules cover edits, echoes, note extraction, exports and retention. A folder per meeting holds atomic JSON manifests, source media, transcripts, edits, summaries and speaker suggestions.
MeetingCapture
ScreenCaptureKit supplies display/app capture and system audio. Video modes obtain the microphone from the capture stream; audio-only mode uses AVAudioEngine. Shared host timestamps retain track offsets.
Persist first, infer asynchronously
Realtime callbacks write and enqueue; encoding and transcription do not block capture. Recovery scans identify unfinished sessions rather than deleting their media.
MeetingTranscription and MeetingVision
SpeechAnalyzer handles file and live transcription, FoundationModels supports local summaries, and Vision reads candidate names from sampled frames. A transcription protocol leaves room for a future WhisperKit backend; it is not the current backend.
Small recordings, preserved sources
With compressed recording enabled, video is encoded live to HEVC at up to 1280 pixels wide, 12 fps and approximately 500 kbps. On stop, video samples are copied into the final MP4 alongside aligned mono 24 kHz AAC audio at 32 kbps, avoiding a large intermediate video.
Observed result
A recorded two-minute test produced a 9.5 MB movie, compared with approximately 112 MB for the uncompressed recording. This is a specific test result rather than a universal storage guarantee.
Failure handling
If combining fails, the video is retained without audio and a warning is added; independent CAF tracks remain. The MP4 is finalised at stop, so a crash may leave the video unusable.
Assistance that remains reviewable
Generated outputs and speaker labels are suggestions rather than invisible changes to the meeting record.
Summaries and source-linked notes
Apple’s on-device model produces labelled, chunked summaries when available. Rule-based decisions, actions and substantive questions begin unconfirmed and link back to evidence. Verbatim key passages are labelled separately from summaries.
Speaker suggestions
Sampled video frames, self-introductions and addressing cues can suggest names with a source and confidence. Only confirmed names replace neutral labels. This is per-line attribution, not voice diarization; OCR produced garbled names in the recorded test.
Echo handling
Microphone lines matching nearby system-audio text can be hidden from review and exports without deleting the machine original. A control reveals them; headphones remain the recommended way to reduce acoustic leakage.
Portable review
Markdown, plain text, JSON, SRT and WebVTT exports distinguish corrected and machine text. JSON records edit and echo inclusion metadata; users can also save the MP4 or original audio.
Privacy, retention and permissions
Capture and inference are local, with no analytics, accounts or cloud processing in the documented baseline. The initial macOS speech-model download is a separate network operation. Screen/system-audio and microphone permissions are explicit, with a per-recording consent acknowledgement that cannot establish participant consent.
At-rest protection
The current library relies on FileVault. App-managed encryption is future work, not an implemented property. Exported files and external backups remain under the user’s control.
Conservative retention
Keep forever is the default. Optional rules can remove media while retaining text or delete whole meetings after a chosen period. Hold protects a meeting from automatic deletion.
Visible recording state
Text and symbols accompany the recording indicator rather than colour alone. Disk-space checks, silence/device warnings and explicit failure states make capture problems visible.
Validation and next steps
The supplied overview records 18 passing domain tests, successful real two-minute capture/transcription/compression tests, a real mux test and local summary generation on an actual transcript. Those checks are evidence for a working baseline, not release acceptance.
Still to validate
Kill-during-recording recovery, one-to-two-hour sync/memory/thermal behaviour and one-app capture on real meeting platforms remain untested. Accessibility review and localisation have not been completed.
Known limits
Speaker attribution has no voice separation; OCR can be garbled. Microphone device changes stop that track with a warning. English is the initial focus, with other languages dependent on macOS model support.
Future work
Improve OCR, validate long recordings and recovery, then evaluate voice diarization, a Whisper backend, optional encrypted storage and opt-in calendar association. Bots, cloud processing, accounts and sync are not planned.
Distribution
The baseline is not sandboxed or notarised and has not been publicly released. Signing during local installation is distinct from a completed distribution/notarisation workflow.
Explore the project
Based on the supplied project overview and specification revisions. The overview and later specification additions take precedence over the original brief. Product status and verification results are recorded snapshots, not new tests performed for this portfolio.