TL;DR
Humla (michaelwilhelmsen/humla) is a meeting-notes app for the Mac in the style of Granola. You type rough notes during a call; Humla records your microphone and your Mac’s audio as two separate streams, transcribes them, works out who said what on your own machine, and writes a summary from your notes and the transcript together. No bot joins the meeting. The name is Norwegian for bumblebee; it is built by one developer, Michael Wilhelmsen, in Norway.
Facts as of November 6, 2026:
- 339 GitHub stars, 45 forks, 22 open issues (issues only; there is one more open pull request).
- License: MIT. The app is free, needs no account, and has no meeting cap.
- Latest release: v0.74.0, November 1, 2026, a signed and notarised DMG for Apple Silicon, macOS 13 or later.
- Repository created April 27, 2026; 14 releases shipped in October 2026 alone.
- Optional paid part: Humla Cloud team sync at $5 per user per month with a 14-day trial, or self-host the sync server for free.
Not run by us: Humla is a macOS desktop app that needs microphone and Screen Recording permissions, and our test lab is a CPU-only Linux container, so we did not install it or record a meeting with it. This review is built from the README, the source code, the project’s design decision records, its releases, its issue tracker and its website.
Disclosure: Humla’s maker said he would link to this review if we wrote one. He did not see it before publication, and nothing was promised about what it would say.
Our verdict: Humla is the most carefully engineered open-source Granola alternative on the Mac right now. Its transcription and diarization choices are backed by written evidence, audio is deleted after transcription unless you ask to keep it, and a built-in MCP server lets Claude Code or Codex search your meetings with no network access. The limits are just as clear: Mac only, essentially one maintainer, no mobile app, no meeting auto-start yet, and system audio still needs the Screen Recording permission.
Quick Reference
| Field | Value |
|---|---|
| What it is | Bot-free AI meeting notes: record, transcribe, label speakers, summarise, chat with your notes |
| Platform | macOS 13+, Apple Silicon |
| Price | App free; Humla Cloud $5/user/month; self-hosted sync free |
| Transcription | Local Whisper (Metal), OpenAI, Deepgram, Groq, any OpenAI-compatible endpoint; per-language routing |
| Speaker labels | On-device: NVIDIA Nemotron 3 Diarization (default) or pyannote community-1 |
| Summaries and chat | OpenAI, Ollama / LM Studio / llama.cpp / vLLM, custom endpoint, GitHub Copilot |
| Agent access | Built-in read-only MCP server with six tools |
| Storage | Local SQLite in ~/Library/Application Support/no.humla.app/ |
| Stack | Tauri 2 + Rust, React 19, Swift sidecars |
| License | MIT |
What Humla Does
Two streams, no bot
Otter and Fireflies mostly join Zoom or Meet as a participant. Humla records the Mac it runs on. A small Swift helper captures the microphone with AVAudioEngine and the computer’s output with ScreenCaptureKit, and keeps them as two separate streams. In a remote call your voice and the other side are never mixed, so “you said” versus “they said” is known from the start instead of guessed. Each stream is cut at natural pauses and sent to your transcription engine, so the transcript fills in while you talk.
Transcription routed by language
- Local Whisper via
whisper-rson Apple’s Metal GPU. The default local model is Large v3 Turbo, quantised (about 600 MB per the app’s model registry); Large v3, Large v2, Medium and NB Whisper Large, the National Library of Norway’s model (about 1.16 GB), are also offered. - OpenAI (
whisper-1,gpt-4o-transcribe,gpt-4o-mini-transcribe,gpt-4o-transcribe-diarize), Deepgram Nova-3 / Nova-2, Groqwhisper-large-v3-turbo. - Since v0.73.0 (October 29, 2026), any OpenAI-compatible endpoint, shared by transcription, summaries and chat.
You set a default and per-language overrides; the README’s example is Norwegian → local NB Whisper, English → Deepgram, fallback → OpenAI. Custom vocabulary keeps names and acronyms spelled consistently.
One detail from the design records matters if you pick a cloud model. The project decided against OpenAI’s gpt-transcribe because it cannot return word timestamps, which drive Humla’s word-by-word playback highlight, so whisper-1 stays the OpenAI default. The same record admits that gpt-4o-transcribe, which is selectable, also returns no word timestamps, so choosing it silently switches the highlight off.
Speaker labels, offline
After you stop, Humla labels turns Speaker 1, Speaker 2 and so on, on your Mac. Rename one and it changes across the whole transcript.
The default engine changed in October to NVIDIA Nemotron 3 Diarization, run through FluidAudio on the Neural Engine. The decision record is candid about why: the previous default, pyannote community-1 on automatic speaker count, collapsed a 45-minute three-person meeting into one speaker. The project cites NVIDIA’s model card for offline diarization error on AMI single distant mic falling from 21.42 to 11.14 against the Sortformer checkpoint Humla used before, and reports that on an M1 Max the chosen fast128 preset (193 MB) diarized 56 minutes of audio in 14 seconds. Nemotron handles up to eight speakers; above eight, Humla routes to community-1 (about 22 MB), which uses the count you set.
Summaries and chat
Summarize sends your notes and the transcript as two labelled inputs, marked user-written and automatic, so the model can weight what you chose to write down. Presets cover Meeting, 1:1, Lecture, Interview, Brainstorm and Voice memo, or write your own. Summaries run on OpenAI, a local OpenAI-compatible server, a custom endpoint, or since v0.72.0 your GitHub Copilot plan.
Every note also has a Chat tab that runs a real retrieval loop: it searches your notes with SQLite FTS5 keyword search plus embedding search, reads the notes that look relevant, and answers with clickable chips for each note it used. You choose the scope (this note, this folder, everything), and it shows what it searched and read. Chat runs on Ollama, OpenAI or Copilot.
Getting Started
The README’s quick start, condensed:
- Download the DMG from the releases page and drag Humla into Applications. It is notarised, so Gatekeeper opens it.
- On first record, grant Microphone and, to capture the call’s audio, Screen Recording, then relaunch.
- In Settings → Transcription, download a local Whisper model (roughly 500 MB to 1.1 GB) or paste an OpenAI, Deepgram or Groq key. Keys go to the macOS Keychain.
- Optionally download the diarization model and point Settings → Summary and Settings → Chat at a local server. The app’s own hint: “Ollama’s default is http://localhost:11434 — change it for LM Studio or a remote llama-server.”
Building from source needs Rust (the crate now requires 1.94), Node 20+, pnpm, Xcode command line tools and cmake:
git clone https://github.com/michaelwilhelmsen/humla.git
cd humla
pnpm install
./scripts/build-sidecar.sh # audio-capture Swift sidecar
./scripts/build-diarize.sh # speaker-diarize Swift sidecar
./scripts/build-mcp.sh # humla-mcp server binary
pnpm tauri dev
The MCP Server: Your Meetings Inside Claude Code
This is what sets Humla apart from most peers. The bundle ships a second binary, humla-mcp, a stdio Model Context Protocol server built on the official Rust SDK, with six read-only tools: search_notes, get_note, get_transcript, list_notes, list_folders and list_clients. Search covers typed notes, summaries and the spoken transcript, says which one each hit came from, and filters by folder, client, speaker, language and date window.
It is off by default. Turn it on in Settings → General → Integrations and the app shows ready-made config. From the source of that screen, the Claude Code line has this shape:
claude mcp add --scope user humla -- "/Applications/Humla.app/Contents/MacOS/humla-mcp"
and for Codex:
[mcp_servers.humla]
command = "/Applications/Humla.app/Contents/MacOS/humla-mcp"
Use the path the app shows you; the one above assumes the default install location.
The server reads the SQLite database directly, so it works whether or not Humla is open, needs no API key and opens no port; search is keyword-only for that reason. No tool can modify a note or reach an audio file, and the workspace is resolved by Humla rather than passed as an argument, so an agent cannot ask its way from personal notes into a shared team workspace.
Privacy: What Leaves the Mac
- No backend by default. Outbound traffic is limited to the providers you configured, the update check against GitHub, and a sync server only if you connect one.
- Audio is not kept unless you ask. Recordings sit in a temp directory and are deleted after transcription and speaker labelling; the note keeps its transcript and word timings. Keep recorded audio stores a playback file (about 1 MB per minute per channel, per the README), and Delete stored audio… sweeps old files.
- Keys in the Keychain, one entry per provider.
- Anonymous counters: first launch and whether onboarding finished, at most once per install, no identifier, switchable off.
With local Whisper, on-device diarization and a local LLM, no audio or text leaves your Mac. With Copilot, only text goes to Copilot, per the Copilot page.
Team Sync and Self-Hosting
Personal notes never need a server. For syncing devices or sharing a workspace, Humla talks to a PocketBase backend: Humla Cloud at $5 per user per month, or your own server, where billing never activates unless a Stripe key is set.
The catch, stated plainly in the README: the client side of sync (src-tauri/crates/cloud-sync) is open source, but the server half Humla Cloud runs is not published, because the two change in lockstep. The advice is to fork the repo and build your server against that snapshot. The README lists the stack (PocketBase, Caddy, S3 or R2, Litestream, SMTP, a small Hono service for workspace chat), so it is a starting point, not a turnkey deployment.
Limitations and Things to Check
- Mac only, Apple Silicon only. Releases ship an
aarch64DMG. Windows is the most common request on Reddit, according to the maintainer’s issue #185, which says the blocker is the local audio and model stack. - macOS 13 and 14 work only from v0.72.1. Before that release (October 29, 2026), the Metal build of whisper.cpp linked macOS 15 symbols and the app would not launch on 13 or 14. Use the current version.
- Screen Recording permission. Issue #220 proposes a Core Audio process tap on macOS 14.2+ to drop it; still open.
- Use headphones on calls. The diarization record notes that with speakers, the mic picks up remote voices as echo, which an end-to-end diarizer can count as extra speakers; echo cancellation is listed as a prerequisite.
- Speakers are not remembered between meetings; voice profiles are a new request (#230).
- No meeting detection yet. Auto-start and calendar integration are planned (#83 to #89). You press Record.
- Dates are note dates. Chat and MCP date filters use when the note was created, not when the meeting happened (#108).
- No Parakeet. Users have asked for it (#178); Meetily already offers it.
- Bus factor. Of 811 commits on GitHub’s contributor list, 792 are the maintainer’s.
- Copilot needs the Copilot CLI, which Humla downloads (about 120 MB, per the Copilot page) if it is missing.
How It Compares
| Humla | Meetily | Granola | |
|---|---|---|---|
| Open source | Yes, MIT | Yes, MIT (Community Edition) | No |
| Platforms | macOS (Apple Silicon) | macOS, Windows | Desktop and mobile |
| Bot in the call | No | No | No |
| Fully on-device option | Yes | Yes | No |
| Built-in MCP server | Yes, local, read-only | No | Yes, Business plan |
Pick Humla if you are on a Mac, want everything able to stay local, work in more than one language, or want meetings queryable from Claude Code. Pick Meetily for Windows or Parakeet. Pick Granola for a mobile app and first-party CRM and Slack integrations; Humla’s own comparison page says the same. Our guide to private AI meeting note takers also covers Anarlog and Google AI Edge Foresight.
Community Reactions
Humla grew through Reddit rather than Hacker News; we found no HN submission. The maintainer launched it on r/SideProject on May 2, 2026 as “a free, open-source Mac alternative to Granola and Notion AI Meeting Notes”, reposted in r/IMadeThis, and answers threads on r/NoteTaking. The recurring request is Windows. Many of the maintainer’s own GitHub issues read like short design documents, which makes the tracker a good place to judge the project’s direction.
FAQ
What is Humla?
Humla is a free, MIT-licensed meeting-notes app for macOS. It records your microphone and your Mac’s audio without adding a bot to the call, transcribes on-device with Whisper or through OpenAI, Deepgram, Groq or a custom endpoint, labels speakers offline, and writes summaries from your typed notes plus the transcript.
Is Humla really free?
Yes. No account, no meeting cap, no paid tier for personal use; you pay only for any cloud AI provider you choose. Optional Humla Cloud team sync costs $5 per user per month, and a self-hosted sync server has every team feature for free.
Can Humla run completely offline?
Yes. Use local Whisper, the on-device speaker models, and a local OpenAI-compatible server such as Ollama or LM Studio for summaries and chat. No audio or text then leaves the Mac; the app still checks GitHub for updates on launch.
Does Humla work on Windows or Intel Macs?
No. As of November 6, 2026 releases are built for Apple Silicon Macs on macOS 13 or later. Windows support is an open issue.
How do I use my meeting notes in Claude Code?
Enable the MCP server in Settings → General → Integrations, then add the humla-mcp binary from the app bundle with claude mcp add --scope user humla -- "<path>". It is read-only, needs no API key or network, and cannot reach recorded audio.
Does Humla keep my meeting recordings?
Not by default. Audio is deleted after transcription and speaker labelling. Turn on Keep recorded audio for playback with word highlighting, and delete stored audio later from the same settings section.
Bottom Line
Humla takes the Granola workflow (type notes, let the app listen, get a recap) and makes every part of it something you can run on your own Mac and read the code for, with model choices made on written evidence and audio thrown away by default. It is young, Mac-only and mostly one person’s work, and the self-hosted sync server is something you build, not download. If you are on Apple Silicon and want private meeting notes your coding agent can search, it is the first open-source option to try.
Sources
- michaelwilhelmsen/humla on GitHub: README, source, license, star and issue counts
- Humla releases (v0.74.0, November 1, 2026)
- ADR 0003: gpt-transcribe is not adopted
- ADR 0005: Nemotron 3 is the default diarization engine
- Issue #185: Windows support
- Issue #220: Core Audio process tap instead of ScreenCaptureKit
- Issue #108: notes have no meeting date
- humla.team
- Humla with GitHub Copilot
- Humla vs Granola
- Free, open-source AI meeting notes for Mac (maker’s blog post)
- NVIDIA Nemotron 3 Diarization model card
- r/SideProject launch post