Skip to content

Repository files navigation

Clickyy

License: MIT Node CI

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).

What Clickyy does

  • 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.

Download

Grab the latest signed, notarized build from Releases:

  1. Download Clickyy-<version>-arm64.dmg
  2. Open it and drag Clickyy into Applications
  3. 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.

First-time setup

  1. Click the Clickyy icon in the menu bar → AI Provider Settings…
  2. Pick a provider and paste in an API key
  3. Grant Accessibility and Screen Recording when macOS prompts
  4. Shake your cursor rapidly left-right anywhere to summon Clickyy — or pick Activate Clickyy from the menu bar

Permissions Clickyy asks for, and why

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.

Menu bar options

  • 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

Build from source

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 Release

Architecture

cursor 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".

Agent mode safety model

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:true flag, a deterministic destructive-label backstop, and run_command all force an approval prompt even when auto-approve is on.
  • Sudo and catastrophic commands are hard-blocked in src/shared/command-safety.ts before 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.

Project layout

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

Privacy

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.

Contributing

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.

License

MIT — see LICENSE.

About

Shake your cursor to summon an AI agent that can see your screen and click, type, and act for you on macOS.

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages