Shake your cursor. Ask your screen. Let it click for you.
Clickyy is a macOS menu bar AI agent. Shake your mouse cursor anywhere to summon a glass overlay that can see your screen — ask it a question about what's on screen, or switch to Agent mode and let it click, type, drag, scroll, and run commands to get real work done for you.
Clickyy is macOS only (Apple Silicon, macOS 12 or later).
- Ask mode — shake to summon, ask a question about what's on screen, get an answer grounded in a real screenshot.
- Agent mode — give it a task in plain English and it will look at the screen, then click, double-click, drag, type, scroll, press key combos, zoom in on small details, launch/switch apps, and (only with your explicit per-command approval) run terminal commands — repeating that loop until the task is done.
- Safety by default — every action is shown as it happens; anything destructive always pauses for your approval, no matter what settings are on. Clickyy also detects when it's stuck repeating the same action and stops.
- Multiple AI providers — bring your own API key for Xiaomi MiMo, OpenAI, or Anthropic Claude.
- Project memory — when Clickyy detects you're in VS Code, Cursor, or a
terminal, it can keep lightweight
.clickyy/notes about the current project across sessions.
Grab the latest signed, notarized build from Releases:
- Download
Clickyy-<version>-arm64.dmg - Open it and drag Clickyy into Applications
- Launch Clickyy from Applications — it lives in your menu bar, not the Dock
Clickyy is signed with a Developer ID and notarized by Apple, so it opens normally with no Gatekeeper warning. Once installed, it checks for updates automatically in the background.
- Click the Clickyy icon in the menu bar → AI Provider Settings…
- Pick a provider and paste in an API key
- Grant Accessibility and Screen Recording when macOS prompts
- Shake your cursor rapidly left-right anywhere to summon Clickyy — or pick Activate Clickyy from the menu bar
| Permission | Why |
|---|---|
| Screen Recording | So Clickyy can see what's currently on your screen |
| Accessibility | So Clickyy can move the mouse, click, type, and read on-screen elements |
| Automation (Apple Events) | So Agent mode can launch and switch between apps |
Clickyy only captures your screen when you activate it (shake or menu) — nothing is recorded continuously in the background.
- Activate Clickyy — manual trigger, same as the shake gesture
- AI Provider Settings… — choose your provider and set its API key
- Usage Analytics… — recent activity and estimated API cost
- Sensitivity — Low / Medium / High shake threshold
- Agent mode (experimental) — let Clickyy act on screen, not just answer
- Auto-approve safe actions — skip confirmation for low-risk actions; destructive actions always still ask
- Auto-plan complex tasks — break a big task into a visible checklist first
- Allow terminal commands — let the agent run shell commands, always with a per-command approval prompt
- Remember this project (
.clickyy/notes) — keep lightweight notes about the current project folder across sessions
git clone https://github.com/jayamitkatariya/clickyyy.git
cd clickyyy
npm install
npm run dev # run in development
npm run typecheck # type-check
npm test # run the headless test suite
npm run build # compile
npm run dist # build a local, unsigned .dmg/.zip in release/Producing a signed, notarized, publishable build additionally requires a
Developer ID Application certificate and Apple notarization credentials
(APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD, APPLE_TEAM_ID) exported in your
shell, plus GH_TOKEN, then:
npm run release # build, sign, notarize, and publish a GitHub Releasecursor shake ──▶ ShakeDetector (main process, ~600ms window)
│
▼
Main process activation
│ ┌───────────────────────────┐
├─▶│ screen capture (sharp) │
├─▶│ active app + window title │
├─▶│ AX tree + Set-of-Marks │
├─▶│ macOS Vision OCR (optional) │
│ └───────────────────────────┘
▼
MimoClient / providers ──▶ MiMo | OpenAI | Claude
│
▼
OverlayWindow (typed IPC bridge)
│
▼
React renderer (glass overlay, streaming UI)
The renderer never talks to Node directly. It uses a narrow typed API
(src/shared/api.ts) exposed by src/preload/index.ts through Electron's
contextBridge. AI calls and API keys stay in the main process; the renderer
only ever sees "key configured: yes/no".
Because Agent mode can drive a real Mac, safety is layered:
- Everything is visible. Each action is shown as a step in the overlay.
- Destructive actions always gate. The agent's own
confirm:trueflag, a deterministic destructive-label backstop, andrun_commandall force an approval prompt even when auto-approve is on. - Sudo and catastrophic commands are hard-blocked in
src/shared/command-safety.tsbefore any process is spawned. - Batches are truncated defensively so an unknown outcome can never be chained blind.
- Stuck-loop detection stops the agent if it repeats the same action or short cycle without progress.
- Clicks are verified against before/after screenshots, with retries only for click-like actions that appear to have missed.
| Path | Purpose |
|---|---|
src/main/ |
Electron main process: app bootstrap, IPC, agent loop |
src/main/providers/ |
MiMo / OpenAI / Anthropic providers |
src/main/workspace/ |
.clickyy/ project-memory detection and storage |
src/preload/ |
Typed contextBridge IPC surface |
src/renderer/ |
React overlay UI |
src/shared/ |
Shared types and pure command-safety helpers |
scratch/ |
Headless tests using esbuild + Electron/electron-store stubs |
Clickyy only captures your screen when you activate it — via shake or the menu
bar — never continuously in the background. That screenshot, plus your question
or task, is sent to whichever AI provider you've configured for the duration of
that request. Your API key is stored locally on your Mac via macOS safeStorage
and is never sent anywhere except directly to your chosen provider.
Open an issue or PR — bug reports, feature ideas, and questions are all welcome. See CONTRIBUTING.md for the development workflow and code layout, and SECURITY.md for how to report vulnerabilities.
MIT — see LICENSE.