Update, October 2026: two defaults have changed since this post. Search now uses EmbeddingGemma 2, and autocomplete uses Gemma 4 E2B; see Autocomplete that knows your meetings. Current numbers are on the benchmarks page.
The stack in 0.9.2
- Transcription: Qwen3-ASR 1.7B, MLX 8-bit.
- Who spoke when: Nemotron 3, Core ML.
- Notes and action items: Qwen3.5 4B, Q4_K_M in llama.cpp.
- Search embeddings: Harrier 0.6B, Q8_0.
- Autocomplete in any app: LFM2.5 1.2B, Q4_K_M.
- Screen text: Apple Vision OCR, opt-in.
What changed, in numbers
Measured on an M4 Max with 48 GB of memory:
- A 26-minute meeting goes to finished notes in 33 seconds with the model already loaded, decoding at about 85 tokens a second.
- Speaker error dropped from 43.4% to 14.6% diarization error rate on the AMI corpus. That's against the previous pyannote setup, so it says more about that configuration than about pyannote.
- Autocomplete latency at the 95th percentile fell from 1.83 s with Gemma 4 E4B to 0.49 s.
A model that didn't make it
MiniCPM5 2B was tested for notes. It was smaller and faster, but it got stuck repeating itself on one summary and assigned action items to the wrong person. Qwen3.5 4B stayed the default: saving a few seconds isn't worth getting wrong who agreed to do what.
Also in the app
A read-only MCP server and CLI, off by default, let Claude Code or any other MCP client pull context from your meetings.
There are no numbers yet from 16 GB Macs or other M-series chips. If you run LokalBot on one, especially an M5 or M6, share what you get. The 0.9.2 release notes have the rest.