Hapi

User guide · reference

How Hapi works

A practical reference for everything you can do inside Hapi — what to click, what to expect, and which settings change what. Skip the source code. This is the manual.

01

Getting started

Hapi runs as a menu-bar app on macOS 14+. There is no dock icon by default — open the main window from the menu-bar icon, or hit your record hotkey from anywhere. Settings live in a window with a sidebar of ten sections; everything below maps back to one of them.

Settings

Permissions

Microphone

Required for voice recording

Granted

Accessibility

Required for global hotkeys

Granted

Screen Recording

Required for meeting audio capture

Allow…

Calendar

Optional — for meeting briefings

Allow…
The Settings window — sidebar on the left, panels on the right. Open it from the menu-bar icon → Settings, or with ⌘,

First-launch checklist

  1. Microphone access. Required for voice notes and meetings. macOS will prompt the first time you record.
  2. Accessibility access. Required for the global hotkey and for auto-paste. macOS asks once; you may need to restart Hapi after granting it.
  3. Screen Recording. Required to capture system audio from meeting apps and browsers. The first meeting you join triggers the prompt.
  4. Calendar (optional). Lets Hapi link recordings to events and generate pre-meeting briefings.
  5. Tell Hapi about you. In Settings → People → Your profile, add your name, email, role, and any context you want Hapi to use when it summarizes meetings or drafts follow-ups in your voice.

Your Profile

Your Profile

Name

Rafa Romero

Email

rafa@example.com

Role

Founder

Company

Hapi

Free-form context

Based in Madrid (CET). Building Hapi — a local-first second brain for voice on macOS. Writing style: direct, lowercase, short paragraphs.
CancelSave
Settings → People → Your Profile. Used to identify you in transcripts and avoid extracting yourself as a separate entity.

Where to find things

  • Sidebar: Dashboard, Meetings, Voice Notes, Record, Settings.
  • Bottom bar: persistent “Ask Hapi” chat. The scope follows the page you're on (Dashboard, a specific meeting, voice notes, or a person).
  • Settings: ten sections — General, Voice Notes, Meetings, People, Plays, AI, Integrations, Automations, License, About.

02

Voice notes

Hold the global hotkey, speak, release. Words stream back in under two seconds. By default the result is copied to your clipboard and pasted into whatever app you were in.

Changing your hotkey

Open Settings → Voice Notes, click the hotkey field, and press the new combination. Modifier-only keys (⌘, ⌥, ⌃, ⇧) work too — Hapi defaults to Right ⌘ to keep your normal Command key free.

Hotkey

Enable hotkey

Use global keyboard shortcut

Current Hotkey:

Right ⌘Change

Click Change to record a new hotkey. You can use modifier keys (⌘, ⌥, ⌃, ⇧) with any key.

Mode

How the hotkey triggers recording

Hold to Record
Settings → Voice Notes → Hotkey. Click Change, then press the new combination — Hapi captures it for 2 seconds.

Output behavior

Below the hotkey block, the same panel exposes how transcripts get to your other apps. By default Hapi copies the cleaned text and pastes it where your cursor is.

Output

Copy to clipboard

Replace clipboard with the cleaned transcript

Auto-paste

Send ⌘V to the focused app after recording

Speech enhancement

Remove fillers, fix punctuation, capitalize

Settings → Voice Notes → Output

Settings reference

Setting
Type · default
What it does
Global hotkey
shortcut·Right ⌘
The key you hold to record a voice note. Click the field, then press your new combination. Modifier-only keys (⌘, ⌥, ⌃, ⇧) are supported.
Hotkey mode
enum·Hold to record
Hold-to-record stops when you release the key. Toggle starts and stops on each press — useful for longer dictation.
Hotkey enabled
toggle·on
Master switch for the global hotkey. Disable when streaming or screen-sharing.
Copy to clipboard
toggle·on
Whether the cleaned-up transcript replaces your clipboard contents.
Auto-paste
toggle·on
After copying, Hapi sends a synthetic ⌘V to paste into the focused app. Requires Accessibility access.
Recording display
enum·Notch
Where the recording indicator appears: in the menu bar, around the notch, or as a floating pill.
Speech enhancement
toggle·on
Removes filler words, false starts, and repeated words; capitalizes and punctuates. Adds ~50 ms.
Transcription language
enum·Auto-detect
25 languages supported. Forcing a language is faster than auto-detect on short notes.
Custom dictionary
list
Words and phrases Hapi should always spell a specific way — names, acronyms, brand spellings, technical jargon. Edited as a plain list in Settings → General → Dictionary.

03

Meetings

When you join a meeting in Zoom, Google Meet, Teams, Slack huddles, WhatsApp, FaceTime, or any browser-based meeting on supported hosts, Hapi can detect it and offer to record. You can also start a recording manually from the menu bar for in-person meetings or phone calls.

H

