A performance-focused fork of KeyType, the open-source on-device tab-autocomplete utility for macOS.
KeyZoom is a fork of johnbean393/KeyType, an open-source, on-device, system-wide tab-autocomplete utility for macOS.
It watches the focused text field across any app, predicts a short continuation at the cursor using a local LLM, and offers it in a lightweight bubble above the cursor that you accept with Tab.
This fork is about making that loop fast enough to keep up with normal typing speed, while avoiding the rendering artifacts that can happen with inline ghost-text overlays.
KeyZoom remains a MIT-licensed alternative to the closed-source app Cotypist.
KeyZoom keeps the original KeyType architecture, but tunes the live typing path for lower latency:
- Uses tighter live prompt and runtime budgets (
512prompt tokens and a1024token runtime context) so each keystroke spends less time reprocessing context. - Caps top-logit extraction on the hot path to reduce Swift-side work on large Qwen vocabularies.
- Paints useful progressive completions earlier, after fewer generated tokens, instead of waiting for a full candidate when a short suggestion is already usable.
- Preserves and extends KeyType's KV-cache, reuse-history, type-through, and cancellation behavior so newer keystrokes can replace older in-flight work quickly.
- Adds release-mode latency instrumentation and a Qwen3.5 2B audit harness for measuring anchor reuse, decode time, snapshot/restore cost, top-logit materialization, and first-paint behavior.
The visible UI is also changed: completions are shown in a small bubble above the cursor rather than as inline ghost text. That avoids the odd spacing, clipping, and rendering artifacts that can appear when trying to mirror arbitrary text fields across macOS apps.
- Download the latest release from this repository's releases page
- Double-click the downloaded
.dmgfile - Drag the app into
Applications - Open KeyZoom and complete the onboarding
Requirements: macOS 14+ and a recent version of Xcode.
git clone <this-repository-url>
cd KeyZoom
open KeyType.xcworkspaceBuild/run the KeyType scheme. The app and package targets still use the upstream KeyType workspace names in several places.
Per-package builds:
swift build --package-path Packages/AutocompleteCore
swift test --package-path Packages/PromptingKeyZoom/
├── KeyType.xcworkspace/ ← open this in Xcode
├── KeyType.xcodeproj/
├── KeyType/ ← app target (menu-bar shell)
├── KeyTypeTests/ KeyTypeUITests/
├── docs/ ← the project brief & playbooks (00–08)
└── Packages/ ← local SwiftPM packages (the real logic)
├── AutocompleteCore/ shared domain types & protocols
├── MacContextCapture/ AX focus + caret + text-field snapshot
├── Prompting/ sectioned, budgeted prompt builder
├── ModelRuntime/ llama.cpp wrapper
├── ConstrainedGeneration/ logit masking, trie admissibility, search
├── TokenProfiles/ ACPF profile reader + offline builder
├── CompletionUI/ overlay rendering (cursor-adjacent suggestion bubble)
├── TextInsertion/ pasteboard / keystroke insertion strategies
└── AppCompatibility/ per-app / per-domain override policy
MIT — see LICENSE.