EXPERIMENTALmacOS · v0 · source →

Drive macOS
from a
prompt.

openclick is an experimental CLI that wires an LLM into the macOS Accessibility APIs. You write a prompt, the model proposes a plan of UI actions, openclick executes them. Expect rough edges.

Plan.
Confirm.
Run.

The model's plan is printed before anything executes. You can read it, edit it, or abort.

plan printed before run
--dry-run by default
every AX call logged
~/Projects — openclick — 80×24

What it does.

openclick is a thin shell around two things: an LLM that turns your prompt into a plan, and a runner that executes that plan against the macOS Accessibility APIs. Nothing more.

01core

Prompts, not scripts

You write a prompt; the model emits a plan of UI actions (clicks, keystrokes, AX reads); openclick executes the plan.

02scope

Whatever exposes AX

Anything reachable through the macOS Accessibility tree — Notes, Mail, Safari, Slack, Terminal. Apps with poor AX support won’t work well.

03models

Bring your own model

OpenAI, Anthropic, DeepSeek, or any compatible endpoint. Local via Ollama or LM Studio. No bundled keys.

04shape

CLI, app, or daemon

Use it from your shell, the menu bar app, or as a long-running daemon for scripts and hooks.

05license

MIT-licensed

Read the code, fork it, vendor it. No CLA. Issues and PRs welcome but not promised to land.

06privacy

Local by default

No accounts, no telemetry. Prompts and screen contents stay on your Mac unless you point it at a cloud model.

Example prompts.

Illustrative. Real results depend on the model and the apps you point it at.

more in the readme
mail#001
$ openclick "reply to anything from sarah marked urgent, draft only"
3 drafts saved · ready to review
files#002
$ openclick "sort my downloads folder by file type into subfolders"
sorted 47 files into 6 folders
web#003
$ openclick "find the cheapest flight SFO→TYO next month, save tabs"
3 tabs pinned · prices in clipboard
calendar#004
$ openclick "block 2hr deep work tomorrow morning, decline conflicts"
event created · 1 conflict declined

Any model.
Cloud or local.

Bring your own keys. Switch per run with --model. Use a local model if your prompts touch anything sensitive.

OpenAI
cloud
Anthropic
cloud
soon
DeepSeek
cloud
soon
Meta
open
soon
Mistral
cloud
soon
Ollama
local
soon
LM Studio
local
soon
+ adapter
custom

It's on GitHub.
Read the code.

openclick is early, MIT-licensed, and a single repo. Issues and pull requests are welcome — no roadmap promises.

↑ poking around the source?