Hapi

now

Meeting detected

Google Meet — “Q4 planning with Sarah”. Want to record?

RecordSkip
Notification banner — click Record to capture mic + system audio

What gets produced

  1. Transcript — full diarized transcript with timestamps and speaker labels.
  2. Title — short, factual title generated from the content.
  3. Summary — TL;DR plus a topic-by-topic breakdown.
  4. Action items — extracted with owner, due date when stated, and a link back to the moment they were said.
  5. Entities — people, companies, projects, and decisions mentioned, linked to existing profiles or queued for review.

Settings reference

Setting
Type · default
What it does
Meeting auto-detect
toggle·on
Watches for known meeting apps and browser tabs and prompts to record. Disable if you only want manual capture.
Capture system audio
toggle·on
Captures the other side of the call alongside your microphone. Requires Screen Recording access.
Speaker labeling step
toggle·on
Show a review screen after each meeting so you can confirm or correct who said what before saving.
Pre-meeting briefings
toggle·on
A few minutes before a calendar event, Hapi prepares a one-page briefing from past conversations with the same people.
Include action items in summary
toggle·on
Whether the summary text reuses the structured action-item list or generates a separate prose section.
Trusted participants
list
Calendar attendees and email addresses Hapi treats as known speakers. Used to constrain speaker labels and avoid hallucinated names.

Editing a finished meeting

Open any meeting from the sidebar to:

  • Edit the title, summary, or any topic.
  • Re-attribute lines to a different speaker.
  • Mark, snooze, or complete action items.
  • Run a Play (see below) to repurpose the meeting into something else.
  • Append a follow-up recording to the same meeting; Hapi re-runs summary and entities on the merged transcript.

04

People & entities

Every meeting and note feeds a private knowledge graph of people, companies, projects, and decisions. Profiles live on your Mac; nothing is published, sold, or shared.

How learning works

  1. Extraction. After each transcript, Hapi proposes new entities and links to existing ones.
  2. Review queue. Proposals land in a queue you can approve, reject, or merge. Nothing enters your graph until you approve it (unless you turn auto-approve on for high-confidence matches).
  3. Edit any time. Open a person or company and edit their name, email, role, company, notes, or relationships. Changes propagate to past meetings.
  4. Merge or split. If two profiles refer to the same person, merge them. If one was wrongly combined, split them.

Review queue

SC

Sarah Chen

Person

Mentioned in 3 meetings · sarah@northstar.io (proposed)

Merge…RejectApprove
PH

Project Helios

Project

Mentioned 7 times across 2 meetings

Merge…RejectApprove
NL

Northstar Labs

Company

Linked to 2 people · 1 meeting

Merge…RejectApprove
People → Review queue. Auto-extracted entities awaiting your approval. Nothing enters your graph until you approve it.

Settings reference

Setting
Type · default
What it does
Auto-extract entities
toggle·on
Whether new transcripts are scanned for people, companies, projects, and decisions.
Auto-tagging
toggle·on
Whether transcripts are tagged with the entities they mention.
Approval mode
enum·Manual review
Manual review queues every proposal. Auto-approve high confidence merges only when Hapi is highly confident. Auto-approve everything skips the queue (not recommended).
Your profile
form
Name, email, role, company, and free-form context (timezone, projects, writing style). Hapi uses this to identify you in transcripts and to write follow-ups in your voice.
Speaker enrollment
list
Voiceprints for people you talk to often. Improves diarization accuracy across calls. You can add a voiceprint from any past recording.

05

Plays

A Play is a saved prompt that runs against a meeting, voice note, person, or your whole library. Hapi ships with a few defaults — follow-up email, decision log, blog draft — and you can write your own.

Plays

Follow-up email

MeetingPinned

Drafts a follow-up email summarizing decisions and action items in your voice.

Decision log

MeetingPinned

Extracts every decision with rationale and owner.

Blog draft

Anywhere

Turns the transcript into a 600-word blog post.

Weekly digest

Anywhere

Summarizes the past 7 days of meetings into one page.

Settings → Plays. Pinned plays appear as quick-access pills in the bottom chat bar.

Anatomy of a Play

Setting
Type · default
What it does
Name
string
Shows up as a button in the chat bar and in meeting detail.
Scope
enum
Where the Play applies: a single meeting, a person, voice notes only, or anywhere.
Prompt
text
The instruction Hapi sends to the model. References to {{transcript}}, {{summary}}, {{person}}, {{your_profile}} are filled in automatically.
Output format
enum·Markdown
Markdown, plain text, or JSON. JSON outputs can be piped into webhooks.
Pinned
toggle·off
Pinned Plays appear as quick-access pills in the chat bar.

06

AI provider

Hapi is local-first by default: a quantized Qwen model runs on your Mac and handles summaries, action items, chat, and entity extraction. If your machine is below the recommended 24 GB of RAM, or if you simply prefer to use a frontier model, you can route part of the pipeline to a cloud LLM through OpenRouter.

