AIβpowered text enhancement for macOS. Instantly rewrite, rephrase, or refine any text from your clipboard β all in one tap.
Every copy deserves a tweak.
- Latest DMG: Tweaks.dmg
- All Releases: Releases
- Requires Apple Silicon and Osaurus
- Quick Actions HUD: Press
Control+Tto open a centered HUD with 1β4 quick actions. Hit a number key or click to apply. - Lightning Fast: Streaming paste for subβsecond perceived response on capable models.
- One Shortcut: Copy any text, hit your global hotkey, and tweak β no context switching.
- Smart Refinement: Contextβaware AI rewrites, rephrases, or polishes while preserving intent.
- PrivacyβFirst: Sends text only to the endpoint you configure (local by default via Osaurus).
- InβApp Updates: Optional automatic updates powered by Sparkle.
- Visual Feedback: Subtle loading/trigger indicators for confidence while you work.
- Menu Bar App: Lives quietly in your menu bar.
Tweaks requires Osaurus, a native Apple Silicon local LLM server, to provide AI-powered text improvements. Osaurus is built on Apple's MLX for maximum performance on M-series chips.
Install Osaurus using Homebrew:
brew install osaurus-
Launch Osaurus: After installation, launch Osaurus from your Applications folder or by running:
osaurus
-
Download a Model:
- Click on the Osaurus menu bar icon
- Go to "Model Gallery" or "Downloads"
- Choose a model. We recommend: π
gemma-3n-E4B-it-lm-4biton Hugging Face - Click "Download" and wait for it to complete
-
Verify it's Running:
- Osaurus runs on
http://localhost:1337by default - You should see the Osaurus icon in your menu bar when it's active
- Osaurus runs on
-
Test the API (optional):
curl http://127.0.0.1:1337/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "llama-3.2-3b-instruct-4bit", "messages": [{"role":"user","content":"Hello"}] }'
Note: Osaurus requires Apple Silicon (M1/M2/M3 chips). Intel Macs are not supported.
download the latest .dmg
Drag into Applications, launch, and press Control + T to open the Quick Actions HUD.
- Clone the repository
- Open
tweaks.xcodeprojin Xcode - Build and run (Cmd+R)
Every time you build in debug mode, macOS treats it as a new app that needs accessibility permissions. We've included tools to make this process easier.
- Run the app from Xcode
- Click the menu bar icon (gear icon)
- Go to Debug tab
- Click "Setup Accessibility" button
- This automatically opens System Settings and copies the app path
- In System Settings:
- Click the "+" button
- Press Cmd+V to paste the path
- Select the app and click "Open"
- Toggle the switch ON
- Run the app from Xcode
- Click the menu bar icon (gear icon)
- Go to Debug tab
- Click "Debug Script"
- This creates and runs a Terminal script that guides you through the process
- Find your debug build location:
~/Library/Developer/Xcode/DerivedData/tweaks-*/Build/Products/Debug/tweaks.app - Open System Settings > Privacy & Security > Accessibility
- Remove any old "tweaks" entries with "-" button
- Click "+" and navigate to the path above
- Toggle ON
The app includes comprehensive feedback for debugging:
-
Permission Status Indicator
- Green checkmark = Ready to use
- Orange warning = Permission needed
- Red X = Permission denied
-
Hotkey Test Feature
- Main tab shows "Test Hotkey Now" button when permissions are granted
- Press count and last press time are displayed
- Visual indicator pulses when hotkey is triggered
- Toast notification appears in bottom-right corner
-
Debug Build Detection
- Automatically detects when running from Xcode
- Shows special debug helper UI
- Provides one-click setup process
- Keep the Debug tab open during development for quick access
- Use the feedback system to verify changes immediately
- The app remembers your custom hotkey between launches
- Visual feedback appears even without clipboard content
- macOS 14.0 or later (Apple Silicon M1/M2/M3 required)
- Xcode 16.0 or later
- Osaurus - Local LLM server (see Prerequisites above)
- Accessibility permission (for hotkey functionality)
Deadβsimple workflow:
- Copy any text: Select and copy from anywhere (email, docs, chat, code).
- Press your hotkey:
Control+Topens the Quick Actions HUD. - Get polished text: Press
1β4(or click) to apply β Tweaks streams and pastes the result, then restores your original clipboard.
- Press
Control+Tto show a compact HUD with up to 4 slots. - Press digit keys
1β4(or click) to pick an action without leaving your app. - Configure titles, descriptions, and the underlying system prompts in Settings β Quick Actions.
Behavior details:
- Tweaks copies your current selection (when possible), sends it to your configured AI endpoint, and streams results into your clipboard.
- It presses
Cmd+Vfor you to paste in the foreground app as deltas arrive, then restores your original clipboard shortly after. - If the AI call fails, Tweaks falls back to pasting your original clipboard unchanged.
- Default:
Control+Tβ Opens the Quick Actions HUD - Change it in the Settings tab by clicking "Change" and pressing your desired combination
- While recording, the current hotkey is temporarily suspended to avoid accidental triggers
- All keyboard events require Accessibility permission
- Your text is sent only to the endpoint you configure (local by default)
tweaks/
βββ App/ # App entry point and app lifecycle
β βββ tweaksApp.swift
β βββ AppDelegate.swift
βββ UI/ # Main UI and reusable components
β βββ ContentView.swift
β βββ MainView.swift
β βββ HeaderView.swift
β βββ QuickTweakMenu.swift # Centered HUD (1β4 quick actions)
β βββ QuickActionEditorView.swift # Configure HUD slots
β βββ AISettingsView.swift # Models, temperature, updates
β βββ HotkeyFeedback.swift
β βββ FuturisticUI.swift
βββ Hotkey/ # Global hotkey capture and helpers
β βββ HotkeyManager.swift
β βββ ShortcutRecorder.swift
β βββ ShortcutUtils.swift
βββ Permissions/ # Accessibility permission state and prompts
β βββ PermissionManager.swift
βββ Services/ # Clipboard β AI β paste flow
β βββ TweakService.swift
βββ AI/ # OpenAI-compatible client and defaults
β βββ Osaurus.swift
βββ Settings/ # User defaults and app settings
β βββ SettingsManager.swift
βββ Updates/ # Inβapp updates via Sparkle
β βββ SparkleManager.swift
βββ Debug/ # Debug-only utilities
β βββ DebugHelpers.swift
βββ Assets.xcassets
βββ tweaks.entitlements
Osaurus.Defaultssets defaultmodel,systemPrompt, andtemperature.TweakServicestreams deltas and pastes as they arrive for minimal perceived latency.
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions! To get started:
- Fork the repo and create a feature branch.
- Build locally and verify the hotkey, HUD, and streaming paste work.
- Run through the onboarding (Accessibility) if youβre on a new debug build.
- Follow the projectβs Swift style and keep code readable and wellβnamed.
- Open a pull request with a clear description and screenshots/GIFs where helpful.
Guidelines:
- Keep features focused and composable.
- Avoid catching errors silently; handle or surface meaningful context.
- Prefer early returns to deep nesting; keep functions small and intentionβrevealing.
- Update
README.mdanddocs/as needed (userβfacing changes, notes, appcast if relevant). - For UI, match the existing
FuturisticUI/theme components.
- Ensure Accessibility is granted (open the app β follow the prompt or see the Debug tab)
- Check the visual indicator in the top-right of the popover
- Use "Test Hotkey Now" button to verify functionality
- Ensure no other apps are using the same hotkey combination
- Some apps enable Secure Input and block simulated keystrokes; try another app
- Ensure you're granting permission to the exact build path
- Try quitting and reopening the app after granting permission
- Use the "Quit & Reopen" button in Debug tab
This happens when Xcode creates a new DerivedData folder:
- Use the Debug tab's "Setup Accessibility" button
- It automatically handles the new path
- Verify your server is reachable at
OSAURUS_BASE_URL - Check logs in the Xcode console (Debug build prints helpful messages)
- Confirm your endpoint is OpenAI-compatible and returns
choices[0].message.content
- Your clipboard text is sent to the server you configure. For maximum privacy, use a local server.
