Select text anywhere on macOS, press ⌥Space, and get an answer from any LLM right at your cursor. Native menu-bar app. Bring your own model: OpenAI, OpenRouter, Ollama, LM Studio. No telemetry.
Swift
0
26 commits
updated Sep 30, 2026
Squint is a tiny, native Mac menu-bar app that puts the LLM of your choice — cloud or local — one keystroke away from any text on your screen.
No copy-paste. No chat tab. No losing your place.
Squint sends the text you select in any app to an LLM and shows the response in a small panel at your cursor. It can explain the selection, answer a question you ask about it, or take a question with nothing selected.
Ask your own question. |
Read any language. |
Cut through jargon. |
Or just ask. |
Squint works out of the box with three presets, each on its own hotkey:
| Preset | Hotkey | What it does |
|---|---|---|
| Explain | ⌥ Space | Explains the selection the moment you press the key |
| Ask | ⌥ ⇧ Space | Takes the selection plus your own question about it |
| Prompt | ⌃ ⌥ Space | Skips the selection for a quick, Spotlight-style question |
The real power is in making your own.
{{app}}, {{windowTitle}} and {{date}}, so one prompt can behave differently in Xcode than in Mail.
A new preset, from Settings to answer in about fifteen seconds.
Squint currently installs from source. You'll need macOS 14 or later, Xcode 15 or later, and XcodeGen.
brew install xcodegen
git clone https://github.com/ZsoltTanko/squint.git
cd squint
./bin/dev-restart.sh
That builds Squint and launches it. It lives in your menu bar (look for the half-closed eye), and it has no Dock icon.
Open Settings… from the menu-bar icon, then:
Now select some text anywhere and press ⌥ Space.
Here are a few presets worth stealing. Create one in Settings → Prompts, paste in the system prompt, and give it a hotkey. The selected text is sent as the message, so the prompt only needs to say what to do with it.
Translate the text into natural, idiomatic Spanish. Keep formatting, code and names unchanged. Output only the translation.
You are a senior engineer. The user selected this code in {{app}} ({{windowTitle}}). Explain what it does step by step, then point out anything surprising, risky or worth refactoring. Be concise.
Rewrite the text to be clearer and more concise while keeping its meaning and tone. Output only the rewritten text, ready to paste.
Press ⌘ C in the panel to copy the result.
The user selected a message they received in {{app}}. Draft a reply that does the following: {{userInput}}. Match the sender's tone and keep it short. Output only the reply.
Define the selected term in one sentence, the way a knowledgeable colleague would. If it's an acronym, expand it first.
Presets can be exported and imported as JSON from Settings → Prompts, so a good set is easy to share.
| Key | Action |
|---|---|
| Esc | Close the panel (or collapse the follow-up bar if it's open). Closing also cancels a response that's still streaming. |
| ⌘ ↵ | Send / Ask |
| ↵ | Send, when the preset's input field is focused (⇧ ↵ inserts a newline) |
| ⌘ C | Copy the selected part of the response, or all of it if nothing is selected |
| ⌘ + / ⌘ - | Make the response text bigger or smaller (11–18 pt) |
| ⌘ L | Open the follow-up bar |
| ⌘ , | Open Settings (the panel stays open behind it) |
Each preset has two toggles in Settings → Prompts → Edit, and together they decide how it behaves:
{{userInput}}.The three built-in presets cover the common combinations:
⌥ Space opens whichever preset is set as the default, which is Explain to begin with. Change any of these shortcuts in Settings → General and Settings → Prompts.
All of them can be edited, renamed or deleted. Your edits and deletions are respected across updates. The input field grows with what you type (up to about 30 lines), so multi-paragraph prompts work fine.
Settings → General → Window behavior
Panel placement: Centered on cursor (default), Near cursor or Centered on screen. The panel always stays on the active screen.
When clicking outside the panel:
With the first two, Squint appears in ⌘ Tab while the panel is open, so you can always get back to it. Clicking away never cancels a response; only closing the panel or starting a new query does.
Settings → General → History
#RGB, #RRGGBB or #RRGGBBAA for background and text). Custom colors pick a matching light or dark style automatically so the rest of the panel stays legible.System prompts can include these variables, which are filled in when you invoke a preset:
| Variable | Value |
|---|---|
{{selection}} | The selected text (it's also sent as the message) |
{{userInput}} | What you typed into the panel |
{{app}} | The app you were in |
{{windowTitle}} | That app's window title, when macOS provides it |
{{date}} | Today's date |
Does it work in every app? Almost. The hotkey reads the selection through macOS Accessibility and falls back to a simulated copy in apps that don't support it. Right-click → Services → Ask Squint works anywhere macOS Services do. If something doesn't work, see Troubleshooting.
Which model should I use? For the instant feel, use a fast model. With a reasoning model, set the reasoning effort to minimal on the model or preset, or answers will take a few seconds to start. Local models through Ollama or LM Studio work too.
Can I make answers arrive faster?
If your provider offers a priority tier, yes. Set the model's Service tier to priority in Settings → Models. On OpenAI that's Fast mode, and on OpenRouter it works across the providers that offer one. You get lower latency at a higher per-token price. To use it only for some presets, add the model twice (once with the tier, once without) and pick one per preset.
One of the hotkeys is already taken on my Mac. Change ⌥ Space in Settings → General, and any preset's shortcut in Settings → Prompts.
Squint is a native Swift app built with SwiftUI and AppKit. It talks to models over plain URLSession streaming and depends on just two Swift packages: KeyboardShortcuts and MarkdownUI. The whole dev loop is one command:
./bin/dev-restart.sh
It regenerates the Xcode project if needed, rebuilds, re-registers the Services menu, and relaunches. Before you dig in, read:
Squint is released under the MIT License.
Swift
99.2%
Select text anywhere on macOS, press ⌥Space, and get an answer from any LLM right at your cursor. Native menu-bar app. Bring your own model: OpenAI, OpenRouter, Ollama, LM Studio. No telemetry.
Swift
0
26 commits
updated Sep 30, 2026
Squint is a tiny, native Mac menu-bar app that puts the LLM of your choice — cloud or local — one keystroke away from any text on your screen.
No copy-paste. No chat tab. No losing your place.
Squint sends the text you select in any app to an LLM and shows the response in a small panel at your cursor. It can explain the selection, answer a question you ask about it, or take a question with nothing selected.
Ask your own question. |
Read any language. |
Cut through jargon. |
Or just ask. |
Squint works out of the box with three presets, each on its own hotkey:
| Preset | Hotkey | What it does |
|---|---|---|
| Explain | ⌥ Space | Explains the selection the moment you press the key |
| Ask | ⌥ ⇧ Space | Takes the selection plus your own question about it |
| Prompt | ⌃ ⌥ Space | Skips the selection for a quick, Spotlight-style question |
The real power is in making your own.
{{app}}, {{windowTitle}} and {{date}}, so one prompt can behave differently in Xcode than in Mail.
A new preset, from Settings to answer in about fifteen seconds.
Squint currently installs from source. You'll need macOS 14 or later, Xcode 15 or later, and XcodeGen.
brew install xcodegen
git clone https://github.com/ZsoltTanko/squint.git
cd squint
./bin/dev-restart.sh
That builds Squint and launches it. It lives in your menu bar (look for the half-closed eye), and it has no Dock icon.
Open Settings… from the menu-bar icon, then:
Now select some text anywhere and press ⌥ Space.
Here are a few presets worth stealing. Create one in Settings → Prompts, paste in the system prompt, and give it a hotkey. The selected text is sent as the message, so the prompt only needs to say what to do with it.
Translate the text into natural, idiomatic Spanish. Keep formatting, code and names unchanged. Output only the translation.
You are a senior engineer. The user selected this code in {{app}} ({{windowTitle}}). Explain what it does step by step, then point out anything surprising, risky or worth refactoring. Be concise.
Rewrite the text to be clearer and more concise while keeping its meaning and tone. Output only the rewritten text, ready to paste.
Press ⌘ C in the panel to copy the result.
The user selected a message they received in {{app}}. Draft a reply that does the following: {{userInput}}. Match the sender's tone and keep it short. Output only the reply.
Define the selected term in one sentence, the way a knowledgeable colleague would. If it's an acronym, expand it first.
Presets can be exported and imported as JSON from Settings → Prompts, so a good set is easy to share.
| Key | Action |
|---|---|
| Esc | Close the panel (or collapse the follow-up bar if it's open). Closing also cancels a response that's still streaming. |
| ⌘ ↵ | Send / Ask |
| ↵ | Send, when the preset's input field is focused (⇧ ↵ inserts a newline) |
| ⌘ C | Copy the selected part of the response, or all of it if nothing is selected |
| ⌘ + / ⌘ - | Make the response text bigger or smaller (11–18 pt) |
| ⌘ L | Open the follow-up bar |
| ⌘ , | Open Settings (the panel stays open behind it) |
Each preset has two toggles in Settings → Prompts → Edit, and together they decide how it behaves:
{{userInput}}.The three built-in presets cover the common combinations:
⌥ Space opens whichever preset is set as the default, which is Explain to begin with. Change any of these shortcuts in Settings → General and Settings → Prompts.
All of them can be edited, renamed or deleted. Your edits and deletions are respected across updates. The input field grows with what you type (up to about 30 lines), so multi-paragraph prompts work fine.
Settings → General → Window behavior
Panel placement: Centered on cursor (default), Near cursor or Centered on screen. The panel always stays on the active screen.
When clicking outside the panel:
With the first two, Squint appears in ⌘ Tab while the panel is open, so you can always get back to it. Clicking away never cancels a response; only closing the panel or starting a new query does.
Settings → General → History
#RGB, #RRGGBB or #RRGGBBAA for background and text). Custom colors pick a matching light or dark style automatically so the rest of the panel stays legible.System prompts can include these variables, which are filled in when you invoke a preset:
| Variable | Value |
|---|---|
{{selection}} | The selected text (it's also sent as the message) |
{{userInput}} | What you typed into the panel |
{{app}} | The app you were in |
{{windowTitle}} | That app's window title, when macOS provides it |
{{date}} | Today's date |
Does it work in every app? Almost. The hotkey reads the selection through macOS Accessibility and falls back to a simulated copy in apps that don't support it. Right-click → Services → Ask Squint works anywhere macOS Services do. If something doesn't work, see Troubleshooting.
Which model should I use? For the instant feel, use a fast model. With a reasoning model, set the reasoning effort to minimal on the model or preset, or answers will take a few seconds to start. Local models through Ollama or LM Studio work too.
Can I make answers arrive faster?
If your provider offers a priority tier, yes. Set the model's Service tier to priority in Settings → Models. On OpenAI that's Fast mode, and on OpenRouter it works across the providers that offer one. You get lower latency at a higher per-token price. To use it only for some presets, add the model twice (once with the tier, once without) and pick one per preset.
One of the hotkeys is already taken on my Mac. Change ⌥ Space in Settings → General, and any preset's shortcut in Settings → Prompts.
Squint is a native Swift app built with SwiftUI and AppKit. It talks to models over plain URLSession streaming and depends on just two Swift packages: KeyboardShortcuts and MarkdownUI. The whole dev loop is one command:
./bin/dev-restart.sh
It regenerates the Xcode project if needed, rebuilds, re-registers the Services menu, and relaunches. Before you dig in, read:
Squint is released under the MIT License.
Swift
99.2%