Provider Mode

Cloud mode (hybrid)

Use cloud LLMs for selected features. Audio and embeddings always stay on this Mac.

Settings → AI → Provider Mode

OpenRouter

API key

Stored in macOS Keychain. Never synced to iOS.

••••••••••••••••Save

Require zero-retention

Only models with contractual no-logging are dispatched. Requests carry data_collection=deny.

Settings → AI → OpenRouter (visible when hybrid mode is on)

Routes

Chat

Ask Hapi conversations

Claude Sonnet 4.6

Summary

Meeting summaries and TL;DR

Claude Sonnet 4.6

Action items

Owner, task, due date extraction

GPT-4o mini

Title

Short factual meeting titles

Local · Qwen 0.8B

Entities

People, companies, projects

Local · Qwen 4B
Settings → AI → Routes. Pick local or cloud per pipeline step.

Usage this month

Spent

$3.20 / $25.00

Resets on the 1st. Click a route above to see per-route token counts.

Settings → AI → Usage. Auto-falls back to local if the budget is hit.

Settings reference

Setting
Type · default
What it does
Provider mode
enum·Local only
Local only — nothing ever leaves your Mac. Hybrid — chat, summary, action items, briefings, entities, and speaker labels can route to the cloud; raw audio and transcription always stay local.
Local model tier
enum·Auto
Good (1.7B) on under 24 GB Macs, Best (4B) on 24–31 GB, Pro (8B) on 32 GB and above. Auto picks based on detected RAM.
Cloud model per route
enum
Pick a model for each pipeline step (chat, summary, action items, title, entities, speaker labels). Defaults to a strong general model; override individually.
Require zero retention
toggle·on
When on, Hapi only dispatches to providers that contractually commit to no logging, and adds data_collection: deny on every request. Models without that commitment are filtered out.
Monthly budget
currency
Optional cap on cloud spend. Hapi tracks tokens per route and falls back to local if the budget is hit.
OpenRouter API key
secret
Stored in the macOS Keychain — never in plain settings. Bring your own key; Hapi does not proxy your traffic.

What never leaves your Mac

  • Raw audio recordings.
  • The Parakeet speech-to-text model and its output.
  • Diarization embeddings (ECAPA, WeSpeaker, Pyannote).
  • Text embeddings (GTE) used for search.
  • The SQLite database with your transcripts, entities, and history.

In hybrid mode, only the text Hapi chooses to send — the cleaned transcript or summary chunks for a given step — leaves the device, and only to the provider you authorized.

07

Integrations

Obsidian

Point Hapi at your vault and it will mirror new transcripts, summaries, and action items as Markdown files. You choose the folder, file naming, and which outputs to sync.

Claude Code

Hapi exposes an MCP server (search meetings, get a meeting, list action items, search entities, semantic search) so Claude Code can answer questions about your knowledge base from any project.

Mail

Optional. When enabled, Hapi reads recent threads from a connected mailbox to link people to their email addresses, detect out-of-office replies, and flag decisions that have drifted between meeting and email. No mail content is sent to the cloud.

Calendar

Read-only access to your macOS Calendar so Hapi can label meetings with the event title, link recordings to invitees, and generate briefings.

Webhooks

Configure URLs to be called when a transcript is finished, when an action item is created, or when a chosen Play produces JSON. Useful for pushing into Notion, Linear, Slack, or your own pipeline.

08

Automations

Automations let you fire actions when something specific happens, without opening Hapi.

Triggers

  • Transcription end — fires whenever a meeting or voice note finishes processing.
  • Scheduled time — fires at a chosen time, daily or on specific weekdays. Useful for end-of-day digests.
  • Keyword match — fires when a transcript contains a chosen word or phrase.
  • Speaker detected — fires when a specific person is heard in a recording.

Actions

  • Run a Play and append the result to the transcript.
  • Send the result to a webhook.
  • Write a Markdown file to your Obsidian vault.
  • Show a notification.

09

Your data

Where it lives

  • ~/Documents/Hapi/Recordings/ — audio files.
  • ~/Library/Application Support/Hapi/transcripts.db — transcripts, summaries, action items, entities, and embeddings.
  • ~/Library/Application Support/com.hapi.transcription/ — local models (Parakeet, Qwen).

Export

From any meeting or voice note: Export as TXT, Markdown, SRT, JSON, or CSV. From Settings → About → Export everything you can dump your full library at once.

Delete

Delete a single transcript from its detail view, a person from their profile, or everything by removing the folders above. There is no remote copy to clean up.

iOS companion

The iPhone app records and transcribes locally on the phone, then syncs through your private iCloud account to your Mac. Recordings never touch our servers.

Still have questions?

Read the privacy policy, check the roadmap, or email hello@speakhapi.com.