Free, open-source AI autocomplete for macOS — on-device ghost-text suggestions in every app. A private, local Cotypist alternative built with MLX.
30
stars
11
commits
Swift
primary language
Aug 24, 2026
updated
TabType predicts your next words as you type — in almost any app — and runs entirely on your Mac. No cloud. No account. No subscription. No telemetry. It's an open-source Cotypist alternative that learns your voice and never sends a keystroke off your machine.
Keywords: Cotypist alternative · open source macOS autocomplete · local AI text prediction Mac · on-device LLM typing assistant · private ghost-text completion
[!IMPORTANT] Alpha + AI disclosure — please read first.
This is an early alpha. It works and it's genuinely useful day-to-day, but expect rough edges. It's an open-source project that needs your help — try it, file issues, and send PRs. Bug reports on specific apps are the single most valuable contribution right now.
Built by a senior full-stack engineer (5+ years), in the open, with heavy use of AI. Full transparency: AI was a real power tool throughout. The code was written with AI coding-assistant help; the app icon/artwork and the documentation are AI-generated; and suggestions come from a third-party open-weights LLM (Qwen3) running locally — TabType trains no models and reviews no output. This is still not a thin "AI generated a wrapper" app — it's a native macOS app with a hand-tuned local-inference pipeline and 50+ tests, with a human accountable for the architecture, debugging, and result. See the complete AI disclosure below.
TabType is a solo, spare-time, non-commercial project, and it will only get better with a community around it. If you find it useful, please pitch in — every bit genuinely moves the needle:
No corporate backing, no paid tier, no ads — just trying to make something great and give it away. Thank you. 🙏
As you type, TabType shows a dimmed ghost-text prediction of what comes next. Press Tab to accept a word, again for the next, or accept the whole thing at once. A local language model (Qwen3-4B via Apple's MLX; on 24 GB+ Macs the higher-precision 8-bit build is recommended automatically) generates the suggestions, personalized to how you write — and it all happens on-device.
Completions
Context awareness — suggestions that actually fit what you're doing
Private by design
Models
Control
/macros (/date, /uuid, 10km->mi, 2+2*3), :emoji, and local autocorrect (incl. 6 Indian languages)| TabType | Cotypist | Copilot / OS predictive text | |
|---|---|---|---|
| Price | Free forever | Freemium (paid tier) | Free / paid |
| Open source | ✅ MIT | ❌ | ❌ |
| Runs on-device | ✅ | ✅ | ⚠️ mixed |
| Works in any app (prose) | ✅ | ✅ | ❌ code / single-word |
| Learns your voice | ✅ | ✅ | ❌ |
| Screen / conversation context | ✅ AX tree + OCR | ✅ | ❌ |
| Notarized / polished | ⚠️ alpha, unnotarized | ✅ | ✅ |
vs Cotypist — the closest comparison and our north star. TabType matches its core: on-device models, screen/accessibility context, personalization, text mirroring, speculative "parked" generation, and word alternatives. Cotypist is more polished, notarized, and has a paid tier; TabType is free, open-source, and account-free. We're the open project working toward Cotypist-grade quality.
There are a few other open-source macOS autocomplete projects — each great in its own way. Here's how TabType compares (and huge thanks to all of them for charting the path):
| TabType | Sombra | KeyType | cotabby | |
|---|---|---|---|---|
| Open source | ✅ MIT | ✅ | ✅ | ✅ |
| Inference backend | MLX (Qwen3) | llama.cpp | on-device LLM | on-device LLM |
| Context: screen OCR | ✅ | ✅ | — | ✅ focused window |
| Context: accessibility-tree transcript | ✅ | — | — | — |
| Remembers your recent messages / writing | ✅ | — | — | — |
| Personal phrase memory + few-shot | ✅ | dictionary | — | — |
| Speculative "parked" generation + KV cache | ✅ | — | — | — |
| Word alternatives | ✅ | — | — | — |
| Text mirroring / baseline-probed rendering | ✅ | — | — | — |
| Per-app & per-domain policies | ✅ | per-app | — | — |
| Apple Intelligence engine | ✅ | — | — | — |
Where each shines: Sombra pairs llama.cpp with fast macOS-dictionary completions — a clean, lightweight approach. KeyType explores constrained/grammar decoding for tightly-shaped output. cotabby pioneered focused-window OCR context. TabType's bet is deeper context (accessibility-tree transcripts, your recent messages, phrase memory) and Cotypist-grade UX (speculative parking, mirror rendering, per-app policies). See the detailed comparison.
[!NOTE] TabType has no Apple Developer account behind it (it's free and non-commercial — see below), so it is not notarized. macOS will warn you the first time. This is expected for open-source Mac apps; here's the one-time approval.
TabType-x.y.z.dmg from Releases.xattr -dr com.apple.quarantine /Applications/TabType.appRequirements: Apple Silicon Mac (M1 or later), macOS 14+.
Nothing you type leaves your machine. Inference is 100% local. The only network request TabType ever makes is downloading the model from Hugging Face on first run. Typing history (opt-in, off by default) is AES-encrypted with a key in your Keychain.
# One-time: point at full Xcode + install the Metal toolchain (MLX compiles Metal shaders)
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcodebuild -downloadComponent MetalToolchain
# One-time: stable self-signed identity so macOS keeps your permission grants across builds
./Scripts/setup-signing.sh
# Build + run
./Scripts/build.sh app && open dist/TabType.app
# Run tests
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift test
swift buildalone won't produce a runnable app — MLX's Metal kernels requirexcodebuild.
The pipeline, end to end:
KeystrokeMonitor (CGEventTap)
→ ContextReader / ScreenContextProvider / TranscriptExtractor (what you typed + surrounding context)
→ PromptBuilder (budgeted prompt assembly)
→ Predictor (MLX) with KV-prefix cache + speculative parking (local generation)
→ SuggestionOverlay (baseline-probed ghost / mirror render)
Personalization (PhraseMemory, TypingHistoryStore), per-app rules (AppPolicy), and the settings UI (SettingsView) hang off this core. See CONTRIBUTING.md for a fuller tour.
TabType is built by a senior full-stack engineer with 5+ years of experience, in the open, with heavy use of AI. In the spirit of transparency, here is a complete accounting of what in this project is AI-generated:
Code — Written with heavy AI coding-assistant help (in the Claude Code style), directed, reviewed, debugged, and architected by the author. This is not a thin "AI generated a wrapper" app: it's a native macOS application with a hand-tuned local-inference pipeline, reverse-engineering work to reach parity with the best in the category, careful Accessibility/Gatekeeper/AppKit integration, and 50+ tests. AI accelerated the typing; the engineering judgment and the hundreds of small correctness decisions are the author's.
Icons & artwork — The app icon and other visual assets are AI-generated.
Documentation — This README and the other docs (CONTRIBUTING.md, RELEASING.md, docs/COMPARISON.md, issue templates) were written with AI assistance and reviewed by the author.
The completion model — Suggestions come from a third-party, open-weights language model (by default Qwen3-4B-Instruct from Alibaba's Qwen team; Google's Gemma and others are also selectable). TabType did not train or fine-tune any model — it runs these pre-trained weights locally via MLX. Their training data and behavior are the model authors', governed by their respective licenses (e.g. the Qwen and Gemma terms).
Runtime output provenance — Every suggestion you see is generated on-device by that language model from your local context (the text you're typing, your recent messages/writing, and — with permission — nearby on-screen text). Outputs are probabilistic and not curated, fact-checked, or reviewed by a human or by us; treat them like any LLM output — they can be wrong, biased, or inappropriate. Nothing is sent to a server; generation is 100% local. TabType does not collect, transmit, or train on your text.
What is not AI — the product direction, architecture, the decision of what to build and how it should feel, the debugging, and the responsibility for the result. A human is accountable for this software.
This is an alpha that wants collaborators. Great first contributions: per-app extraction recipes for apps that misbehave, more autocorrect languages, UI polish, and — if you have an Apple Developer ID — help with notarization. See CONTRIBUTING.md.
MIT — free for anyone to use, modify, and distribute. There is no paid tier and no plan to ever commercialize TabType. Built for the community.
MLX & mlx-swift · Qwen & Gemma models · swift-transformers. Inspiration from Cotypist, Sombra, and KeyType.
11 commits
Swift
98.6%
Shell
1.4%
Free, open-source AI autocomplete for macOS — on-device ghost-text suggestions in every app. A private, local Cotypist alternative built with MLX.
30
stars
11
commits
Swift
primary language
Aug 24, 2026
updated
TabType predicts your next words as you type — in almost any app — and runs entirely on your Mac. No cloud. No account. No subscription. No telemetry. It's an open-source Cotypist alternative that learns your voice and never sends a keystroke off your machine.
Keywords: Cotypist alternative · open source macOS autocomplete · local AI text prediction Mac · on-device LLM typing assistant · private ghost-text completion
[!IMPORTANT] Alpha + AI disclosure — please read first.
This is an early alpha. It works and it's genuinely useful day-to-day, but expect rough edges. It's an open-source project that needs your help — try it, file issues, and send PRs. Bug reports on specific apps are the single most valuable contribution right now.
Built by a senior full-stack engineer (5+ years), in the open, with heavy use of AI. Full transparency: AI was a real power tool throughout. The code was written with AI coding-assistant help; the app icon/artwork and the documentation are AI-generated; and suggestions come from a third-party open-weights LLM (Qwen3) running locally — TabType trains no models and reviews no output. This is still not a thin "AI generated a wrapper" app — it's a native macOS app with a hand-tuned local-inference pipeline and 50+ tests, with a human accountable for the architecture, debugging, and result. See the complete AI disclosure below.
TabType is a solo, spare-time, non-commercial project, and it will only get better with a community around it. If you find it useful, please pitch in — every bit genuinely moves the needle:
No corporate backing, no paid tier, no ads — just trying to make something great and give it away. Thank you. 🙏
As you type, TabType shows a dimmed ghost-text prediction of what comes next. Press Tab to accept a word, again for the next, or accept the whole thing at once. A local language model (Qwen3-4B via Apple's MLX; on 24 GB+ Macs the higher-precision 8-bit build is recommended automatically) generates the suggestions, personalized to how you write — and it all happens on-device.
Completions
Context awareness — suggestions that actually fit what you're doing
Private by design
Models
Control
/macros (/date, /uuid, 10km->mi, 2+2*3), :emoji, and local autocorrect (incl. 6 Indian languages)| TabType | Cotypist | Copilot / OS predictive text | |
|---|---|---|---|
| Price | Free forever | Freemium (paid tier) | Free / paid |
| Open source | ✅ MIT | ❌ | ❌ |
| Runs on-device | ✅ | ✅ | ⚠️ mixed |
| Works in any app (prose) | ✅ | ✅ | ❌ code / single-word |
| Learns your voice | ✅ | ✅ | ❌ |
| Screen / conversation context | ✅ AX tree + OCR | ✅ | ❌ |
| Notarized / polished | ⚠️ alpha, unnotarized | ✅ | ✅ |
vs Cotypist — the closest comparison and our north star. TabType matches its core: on-device models, screen/accessibility context, personalization, text mirroring, speculative "parked" generation, and word alternatives. Cotypist is more polished, notarized, and has a paid tier; TabType is free, open-source, and account-free. We're the open project working toward Cotypist-grade quality.
There are a few other open-source macOS autocomplete projects — each great in its own way. Here's how TabType compares (and huge thanks to all of them for charting the path):
| TabType | Sombra | KeyType | cotabby | |
|---|---|---|---|---|
| Open source | ✅ MIT | ✅ | ✅ | ✅ |
| Inference backend | MLX (Qwen3) | llama.cpp | on-device LLM | on-device LLM |
| Context: screen OCR | ✅ | ✅ | — | ✅ focused window |
| Context: accessibility-tree transcript | ✅ | — | — | — |
| Remembers your recent messages / writing | ✅ | — | — | — |
| Personal phrase memory + few-shot | ✅ | dictionary | — | — |
| Speculative "parked" generation + KV cache | ✅ | — | — | — |
| Word alternatives | ✅ | — | — | — |
| Text mirroring / baseline-probed rendering | ✅ | — | — | — |
| Per-app & per-domain policies | ✅ | per-app | — | — |
| Apple Intelligence engine | ✅ | — | — | — |
Where each shines: Sombra pairs llama.cpp with fast macOS-dictionary completions — a clean, lightweight approach. KeyType explores constrained/grammar decoding for tightly-shaped output. cotabby pioneered focused-window OCR context. TabType's bet is deeper context (accessibility-tree transcripts, your recent messages, phrase memory) and Cotypist-grade UX (speculative parking, mirror rendering, per-app policies). See the detailed comparison.
[!NOTE] TabType has no Apple Developer account behind it (it's free and non-commercial — see below), so it is not notarized. macOS will warn you the first time. This is expected for open-source Mac apps; here's the one-time approval.
TabType-x.y.z.dmg from Releases.xattr -dr com.apple.quarantine /Applications/TabType.appRequirements: Apple Silicon Mac (M1 or later), macOS 14+.
Nothing you type leaves your machine. Inference is 100% local. The only network request TabType ever makes is downloading the model from Hugging Face on first run. Typing history (opt-in, off by default) is AES-encrypted with a key in your Keychain.
# One-time: point at full Xcode + install the Metal toolchain (MLX compiles Metal shaders)
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcodebuild -downloadComponent MetalToolchain
# One-time: stable self-signed identity so macOS keeps your permission grants across builds
./Scripts/setup-signing.sh
# Build + run
./Scripts/build.sh app && open dist/TabType.app
# Run tests
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer swift test
swift buildalone won't produce a runnable app — MLX's Metal kernels requirexcodebuild.
The pipeline, end to end:
KeystrokeMonitor (CGEventTap)
→ ContextReader / ScreenContextProvider / TranscriptExtractor (what you typed + surrounding context)
→ PromptBuilder (budgeted prompt assembly)
→ Predictor (MLX) with KV-prefix cache + speculative parking (local generation)
→ SuggestionOverlay (baseline-probed ghost / mirror render)
Personalization (PhraseMemory, TypingHistoryStore), per-app rules (AppPolicy), and the settings UI (SettingsView) hang off this core. See CONTRIBUTING.md for a fuller tour.
TabType is built by a senior full-stack engineer with 5+ years of experience, in the open, with heavy use of AI. In the spirit of transparency, here is a complete accounting of what in this project is AI-generated:
Code — Written with heavy AI coding-assistant help (in the Claude Code style), directed, reviewed, debugged, and architected by the author. This is not a thin "AI generated a wrapper" app: it's a native macOS application with a hand-tuned local-inference pipeline, reverse-engineering work to reach parity with the best in the category, careful Accessibility/Gatekeeper/AppKit integration, and 50+ tests. AI accelerated the typing; the engineering judgment and the hundreds of small correctness decisions are the author's.
Icons & artwork — The app icon and other visual assets are AI-generated.
Documentation — This README and the other docs (CONTRIBUTING.md, RELEASING.md, docs/COMPARISON.md, issue templates) were written with AI assistance and reviewed by the author.
The completion model — Suggestions come from a third-party, open-weights language model (by default Qwen3-4B-Instruct from Alibaba's Qwen team; Google's Gemma and others are also selectable). TabType did not train or fine-tune any model — it runs these pre-trained weights locally via MLX. Their training data and behavior are the model authors', governed by their respective licenses (e.g. the Qwen and Gemma terms).
Runtime output provenance — Every suggestion you see is generated on-device by that language model from your local context (the text you're typing, your recent messages/writing, and — with permission — nearby on-screen text). Outputs are probabilistic and not curated, fact-checked, or reviewed by a human or by us; treat them like any LLM output — they can be wrong, biased, or inappropriate. Nothing is sent to a server; generation is 100% local. TabType does not collect, transmit, or train on your text.
What is not AI — the product direction, architecture, the decision of what to build and how it should feel, the debugging, and the responsibility for the result. A human is accountable for this software.
This is an alpha that wants collaborators. Great first contributions: per-app extraction recipes for apps that misbehave, more autocorrect languages, UI polish, and — if you have an Apple Developer ID — help with notarization. See CONTRIBUTING.md.
MIT — free for anyone to use, modify, and distribute. There is no paid tier and no plan to ever commercialize TabType. Built for the community.
MLX & mlx-swift · Qwen & Gemma models · swift-transformers. Inspiration from Cotypist, Sombra, and KeyType.
11 commits
Swift
98.6%
Shell
1.4%