Let AgentsUse Your Mac 

Turn any Mac app into an API.
Let agents automate user interfaces with code.

Save 4500% on token usage.[1]

Free. macOS 14 or later. ⤴

Give your agents eyes

Screen reader tech lets your agents see and interact with Mac apps just like you do. Let them click on buttons, type text, scroll, and more.

Then use that data
to automate any task
Claude, 

test my latest build. click through every screen and tell me what's broken

Invoke gives agents the ability to see apps, click on buttons, and type text. That's both for one-off and recurring tasks. For one-off tasks, agents can explore the surface of any app and perform actions on your behalf. Recurring tasks can memorized to save on time and tokens. So automating anything becomes as easy as asking a question. Agents explore, act, then note down the steps. Replay those steps any time.

And memorize
common tasks

Agents can memorize and replay UI workflows by turning them into code. That code is called a "pack". Each function exported from a pack can be called by CLI or keybinds.

Then those functions can be called by you or your agents. Because they're entirely deterministic, agents don't have to re-explore the apps every single time they use them.

index.ts
import { app } from "invoke"; // Bind Finder and reach into its front window const finder = await app("com.apple.finder"); // Query UI elements within Finder const files = window.$({ role: SCROLL_AREA }, { identifier: "IconView" }); const shareButton = window.$({ role: TOOLBAR }, { role: BUTTON, description: "Share" }); // Click the Share button in the toolbar. export async function pressShareButton() { await shareButton.press(); } // Get the name of the first selected file. export async function getSelectedNames() { const selected = await files.selectedChildren; return selected.map((c) => c.title); }}
Terminal
~/src/inv/website main* ⇡


$ invoke mypack pressShareButton
 null # was clicked


$ invoke mypack getSelectedNames
 ["Banner.png"",""crunch-cat.mp4"]
Exported JS functions become callable
Which makes computer use
fast and cheap
Save
4500%

Computer use is 45x More Expensive Than Structured APIs ↗ so why not make an API out of every app?

Because it's just code, there's no leeway for agents to mess up. They write the workflow once, test it, and then replay it with perfect accuracy.

Scripting is done in dead simple JavaScript. Listen to events within apps. Simulate key presses, scrolling, clicking buttons, and so on.

That's what Invoke is.
A platform that lets you make an API out of any Mac app.

And it's fast
For Real.

Invoke has a fast, open source query engine for macOS UI elements written in Rust. It's able to find UI elements within nanoseconds. Invoke was originally built to supplement Mac apps with native-feeling features and shortcuts for real-time human use.

Let's put you
in command.