Skip to content

Repository files navigation

ChatterKey — your voice, polished into text

ChatterKey

Native AI voice typing for macOS.

Hold Fn, speak naturally, and release. ChatterKey prepares polished text and inserts it into the app you are already using.

Latest release macOS 14 or later Swift 6 MIT license

Download for macOS  ·  Product website  ·  Changelog

Important

ChatterKey is bring-your-own-key software. Audio and processing instructions go to Google Direct or OpenRouter, depending on your selected connection—there is no ChatterKey account, analytics SDK, or project-operated transcription proxy.

Google Direct — available in the current source/local build

Use your own Gemini API key directly, without an OpenRouter account:

  1. Open Settings → AI Provider → Connection → Google Direct.
  2. Enter your Gemini API key from Google AI Studio in the Gemini API key field.
  3. Keep gemini-3.5-flash-lite as the model, then Save. Test Connection checks API access; dictate a short clip to check audio-model access.

Requests use Google's fixed OpenAI-compatible endpoint through the existing Swift HTTP client—no extra SDK or second processing stage. Google keys stay in a separate Keychain account from OpenRouter keys. Model and cost-rate settings are retained separately when switching connections. Existing installations keep their working connection; new installs default to Google Direct.

This feature is not included in the published v4.5.0 download below. It is available in the unreleased source/local build (build 9). The v4.5.0 release notes describe that release's OpenRouter-only connection.

New in v4.5.0 — One model. One request.

Gemini 3.5 Flash-Lite now handles dictation, translation, cleanup, verbatim, and Magic Voice Edit through one OpenRouter model request per attempt. No separate transcription/polishing stages, hidden repair calls, or automatic retries. Settings expose one editable audio-model ID, and the dashboard estimates audio and text tokens for that request.

  • Improved selection detection for apps with limited Accessibility support.
  • Voice edits send selected text and instruction audio together.
  • Existing preferences and local history migrate; provider API keys are never transferred.
  • Read the release announcement or full changelog.

Warning

The downloadable v4.5.0 app is an Apple Silicon (arm64) community-test build, ad-hoc signed and not Apple-notarized. It is not a Developer ID-signed production build. Requires macOS 14 or later. Review distribution limitations before installing.

See it in action

Animated ChatterKey voice typing demonstration

Why ChatterKey?

Regular dictation ChatterKey
Returns a raw transcript Produces polished, ready-to-use text
Uses a fixed service or model Uses one configurable audio model, defaulting to Gemini 3.5 Flash-Lite via Google Direct in the current source build
Misspells names and technical terms Learns exact spellings through personal vocabulary
Hides the writing instructions Lets you edit and preview the AI system prompt
Requires separate billing checks Estimates whole-process provider cost locally
Keeps features scattered Unifies Dashboard, History, prompts, models, vocabulary, and snippets in Settings

Everything in one voice workflow

🎙 Capture and write

  • Configurable hold-to-talk shortcut
  • Optional on-device live transcript preview
  • Automatic insertion into the focused app
  • Eight writing modes, including professional, concise, technical, bullets, translation, and verbatim

✨ Edit with your voice

  • Select existing text in any accessible app
  • Hold the shortcut and speak an instruction
  • Rewrite, translate, shorten, expand, or reformat in place
  • Preserve names, URLs, filenames, commands, and technical terms

🧠 Make it yours

  • Editable system prompt with exact provider-prompt preview
  • Personal vocabulary for names and product terms
  • Voice snippets that expand reusable text locally
  • Spoken formatting commands for paragraphs, bullets, and punctuation

↗ Understand your usage

  • Words spoken, dictations, speaking time, and average WPM
  • Daily activity and provider breakdowns
  • Single-request cost estimates for audio input, instructions, and text output
  • Small suggestions for repeated phrases, filler words, and long thoughts

Start in about 30 seconds

  1. Download the latest release and move ChatterKey.app to Applications.
  2. Connect your provider with its own API key: Google Direct in the current source/local build, or OpenRouter in v4.5.0.
  3. Allow permissions for Microphone and Accessibility. Speech Recognition is optional for live preview.
  4. Hold your shortcut, speak, then release to process and insert the result.

Tip

Start with Translate to English for multilingual speech, Professional for workplace writing, or Technical when dictating developer content.

How it works

