{"id":50181581,"url":"https://github.com/gonemedia/aipointer","last_synced_at":"2026-05-25T07:01:57.521Z","repository":{"id":358295913,"uuid":"1237739069","full_name":"gonemedia/aipointer","owner":"gonemedia","description":"The AI cursor companion. Hold a key, ask a question, get an answer about whatever your cursor is pointing at. Vision LLM overlay for macOS, Windows, Linux. Multi-provider (OpenRouter, Anthropic, OpenAI, Gemini). Voice in/out. MIT licensed. No telemetry.","archived":false,"fork":false,"pushed_at":"2026-05-17T09:37:47.000Z","size":1121,"stargazers_count":98,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T10:33:33.136Z","etag":null,"topics":["ai","ai-assistant","ai-tools","anthropic","cursor","desktop-app","electron","gemini","linux","macos","open-source","openai","openrouter","overlay","production","react","typescript","vision","windows"],"latest_commit_sha":null,"homepage":"https://aipointer.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gonemedia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.html","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-13T13:13:57.000Z","updated_at":"2026-05-17T10:32:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gonemedia/aipointer","commit_stats":null,"previous_names":["talentsache/aipointer","gonemedia/aipointer"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/gonemedia/aipointer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonemedia%2Faipointer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonemedia%2Faipointer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonemedia%2Faipointer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonemedia%2Faipointer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gonemedia","download_url":"https://codeload.github.com/gonemedia/aipointer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonemedia%2Faipointer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33464012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T06:32:55.349Z","status":"ssl_error","status_checked_at":"2026-05-25T06:32:35.322Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-assistant","ai-tools","anthropic","cursor","desktop-app","electron","gemini","linux","macos","open-source","openai","openrouter","overlay","production","react","typescript","vision","windows"],"created_at":"2026-05-25T07:01:56.145Z","updated_at":"2026-05-25T07:01:57.508Z","avatar_url":"https://github.com/gonemedia.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg width=\"84\" height=\"84\" alt=\"AIPointer icon\" src=\"https://github.com/user-attachments/assets/9037b6e6-f525-40fa-a386-67512a4f05ad\" /\u003e\n\n\u003ch1\u003eAIPointer ⦿\u003c/h1\u003e\n\n\u003cp\u003e\u003cstrong\u003eThe AI cursor companion. Hold a key, ask a question, get an answer about whatever your cursor is pointing at.\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/gonemedia/aipointer/releases/latest/download/AIPointer-arm64.dmg\"\u003e\u003cstrong\u003emacOS Apple Silicon\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/gonemedia/aipointer/releases/latest/download/AIPointer-x64.dmg\"\u003e\u003cstrong\u003emacOS Intel\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/gonemedia/aipointer/releases/latest/download/AIPointer-Setup.exe\"\u003e\u003cstrong\u003eWindows\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/gonemedia/aipointer/releases/latest/download/AIPointer-x86_64.AppImage\"\u003e\u003cstrong\u003eLinux\u003c/strong\u003e\u003c/a\u003e\n\u003cbr\u003e\u003cbr\u003e\n  🖱️ \n\u003c/p\u003e\n\n\u003cimg width=\"800\" height=\"450\" alt=\"AIPointer screenshot\" src=\"https://github.com/user-attachments/assets/3d174dda-b961-4ce8-8474-e05e07e27009\" /\u003e\n\n\u003c/div\u003e\n\n\n\n\n\n\n\n\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\n\u003csub\u003eIf AIPointer ⦿ is useful to you,\u003cbr\u003e\n\u003ca href=\"https://github.com/gonemedia/aipointer\"\u003ea star 🌟 on GitHub\u003c/a\u003e helps the project stay alive.\u003c/sub\u003e\n\n\u003c/div\u003e\n\u003c/div\u003e\n\n---\n\n## What it is\n\nAIPointer is an open-source desktop overlay. You hold a key (default: Right-Cmd on macOS, Right-Ctrl on Windows/Linux), a glassmorphism box pops up next to your cursor, you ask a question, and a vision-capable LLM answers about whatever's around the cursor. A screenshot of the cursor region, your prompt, and (optionally) your clipboard get sent to the provider you configured. You keep your own API key, you pay for your own tokens, nothing is logged anywhere.\n\nBSL-1.1 source-available, no framework lock-in, no cloud account. For longer autonomous tasks, AIPointer points you at [Skales](https://skales.app), the same author's larger AI agent.\n\n## Common use cases\n\nAIPointer is useful when you want to ask an AI about something on your screen without copying, pasting, or switching apps:\n\n- **Quick translation** of text you're reading in any app or website\n- **Explain code** in your editor without leaving it\n- **Identify** an object, product, landmark, or chart from a screenshot\n- **Summarize** a long article or document you have open\n- **Ask about your files (v1.1.5)** — select up to 5 files in Finder / Explorer, press the AIPointer hotkey, and they're attached to your next query automatically. Zero clicks. Hit Enter without typing and AIPointer auto-summarizes them.\n- **Get a reply suggestion** for a message visible on screen\n- **Define a word** without leaving your current app\n- **Solve a math or logic problem** by pointing at it\n- **Voice queries** when typing isn't convenient\n\nIt works as an alternative to switching to ChatGPT, Claude, or Gemini in a browser tab — you stay where you are, the answer comes to you.\n\n---\n## Demo\n\n\u003cbr\u003e\n\u003ca href=\"https://youtu.be/NRIlG32hvLg\"\u003e\n  \u003cimg src=\"https://img.youtube.com/vi/NRIlG32hvLg/maxresdefault.jpg\" alt=\"AIPointer demo\" width=\"720\"\u003e\n\u003c/a\u003e\n\n\u003cbr\u003e\n\n## Why use it\n\n- **Cursor-anchored.** It answers about what you're already looking at, not what you have to describe in text.\n- **Fast.** Vision-capable Gemini 3 Flash by default. Sub-2-second answers for most questions.\n- **Multi-provider.** Bring your own OpenRouter key (recommended) or a direct Anthropic, OpenAI, or Google Gemini key. Fallback chain handles outages automatically.\n- **Agentic when it helps.** Seven built-in tools: fetch a URL, open a URL, copy text, save the answer as a styled document, reveal your workspace, read clipboard, and (new in v1.1.0) launch a desktop app from a curated whitelist. All action tools sit behind a green-check / red-x approval.\n- **Child Mode (v1.1.0).** Kid-friendly response layer. PIN-locked switch, per-language safe-browsing whitelist (EN+DE), stricter HTML rendering, restricted tool set, voice-first by default with slower TTS. Visually identical to Adult mode — pure behavior layer.\n- **Onboarding wizard (v1.1.0).** Separate framed window on first launch. Five steps: welcome, mode pick, PIN setup, autostart preferences, provider + API key.\n- **Voice commands (v1.1.1).** Say \"open settings\" or \"einstellungen öffnen\" — works in EN, DE, FR, ES, IT, PT, NL. Pre-LLM phrase matcher with Levenshtein tolerance for transcription wobble. New voice tools: **\"play \u003csong\u003e\"** / **\"spiele Bach\"** (YouTube / YouTube Kids in Child Mode), **\"search for X\"** / **\"such nach X\"** (DuckDuckGo / Kiddle), **\"louder / quieter / mute / volume 30\"** / **\"lauter / leiser / stumm\"** for system volume. Say **\"stop\"** / **\"halt\"** / **\"sei ruhig\"** to interrupt the voice loop.\n- **Live model picker (v1.1.5).** Each provider row now has a `↻ Refresh models` button. Click it to hit the provider's list-models endpoint with your saved key — the dropdown populates with every model your account can use, so you can pin a specific model without waiting for an app update. Leave on Auto to keep the cheapest-viable behaviour.\n- **Primary + Fallback chain (v1.1.5).** Pick a primary provider explicitly, then arrange up to 3 fallback providers underneath it. Each row can pin its own model. The router walks the chain on transient failures (5xx / 429). Reachable via `/fallback`.\n- **Finder / Explorer auto-attach + multi-file upload (v1.1.5) — the v1.1.5 USP.** Two workflows for attaching up to **5 files** to your next AIPointer query: (1) select the files in macOS Finder or Windows Explorer and just press the hotkey — AIPointer reads the active file-manager selection at trigger time and queues the highlighted files automatically (zero clicks, no drag-and-drop); (2) click the paperclip icon right of the mic (or type `/attach`) and pick the files manually. A **dark-orange \"N files attached\" pill** floats above the BottomPill (hover to expand, × to clear). The next AIPointer trigger attaches them — images via vision, text / JSON / CSV / Markdown / code inlined into the prompt, binary docs (PDF / DOCX / XLSX) referenced by name. While files are queued the cursor screenshot is auto-suppressed so the model focuses on the files. Hit Enter with no prompt typed → AIPointer auto-routes through `/summary` against the files. macOS uses an AppleScript that guards on Finder being frontmost; Windows reads the foreground Explorer window via `Shell.Application`; Linux has no universal selection mechanism so the paperclip is the only path there.\n- **Readable selection hint (v1.1.5).** The \"Drag to capture a region\" pill is now solid near-black with bright white text and an accent dot border — legible against every backdrop. (Previously rendered in accent text on a translucent dark pill that looked black-on-grey on certain wallpapers.)\n- **Chat-only mode (v1.1.2).** Settings → Behaviour. Toggle on to open AIPointer as a pure chat window — no screenshot auto-attached. A small camera button inside the prompt lets you attach one per query when you want visual context. Good for follow-up questions, quick lookups, and people who already know what they want to ask.\n- **Cursor accent picker (v1.1.2).** Settings → Appearance → Cursor accent. Three brand presets — lime (default), macOS system blue, or cyberpunk magenta. The comet trail + halo and every accent-tinted UI surface re-tint live without a restart.\n- **Floating chip bubbles (v1.1.2).** Screenshot and Clipboard chips now render as toast-style rounded-full pills floating *above* the BottomPill — same frosted micro-grain + premium shadow as the pill, high-opacity tint with white text so they stay readable over any backdrop (light AIPointer on a dark website, dark AIPointer on a bright editor — all fine).\n- **TTS pause / resume (v1.1.2).** The Read button under each response is now a real play / pause toggle: click to play, click to pause at the exact position, click again to resume. Stop-words (\"stop\" / \"halt\" / \"sei ruhig\"), ESC, and a new query still fully end playback.\n- **Activation section in Settings (v1.1.2).** Keyboard hotkey + mouse-wiggle on/off toggle, both live-applied. The wiggle has been there since v1.1.0 but had no UI control — now it does.\n- **Screenshot + Clipboard chips (v1.1.1).** macOS-blue \"Screenshot attached\" chip (default on, dismiss with ×) and a paperclip toggle for opt-in clipboard. Explicit per-query control replaces the v1.0 always-on clipboard polling.\n- **Theme picker (v1.1.1).** Settings → Appearance: System (follows your OS), Light, or Dark. Pick AIPointer's appearance independently of macOS / Windows — keep your system on light and run AIPointer dark (or vice versa). The picked theme survives macOS appearance changes (fixed in v1.1.2).\n- **Premium pill surface (v1.1.1).** The BottomPill / PromptInput render as a macOS-Control-Center-style tile with a fractalNoise micro-grain and a five-layer shadow for perceived depth. Same warm-grey light surface (`#f5f5f5`) and Claude-sidebar dark surface (`#262626`) macOS users expect.\n- **Mouse-wiggle activation (v1.1.0).** Wiggle the cursor left-right-left within ~700ms to summon AIPointer. Toggle off in Settings.\n- **Voice in and voice out.** Microphone input with auto-stop on silence. Text-to-speech read-aloud for the answer. Optional voice-first conversation mode: trigger opens listening, transcript auto-submits, answer is read back, mic re-opens for follow-up. Hands-free loop.\n- **Region screenshots.** While the box is open, hold the trigger key again and drag a rectangle to capture exactly the region you want. Replaces the default cursor-centered crop for that query.\n- **API key tester.** A Test button per provider checks the key against the live endpoint. For OpenRouter the result includes your remaining credit balance.\n- **Templates that work.** `/summary`, `/brief`, `/translate`, `/explain`, `/code`, `/improve`, `/define`, `/solve`, `/reply`, `/identify`. Plain prose works too. AIPointer detects intent across languages.\n- **Save the answer.** A4-styled HTML, PDF, or Markdown. Print-ready.\n- **Auto-updater.** Quiet check on launch and once per day. Downloads the next version when ready, prompts you on restart. Disable in settings if you prefer manual updates.\n- **Local-first.** No telemetry, no analytics, no crash reporting. Your config lives on your machine, your sessions stay on disk if you opt in.\n- **Light and dark theme.** Adapts to your system in real time.\n\n## Install\n\nDownload a signed build for your OS at [aipointer.app](https://aipointer.app), or build from source:\n\n```bash\ngit clone https://github.com/gonemedia/aipointer\ncd aipointer\nnpm install\nnpm run dev\n```\n\nOn first launch you'll be prompted to grant **Accessibility** (for the global key listener) and **Screen Recording** (for the cursor-region screenshot). Both are required on macOS. The Settings panel opens automatically the first time so you can paste an API key. Get one at:\n\n- [openrouter.ai/keys](https://openrouter.ai/keys) recommended, single key, automatic routing across providers.\n- [console.anthropic.com/settings/keys](https://console.anthropic.com/settings/keys)\n- [platform.openai.com/api-keys](https://platform.openai.com/api-keys)\n- [aistudio.google.com/apikey](https://aistudio.google.com/apikey)\n\n## Permissions AIPointer needs\n\nAIPointer asks for the minimum required to do its job. Nothing else is touched.\n\n**macOS**\n- **Accessibility** *(required)* — lets AIPointer detect the global trigger hotkey from inside any app. Without this, the hotkey is dead. Grant in System Settings → Privacy \u0026 Security → Accessibility.\n- **Screen Recording** *(required)* — capture the small region around your cursor for vision context. Triggers only on hotkey hold, never in the background.\n- **Microphone** *(optional)* — needed only for voice input or the voice-first conversation loop. Recordings stream to the AI provider you configured and are never stored locally.\n- **Automation → Finder \u0026 System Events** *(optional, v1.1.5)* — needed only for the Finder auto-attach workflow (select files → press hotkey → files attach). On first use macOS asks *\"AIPointer wants to control Finder\"* → pick **OK**. If you click Deny or dismiss it, the trigger shows an amber banner explaining how to re-enable in System Settings → Privacy \u0026 Security → Automation → AIPointer → Finder. Without it, the paperclip button still works for manual attachment.\n\n**Windows**\n- No special permissions at install. Microphone prompted on first use when needed.\n- Explorer auto-attach (v1.1.5) walks `Shell.Application` via PowerShell. Some Defender configurations block this — it degrades gracefully to the paperclip button.\n\n**Linux**\n- `libsecret` (gnome-keyring) or KWallet for OS-encrypted API key storage. Without one, keys store base64-encoded with a warning banner.\n- File-manager auto-attach is not supported (no universal selection mechanism across DEs). Paperclip button works.\n\n**All platforms — network access**\nYour prompts, screenshots, queued files, and voice recordings (if used) go directly to the LLM provider you configured. The auto-updater fetches `aipointer.app/updates/latest.json`. Nothing else leaves your machine. No telemetry, no analytics.\n\n### Voice (TTS + STT) — 3 engines, System by default (v1.1.5)\n\nAIPointer ships a 3-state Voice engine picker in **Settings → Voice**. Fresh installs land on **System** so read-aloud and voice input work for 100% of users without any setup. Local and Cloud are explicit opt-ins.\n\n| Engine | TTS | STT | Setup | Cost | Quality |\n|---|---|---|---|---|---|\n| **System** (default) | OS Web Speech API | OS Web Speech Recognition | None — works out of the box | Free | OS-native |\n| **Local** (opt-in) | Kokoro 82M (ONNX) | Whisper base (GGML) | One-time ~233 MB download, offline forever after | Free | High |\n| **Cloud** (opt-in) | OpenAI/Gemini/OpenRouter cascade | Same cascade | User API key | Per-token | Max |\n\n**System** = default for fresh installs. Users carrying over the prototype `ttsMode='auto'` setting are mapped to **Cloud** so their working setup is preserved; `ttsMode='system'` users stay on **System**.\n\n**Local engine in v1.1.5:** download manager + storage + **real Kokoro TTS inference live now**. Settings → Voice → Local discloses the ~231 MB download size BEFORE pulling and shows live progress; atomic writes prevent partial-file activation. Models pull from Hugging Face Hub: [Kokoro-82M ONNX](https://huggingface.co/onnx-community/Kokoro-82M-ONNX) (Apache-2.0) and [whisper.cpp GGML](https://huggingface.co/ggerganov/whisper.cpp) (MIT). TTS inference runs via [`kokoro-js`](https://www.npmjs.com/package/kokoro-js) — first call ~500 ms cold-start, then ~1.5–15 s per response depending on CPU and text length (real on-device neural inference; longer than a cloud call but fully private + free). 28 voices ship bundled with kokoro-js, default `af_heart`. **STT** still uses the Cloud cascade in v1.1.5 — [`@kutalia/whisper-node-addon`](https://www.npmjs.com/package/@kutalia/whisper-node-addon) integration lands in v1.2.0 for fully-offline transcription. Until then voice input on Local engine surfaces a clear notice and falls back to System Web Speech Recognition.\n\n**Safety net.** Every engine fails into System with a yellow inline strip under the Read button showing the actual reason. No silent dead button. The pillbox UI is unchanged — engine routing is a behavior layer.\n\n\u003e An HuggingFace Inference TTS integration was prototyped earlier in this version cycle and removed before ship — too unreliable in practice. The Local engine takes the cleaner path: download once, run on the user's machine.\n\n## How to use\n\n\u003cimg width=\"1342\" height=\"1080\" alt=\"133541\" src=\"https://github.com/user-attachments/assets/10acaa2b-99b4-4fa0-a45b-82e9465b2261\" /\u003e\n\n\n1. Hold **Right-Cmd** (macOS) or **Right-Ctrl** (Windows / Linux) for 200 ms over the content you want help with. Or click the small status pill at the bottom of your screen.\n2. The box opens beside your cursor. Type a question, press Enter.\n3. Use **/** to see the commands. Plain language works too. AIPointer auto-detects the intent (summarise, translate, explain, code, etc.) across languages.\n4. Hover the answer for **Read** (text-to-speech), **Save** (HTML/PDF/MD), **Copy**.\n5. Press **ESC** to dismiss. Open **/settings** any time to adjust providers, hotkey, voice, profile, workspace.\n\n## Commands\n\n- `/web \u003cquestion\u003e` force a web-grounded answer for this one query.\n- `/summary \u003ctopic\u003e` long structured doc, ready to save as A4 PDF.\n- `/brief \u003ctopic\u003e` TL;DR + 3-5 bullets.\n- `/translate [language] \u003ctext\u003e` translate visible, selected, or pasted text.\n- `/explain \u003cthing\u003e` plain-English explainer.\n- `/code \u003ctask or error\u003e` code-focused answer with a snippet.\n- `/improve \u003ctext\u003e` rewrite for clarity and rhythm.\n- `/define \u003cword\u003e` dictionary entry with pronunciation and example.\n- `/solve \u003cproblem\u003e` math or logic answer with steps.\n- `/reply [guidance]` three reply variants for a visible message.\n- `/identify [hint]` what is this object, product, or landmark.\n- `/history` list past sessions (workspace).\n- `/lastsession` restore the most recent saved session (useful when you closed the box by accident).\n- `/settings` open settings.\n- `/help` show this list.\n- `/clear` dismiss the response.\n- `/quit` quit AIPointer.\n\n## Build for distribution\n\n```bash\nnpm run dist:mac        # macOS .dmg (arm64 + x64)\nnpm run dist:win        # Windows .exe (NSIS x64)\nnpm run dist:linux      # Linux .AppImage (x64)\nnpm run dist            # all three on supported hosts\n```\n\nFor signed and notarised macOS builds, set your Apple credentials in the environment before running:\n\n```bash\nexport APPLE_ID=\"you@example.com\"\nexport APPLE_TEAM_ID=\"ABCDE12345\"\nexport APPLE_APP_SPECIFIC_PASSWORD=\"xxxx-xxxx-xxxx-xxxx\"\nexport CSC_IDENTITY=\"Your Name (ABCDE12345)\"\nnpm run dist:mac\n```\n\nWithout Apple credentials, electron-builder produces unsigned builds suitable for local testing.\n\n## Tech stack\n\nElectron 30 · React 18 · TypeScript 5 · Tailwind 3 · Framer Motion · Vite 5 · `uiohook-napi` (global key + mouse hook) · Electron's `nativeImage` (cursor-region screenshots, no native image library) · `electron-store` + Electron `safeStorage` (config + secret storage) · `react-markdown` with `rehype-sanitize` · native `fetch` (no SDK dependency on any LLM provider).\n\n## What it isn't\n\n- Not a long-running autonomous agent. For multi-step automation, computer-use, persistent goals, and complex workflows, use **[Skales](https://skales.app)**. Same author, same design philosophy, much bigger scope. AIPointer will recommend it when you ask for something out of its lane.\n- Not a chat app. There is no permanent thread. Sessions live until you press ESC.\n- Not a model picker. You pick a provider, AIPointer picks the model.\n- Not telemetry-equipped. Nothing leaves your machine except the queries you submit, to the provider you chose.\n\n## FAQ\n\n**Is AIPointer free?** Yes. Source is on GitHub under BSL-1.1. You bring your own API key and pay the LLM provider directly.\n\n**Does it work offline?** No. The vision-capable LLMs run server-side. AIPointer itself runs locally, but the answers come from your chosen provider.\n\n**Which providers are supported?** OpenRouter, Anthropic (Claude), OpenAI, Google Gemini. OpenRouter is recommended — one key, automatic routing. From v1.1.5 you can also pick a primary provider explicitly and arrange up to 3 fallback providers underneath it (each pinning its own model).\n\n**Can I pick a specific model? (v1.1.5)** Yes — each provider row in Settings → Providers has a `↻ Refresh models` button that pulls the live model list from the provider with your saved key. Pick one to pin it, or leave on Auto for AIPointer's cheapest-viable default.\n\n**Can I attach files? (v1.1.5)** Yes — click the paperclip icon next to the mic (or type `/attach`) to queue up to 5 files. They auto-attach on the next trigger. You can also select files in Finder/Explorer first and just press the hotkey; AIPointer auto-attaches the selection (zero clicks).\n\n**Does it collect my data?** No telemetry, no analytics. Your prompts and screenshots go directly to the LLM provider you configured.\n\n**Does it work on macOS / Windows / Linux?** Yes, all three.\n\n**How does it compare to other AI overlay tools?** AIPointer is single-shot Q\u0026A with vision and bounded tools. For longer autonomous tasks and multi-step automation, use [Skales](https://skales.app).\n\n## Privacy\n\n- Screenshots (a 1024 × 768 region around your cursor) and any clipboard text you don't dismiss go only to the LLM provider you configured. Nowhere else.\n- API keys are stored in your OS keychain (macOS Keychain, Windows DPAPI, Linux libsecret) via Electron `safeStorage`. The local config file is plain JSON with encrypted key fields.\n- No telemetry, no analytics, no crash reporting.\n- The auto-updater fetches `aipointer.app/updates/latest.json` on launch and once per day. The request contains no user identifier, only a standard HTTPS request to a static file. Disable in settings if you want manual updates instead.\n- Full disclaimer in Settings → About and at [aipointer.app/privacy](https://aipointer.app/privacy).\n\n## Documentation\n\n- [CHANGELOG.md](CHANGELOG.md) release history.\n\n## Credits\n\nBuilt by **[Mario Simic](https://github.com/talentsache)** in Vienna, May 2026. Same author behind **[Skales](https://skales.app)**, an open-source local AI agent.\n\n## License\n\n**Business Source License 1.1.** See [LICENSE](LICENSE), [NOTICE.md](NOTICE.md), and [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md).\n\nFree for personal, educational, and internal business use. Source remains public on GitHub — fork it, audit it, build on it. Commercial redistribution, SaaS hosting, white-labeling, bundling, and resale require a written commercial license from the Licensor (dev@mariosimic.at). Reverts automatically to Apache 2.0 on 2030-05-19. The DNA marks in [docs/AUTHORSHIP.md](docs/AUTHORSHIP.md) help identify cases where license compliance has been violated.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**aipointer.app** · **[github.com/gonemedia/aipointer](https://github.com/gonemedia/aipointer)** · **[aipointer.app](https://aipointer.app)**\n\nNo telemetry. No cloud. BSL-1.1.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgonemedia%2Faipointer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgonemedia%2Faipointer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgonemedia%2Faipointer/lists"}