macOS menu bar app for system-wide AI completions. Type anywhere, pause to get suggestions, Tab to accept.
TabKeys suggests completions system-wide: type in any app, pause briefly or press Tab to trigger a suggestion, then accept with Tab.
Pause to get a suggestion, Tab to accept.
System Requirements:
- macOS (tested on recent versions)
- One API key: Anthropic (Claude) or OpenAI (GPT-4o-mini) – set in the app via Settings…
- Accessibility permission (prompted on first run)
Important
I don't have an Apple Developer account yet. The app is not notarized and may show a popup on first launch that it is from an unidentified developer.
- Click OK to close the popup.
- Open System Settings > Privacy & Security.
- Scroll down and click Open Anyway next to the warning about the app.
- Confirm your choice if prompted.
You only need to do this once.
You can also install the app using Homebrew:
brew install --cask MahitGtg/tap/tabkeysTabKeys.app will be in Applications. To update later: brew upgrade --cask tabkeys.
- Click the app icon above to download the DMG, or go to the Releases page for TabKeys.dmg or TabKeys.zip.
- Open the DMG (or unzip the zip), then drag TabKeys.app to Applications (or leave it anywhere).
- Open TabKeys.app. Grant Accessibility when macOS asks. If macOS blocks the app, use Open Anyway as in the steps above.
- Add an API key: Click the keyboard icon in the menu bar → Settings… → paste an Anthropic or OpenAI API key → Save. The app will use it immediately (no restart needed).
- Use Restart Monitor from the menu if completions don’t appear after saving.
Privacy: Your API key is stored only in macOS Keychain on your Mac. We don’t store or have access to it. Only the text before the cursor is sent to the provider you choose to generate completions.
API keys can be created at Anthropic or OpenAI.
- Pause (~0.5s) while typing → AI completion is fetched and shown in a hover; press Tab to accept or keep typing to dismiss.
- Tab (with no suggestion showing) → passes through to your app as normal.
- Context: Uses text before the cursor in the focused app (via Accessibility) when available; otherwise the typed buffer. Context is cleared on click or app switch.
- macOS (recent version)
- Xcode (from the Mac App Store) with Command Line Tools
- API key for development (set in the app Settings… or via environment variables below)
- Accessibility permission (macOS will prompt on first run)
-
Clone the Repository:
git clone https://github.com/MahitGtg/TabKeys.git cd TabKeys -
Open the Project in Xcode:
open TabKeys/TabKeys.xcodeproj
-
Optional – Set API key via environment (so you don’t have to paste it in Settings every run):
- In Xcode: Product → Scheme → Edit Scheme… (or ⌘<).
- Select Run → Arguments → Environment Variables.
- Add
ANTHROPIC_API_KEYorOPENAI_API_KEYwith your key as the value.
-
Build and Run:
- Click the Run button or press Cmd + R. Grant Accessibility when macOS prompts.
-
Signing (if needed): If Xcode complains about signing, select the TabKeys target → Signing & Capabilities → choose your Team (or “Sign to Run Locally” for development).
- Context reading via Accessibility API works best in native macOS apps (TextEdit, Notes, Mail)
- Some apps (VS Code, Chrome, Slack) may have limited context awareness
- Arrow key navigation currently clears context (coming soon: smarter navigation handling)
- Enable/Disable app based completions
- Model selection
- Faster model options (local/Groq)
- Smarter context preservation during navigation
- Completion quality metrics
MIT – see LICENSE.
