A keyboard- and voice-first utility for macOS

Remap keysSpeak to typeRecall copiesOne signed binary

Replaces Karabiner-Elements, Maccy, and your dictation script with one 4.5 MB menu-bar app: session-level key remaps, hold-to-talk voice input, and a searchable clipboard with a secrets vault. EdDSA-signed, on-device by default.

macOS 14.0+ · Universal · 4.5 MB · AGPL-3.0 · v1.0.3
a3f2e1c0-9b4d-4e7a-8c1f-2d6b9e0a5c73
Hold the voice key and say “make it uppercase” to transform the text.

§ 01 / Clipboard History

Your clipboard, one shortcut away.

Press ⌥V to search recent copies, move through results, and paste without leaving the keyboard. Clipboard history and the vault →

tab
Q
W
E
R
T
caps
A
S
D
F
G
shift
Z
X
C
V
^ ctrl
⌥ opt
⌘ cmd
space
History
⌥1Not a launcher. ↵ Not a kext.🌐
⌥2Bento Box🌐
⌥3const [state, setState] = useState(null)💻
⌥4pnpm dlx prisma migrate dev💻
📋 Clipboard
🔒 Vault

§ 02 / Key Remap

Unlock every forgotten key.

Map unused keys to the keys you actually need. Here, Right ⌘ becomes Forward Delete. How remapping works →

Y
U
I
O
P
[
]
H
J
K
L
;
'
return
N
M
,
.
/
shift
space
cmd
opt
Right cmdForward Delete
untitled.txt
1The quick brown fox jumps over the lazy dog near the river bank.
2 
3 
UTF-8Ln 1, Col 21

§ 03 / Shortcuts

Shortcuts that do work for you.

Bind a hotkey to typed text, key presses, waits, or trusted shell commands, and limit it to selected apps. Here, ⌥K sends /clear and Return to clear the current Claude Code context.

Shortcut · ⌥K
⌥K
iiTermVVSCodeZZedCClaude
Actions
Text
/clear
Key
return
claude — zsh
 Welcome to Claude Code
/help · cwd: ~/dev/keymic-web
>refactor the checkout flow
● Read(src/lib/stripe.ts)
  ⎿ 142 lines
● Grep("createCheckout")
  ⎿ 4 matches · 3 files
● Edit(api/stripe/checkout/route.ts)
  ⎿ +38 −12
Moved pricing lookup into a shared helper and tightened redirect validation. Tests pass.
Tokens: 24.1k in · 3.2k out · $0.19
 New session started
Context cleared · tips: /help
>/clear

§ Setup

Three steps to your first keystroke.

No installer, no kext, no login. Unzip, grant the permissions the features you want actually need, and the defaults are already bound.

  1. Download and open

    A 4.5 MB universal build for macOS 14.0+, EdDSA-signed and updated in place through Sparkle. Drag KeyMic.app to Applications and launch it — it lives in the menu bar, not the Dock.

  2. Grant only what you use

    Key remaps and text insertion need Accessibility. Voice input needs Microphone. Nothing else is requested until you turn on the feature that needs it.

  3. Try the defaults

    Hold ⌥R and talk, release to paste the transcript. Press ⌥V to search everything you have copied. Rebind both from the settings window whenever those keys are already taken.

§ Use Cases

Speak it. Shape it. Trigger it.

Dictate raw text, transform selected content with a Persona, or run a saved sequence from one hotkey.

Dictate clean prompts

Hold a hotkey, speak, and release. KeyMic pastes the transcript directly by default. Choose a Persona to remove filler and fix grammar before the text reaches the focused field.

Reshape text by voice

A Persona can use selected text or recent clipboard text as context. Say “make it formal,” “translate to English,” or “uppercase this,” and KeyMic pastes the transformed result.

One hotkey, a whole sequence

Combine typed text, key presses, waits, or a trusted shell command, then limit the shortcut to the apps you choose.

§ Q&A

Questions & answers.

Clear answers about privacy, configuration sync, local speech models, and LLM setup.

Sync & privacy

What does configuration sync upload?

After you sign in and enable sync, KeyMic uploads settings only: switches and selected options, hotkeys and key mappings, plus Persona definitions including their prompts. This lets another signed-in Mac rebuild your setup without copying your private working data.

What never leaves my Mac through configuration sync?

Configuration sync never uploads clipboard history, Vault items, screenshots, recordings, transcripts, selected text, or window context. API keys and other credentials also stay on the Mac where you entered them.

What happens when two Macs change the same setting?

For regular settings, the newer change wins. Personas, shortcuts, and key mappings merge item by item, so changing one item on one Mac does not erase unrelated items from another.

Speech models

Do local speech models need to be downloaded?

Yes. Open-source engines such as SenseVoice and Fun-ASR require a local model download from Voice settings. On macOS 26, Apple SpeechAnalyzer uses system-managed language assets.

Does an open-source speech model keep working offline?

Yes. After its package is downloaded, recognition runs on-device and does not need a network connection. Model files live in KeyMic’s Application Support folder and can be revealed or replaced from Voice settings.

LLM setup

Which LLM API works best with KeyMic?

Choose a small, low-latency model from any OpenAI-compatible endpoint. Fast responses usually matter more than model size for real-time voice refinement.

What does a Persona send to the LLM?

KeyMic sends text: the transcript, the Persona prompt, and only the context sources selected for that Persona, such as a selection or recent clipboard text. Raw microphone audio is not sent to the LLM endpoint.

Can I use a local or self-hosted LLM?

Yes. Configure an OpenAI-compatible base URL, model name, and any credential that endpoint requires. A local server keeps Persona processing on your Mac; a self-hosted server keeps it within infrastructure you control.

Using KeyMic

Which macOS permissions should I grant?

Grant only the permissions needed by the features you use. Voice input needs Microphone; Apple speech also needs Speech Recognition. Key remaps and text insertion need Accessibility. Screenshots and window OCR need Screen Recording.