flowchart TD
    A["Hold shortcut and record audio"] --> B["Release shortcut"]
    B --> C["One request to Google Direct or OpenRouter: audio + instructions + selected text when editing"]
    C --> D["Gemini 3.5 Flash-Lite: one configurable audio model"]
    D --> E["Final text"]
    E --> F["Local formatting for non-verbatim dictation"]
    F --> G["Insert into the focused app"]
    C --> H["Failure: show error, no automatic retry"]
    H --> I["User chooses Retry"]
    I --> C
Loading
  1. SwiftUI coordinates the menu-bar app, Settings, Dashboard, History, and floating status UI.
  2. AVFoundation captures a temporary WAV recording while optional on-device Speech provides the rough live preview.
  3. One audio-capable model receives the recording and instructions in a single request to the selected connection. For Magic Voice Edit, the selected text is included in that same request. There is no separate transcription, polishing, or English-repair call.
  4. ChatterKey applies local snippet and formatting rules for non-verbatim dictation, then inserts the final result. Voice edits and verbatim output bypass those local transformations.

Failures are shown to the user; ChatterKey does not automatically retry or fall back to another model. The explicit Retry button starts a new attempt. The optional on-device live preview is not an additional cloud request.

Transparent by design

Data What happens
API keys Stored in macOS Keychain
Audio Sent directly to the configured provider and deleted after successful processing or cancellation
Magic Voice Edit selection Sent only when you explicitly use the feature
Dashboard records Aggregate metadata stays local; transcript text and audio are not stored there
Transcript history Optional, local, retention-controlled, and disabled by default
Cost display Local whole-process estimate; the provider invoice remains the final source of truth

Read the complete Privacy Policy and Security Policy.

Version history

Detailed changes stay in CHANGELOG.md. Use these links for release notes and downloads.

Version Released Links
v4.5.0 September 8, 2026 Release notes · Detailed changes
v0.4.0 August 25, 2026 Release notes · Detailed changes
v0.3.1 August 25, 2026 Release notes · Detailed changes
v0.3.0 August 25, 2026 Release notes · Detailed changes
v0.2.4 August 24, 2026 Release notes · Detailed changes
v0.2.1 August 24, 2026 Release notes · Detailed changes
v0.2.0 August 24, 2026 Release notes · Detailed changes
v0.1.0 August 24, 2026 Release notes · Detailed changes
Build from source

Requirements

  • macOS 14 or later
  • Swift 6 toolchain
  • Microphone and Accessibility permissions
  • Optional Speech Recognition permission for live preview
  • A Gemini API key for Google Direct, or an OpenRouter API key for OpenRouter

Build and install

swift build
./Scripts/package-app.sh
rm -rf /Applications/ChatterKey.app
ditto dist/ChatterKey.app /Applications/ChatterKey.app
open /Applications/ChatterKey.app

The development package is ad-hoc signed. Review DISTRIBUTION.md before publishing binaries.

Default provider configuration

Model availability and pricing change over time, so every model ID and cost-estimation rate remains editable in Settings.

  • Connections: Google Direct (new-install default) and OpenRouter. Each uses its fixed official API host and its own Keychain account.
  • Audio model: gemini-3.5-flash-lite on Google Direct; google/gemini-3.5-flash-lite on OpenRouter. Both use one model for all writing modes and voice edits.
  • Replace the single model ID in Settings when adopting another audio-input/text-output model. Update its rates at the same time.
  • Gemini 3.5 Flash-Lite standard estimates: $0.30/M audio input tokens, $0.30/M text input tokens, $2.50/M output tokens (checked September 7, 2026).
  • Cost estimates use 32 audio tokens/second and approximate text tokens. Selected text is counted for edits; the on-device rough transcript is not billed as another text input. Extra reasoning, retries, failed calls, taxes, and fees are not included.
  • Legacy settings migrate to the single-model schema. Existing OpenRouter Gemini selections and local history remain available. Unsupported legacy OpenAI/custom setups retain the v4.5 OpenRouter migration path; keys are never copied between providers.
Repository safety

Build output, packaged apps, environment files, certificates, provisioning profiles, local agent files, and common secret files are excluded by .gitignore.

Before a public push, run:

./Scripts/check-public.sh
git status --short

Never include API keys, private audio, or transcripts in an issue or pull request.

Contributing

Bug reports, feature ideas, documentation improvements, and focused pull requests are welcome. Please include reproducible steps without sharing sensitive content.

License

MIT — see LICENSE.

About

Open-source AI voice typing for macOS. Hold Fn, speak naturally, and instantly insert polished, translated text into any app using your preferred OpenAI-compatible provider securely.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages