jot-gemini-transcribe-macOS README

The project's README from github.com/google-gemini/jot-gemini-transcribe-macOS. As one markdown file: README.md.

Jot

Jot

Gemini 3.5 Transcribe Demo. Hold a key. Speak. It types.

Smart dictation for macOS that puts polished text wherever your cursor is.

Created by Ammaar Reshi · Apache 2.0 licensed

This is not an officially supported Google product.


What it is

Hold fn, say the thing, let go. A moment later your words are in the app you were already using — punctuated, filler words removed, cleaned up. No window to switch to, no transcript to copy, no account to make.

Jot preview

It is deliberately small: a menu bar icon, a pill at the bottom of your screen while you talk, and a History window that proves nothing was ever lost.

The three gestures

Gesture What happens
Hold fn Records while held. Release and the text lands at your cursor.
fn + tap Space Hands-free: keeps recording after you let go. Tap fn to finish.
Esc Cancels. Anything over 10 seconds is still kept in History.

The key is rebindable in Settings → General if fn is spoken for.

What makes it different

It follows a change of mind. Say "let's meet at 1pm — actually, no, make it 2pm" and Jot writes "Let's meet at 2pm." That is the whole pitch, and onboarding makes you do it once so you believe it.

It never loses your words. Audio goes to disk from the first millisecond, so a crash, a kill -9, or a flat battery costs you nothing — the recording is recovered on next launch. Offline, dictations queue and land when you reconnect. Every failure is retryable from History. Release the key mid-word and it keeps listening until you actually stop.

It is private by architecture. Your voice goes from your Mac straight to the Gemini API with your key. No middleman server, no account, no analytics, no screenshots, no keystroke logging — one network host, and you can read every line of the code that talks to it. See PRIVACY.md.

Your jargon, spelled right. Names and product terms go in the Dictionary and ride along with the audio, so the model hears "Kubernetes" instead of guessing "cooper netties" — corrected at the source, not patched afterwards. Tone matching for email vs. chat vs. code is available too, in Settings → Dictation.

Install

  1. Download the latest Jot-x.y.z.dmg from Releases.
  2. Drag Jot into Applications and launch it from there — apps run from a mounted disk image are sandboxed by macOS and the permissions you grant will not stick.
Drag Jot to Applications

Setup takes about two minutes and the app walks you through it:

  1. Paste a Gemini API key — get one at Google AI Studio. It is stored in your macOS Keychain and only ever sent to Google.
  2. Allow the microphone — say hello and it advances by itself.
  3. Allow Accessibility — macOS requires this for any app that types into another app.
  4. Hold fn and talk.

Cost: you pay Google for what you dictate at Gemini API pricing; a free tier exists and a typical dictation is a few seconds of audio. Jot itself is free and has no account.

Model: Jot runs on Gemini's specialist transcription model, gemini-3.5-transcribe. Your key needs access to it; setup tells you up front if it does not, instead of failing on your first dictation.

How it works

fn down ─▶ capture (CAF on disk from t=0) ─▶ fn up ─▶ FLAC ─▶ Gemini transcribe
                                                                    │
   cursor ◀─ insert (AX → paste → clipboard) ◀─ [validate ◀─ tone pass] ─┘
                                              (optional, off by default)
                                                    │
                                              History (SQLite)

A few decisions worth knowing about, because they are what make it feel solid:

The full design specs — including the failure matrix the reliability work is built from — are in docs/design/.

Development

Requires macOS 14+, Xcode 16+, and xcodegen. The .xcodeproj is generated, not checked in.

brew install xcodegen
./scripts/build.sh          # xcodegen generate + xcodebuild
./scripts/test.sh           # swift test on JotCore
open Jot.xcodeproj          # or work in Xcode

Debug builds sign ad-hoc, so a clean clone needs no Apple account, certificate, or team membership — ./scripts/build.sh works as-is. To build under your own team instead: ./scripts/build.sh DEVELOPMENT_TEAM=XXXXXXXXXX. Only release builds (scripts/release.sh) need a real Developer ID.

App/            menu bar item, HUD pill, windows, design tokens, icon + sounds
JotCore/        all engine logic, headless and testable
  HotkeyEngine/     CGEventTap + the pure hold/lock/cancel grammar
  AudioEngine/      crash-safe CAF capture, device changes, prewarming
  TranscriptionClient/  Gemini calls, timeouts, retries, FLAC
  FormattingPipeline/   cleanup prompt, validation gate, dictionary rules
  InsertionEngine/      the AX → paste → clipboard ladder
  HistoryStore/         GRDB index, recovery, retry queue, retention
scripts/        build, test, icon, DMG, release
docs/           privacy, releasing, design specs, research

Useful while hacking:

# every surface is reachable headlessly
open "jot://settings/about"      # or /general /dictation /privacy /advanced
open "jot://history"  "jot://dictionary"  "jot://onboarding/5"

# watch it work
log show --last 5m --info --predicate 'subsystem == "com.ammaar.jot"'

Transcript text is logged as private and never appears in those logs.

Releasing

./scripts/release.sh archives, signs with Developer ID, notarizes, staples, and builds the installer DMG. It refuses to produce a shareable DMG that is not notarized. See docs/RELEASING.md for the certificate setup.

License

Apache License 2.0 — see LICENSE. Bundled fonts (Google Sans Flex, Google Sans Code) are SIL OFL 1.1. The earcons are original works covered by the same Apache 2.0 license. Details in THIRD_PARTY_NOTICES.md.

jot-gemini-transcribe-macOS (google-gemini/jot-gemini-transcribe-macOS)

Searching Database…

这是什么?Jot 是一款 macOS 应用,能把你说的话直接变成光标所在处的整洁带标点文本——按住快捷键、开口说话,它就会用 Google 的 Gemini 转录模型把结果打出来。
这是独立应用,还是需要集成到我自己项目里的库?Jot 是独立的 macOS 应用,带菜单栏图标和一个小小的录音胶囊;没有需要集成的 SDK,下载、安装后按住一个键就能听写。
怎么安装和设置?从 Releases 页面下载 Jot-x.y.z.dmg,把 Jot 拖入「应用程序」(直接从挂载的磁盘镜像运行会导致权限失效),然后粘贴一个 Gemini API 密钥,允许麦克风访问并允许辅助功能——整个设置大约两分钟。
我需要自己的 Gemini API 密钥吗?需要——安装时你要粘贴一个来自 Google AI Studio 的 Gemini API 密钥,而且密钥必须能访问 gemini-3.5-transcribe 这个模型;Jot 会提前检查这一点,而不是让你在第一次听写时才失败。
没有网络连接它还能用吗?实时转录不行——你的语音要通过网络发送到 Gemini API。离线时听写会排队,重新联网后发送,失败的内容可以在「历史记录」中重试。
我的语音数据到底去了哪里?直接从你的 Mac 用你自己的密钥发往 Gemini API——没有中间服务器、账号、分析统计或击键记录,而且与 API 通信的代码是可读的。
它怎么处理 'actually, no, make it 2pm' 这类口头更正?Jot 能跟上听写过程中的想法改变——说出 'let's meet at 1pm — actually, no, make it 2pm' 会得到最终更正后的文本 'Let's meet at 2pm',初次设置时会演示一次,让你放心。
录音途中应用崩溃了怎么办?音频从录音的第一毫秒起就写入磁盘,所以崩溃、kill -9 或电池耗尽都不会丢失任何内容——下次启动时会自动恢复录音。
它如何避免把专业术语和名字打错?你可以在设置的 Dictionary 里添加词条,这些词条会随音频一起发送,让模型听到正确的拼写(比如 'Kubernetes'),而不是按发音去猜。
Size
5 MB
Stars
493
Age
1mo
Commits · 90 Days