Model or dataset
ganeshmshetty/openclip avatar
ganeshmshetty/openclip

OpenClip (ganeshmshetty/openclip): a macOS text utility with JavaScript extensions and a local AI hook

Programmable text utility that mac needs

344 stars17 forksSwiftMIT

At a glance

What is it?
OpenClip is an MIT-licensed macOS 14+ menubar app that shows a floating action bar over any text selection. Extensions are plain script folders, and AI actions can run through Apple Intelligence, Ollama or a cloud provider. The catch is that it needs Accessibility permission and a Mac.
Who is it for?
Adopt OpenClip if you work on macOS 14 or later, want a source-available text action bar, and are willing to write small JavaScript or shell extensions instead of buying a closed tool. Skip it if you need Windows or Linux, or if you cannot grant Accessibility permission on a managed machine.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What OpenClip is for

OpenClip targets the moment after you highlight text and before you do something with it. Instead of copying, switching apps, pasting and then acting, the app draws a floating bar next to the selection with the actions that apply. The README describes the bar as contextual: actions with no live selection, such as Copy and Cut, drop out automatically, and when nothing is selected the popup falls back to the current clipboard contents. That fallback is the small design decision that makes the tool usable in practice, because you often want to transform something you copied a minute ago rather than something highlighted right now.

The audience is macOS users who live in text: developers reading logs, writers cleaning up drafts, support staff pasting the same reply shape all day. The bar ships with zero-config builtins, including Search, Copy, Cut, Paste, Services and a Transform group covering UPPERCASE, lowercase, Title Case and camelCase. Nothing has to be configured before the first selection.

The repository topics list several directions at once: applescript, javascriptcore, llm, ollama, popclip-alternative, swiftui, menubar-app. That set is a fair summary of the project's ambition. It is a text utility, an extension host and an AI front end sharing one popup.

The selection-to-action pipeline

The README states plainly why Accessibility permission is required: it is how OpenClip detects selections and reads the selected text without relying on the clipboard. That is the central architectural fact. The app watches selection events system-wide, then decides which actions to show based on the selection and on any app-specific rules you have configured. Those rules include allow and deny lists per app, selection regexes, and required options that prompt the user when a value is missing.

Actions come from three places. Builtins are compiled in. GUI-created actions are a web-search URL template or an inline shell script added from Preferences. Extensions are packages installed from the built-in store, from a file, or by dropping a folder into ~/.openclip/extensions. The README says that directory is scanned at launch and anything inside becomes an action, and that a manifest plus a script is a complete extension with no compile step.

The palette is the second entry point. Pressing Option-Command-C while the bar is up turns it into a fuzzy search field over the entire action catalog, including disabled actions, ranked by recency and then bar order. The repository lists a Core domain module and Swift 6 with strict concurrency, and notes that the hover model avoids re-evaluating the whole view on every mouse move. That last detail matters more than it sounds: a floating bar that follows the cursor is exactly the kind of UI that becomes janky if the view tree is rebuilt on each pointer event.

Installing OpenClip and running a first extension

Homebrew is the recommended route. The README gives this cask command, which pulls from the project's own tap:

bash
brew install --cask ganeshmshetty/tap/openclip

Direct download is the alternative. Grab the .dmg from getopenclip.app/download or the releases page, drag OpenClip.app into /Applications, and launch it. On first run macOS will prompt for Accessibility permission, which the README frames as mandatory rather than optional. Grant it under System Settings, Privacy & Security, Accessibility, then enable OpenClip. First launch also walks through a 4-step onboarding covering permissions, essential extensions and an interactive playground before selection monitoring starts.

With the app running, the fastest check is to select a sentence in any editor and press Option-Command-C. The bar should expand into a fuzzy search over your action catalog; typing part of an action name jumps to it. Escape dismisses the popup or drops back from a scoped palette, and Command-Comma opens Preferences while the popup is focused.

For a custom extension, the README describes the layout as a folder under ~/.openclip/extensions containing a manifest and a script, with no compile step. The repository's own tree is the honest place to read the manifest schema, because the truncated README stops mid-example:

bash
ls ~/.openclip/extensions/

After adding a folder there, relaunch OpenClip so the launch-time scan picks it up. If the action does not appear, the first thing to check is whether the manifest matches the format used by the version you installed, since the README's example is cut off before the fields are shown.

Where OpenClip stops being the right tool

The hard boundary is the platform. OpenClip requires macOS 14.0 or later and is written in Swift 6 with SwiftUI. There is no Windows or Linux build, and no path to one from this repository. If your team is mixed-platform, this is a Mac-only convenience, not a shared tool.

The second constraint is Accessibility permission. On a managed corporate Mac, that permission may be blocked by policy or may require an IT approval process. Without it the app cannot detect selections, which removes the feature that justifies installing it. The README notes you can grant or revoke the permission any time from Preferences, but it does not describe what the app does when the permission is revoked mid-session beyond that.

The third is scope. OpenClip is a text utility. It is not a clipboard history manager, not a snippet expander with variable substitution, and not a document automation tool. The fallback to clipboard contents when nothing is selected is a convenience, not a history feature: the README describes acting on the current clipboard, not on a stack of past entries.

Finally, extension quality is your problem. A manifest plus a script is a complete extension, which means a badly written shell script runs with whatever privileges the app has. The README does not document a sandbox for extensions, and the repository's SECURITY.md is the place to look for what the maintainers claim about that.

OpenClip versus PopClip

The repository's own topics list popclip-alternative, so the comparison is the project's, not an outside framing. The difference in approach is extension format and AI handling. PopClip is a long-established commercial macOS selection tool with its own extension ecosystem; OpenClip is MIT-licensed, and its extensions are folders of JavaScript, AppleScript, shell, URL templates, key presses, Shortcuts or Services that you can drop into ~/.openclip/extensions and read as plain text.

That difference cuts both ways. A folder of scripts is inspectable and diffable, which matters if you want to review what an extension does before running it. It also means there is no compile step and no signed binary to trust, so the safety of an extension depends entirely on its contents. PopClip's ecosystem has had years to accumulate extensions; OpenClip's built-in store is younger, and the README does not describe a review process for store submissions.

The AI side is the other split. OpenClip ships a built-in assistant that can route selected text through Apple Intelligence, a local Ollama model, or a cloud provider such as OpenAI or Claude, and the README treats each provider and model as a reorderable action in the same palette as everything else. If you already run Ollama locally, that is a genuinely different posture from a tool that only calls a hosted API.

Maintenance, licence and upgrade cost

The last push to the default branch was on 2026-09-15, and the repository is not archived. The release cadence is visible in the version history: v1.4.0 on 2026-09-07, v1.5.0 on 2026-09-09, v1.6.0 on 2026-09-14. Three releases in eight days is a fast clip, and it is worth reading the CHANGELOG.md before upgrading rather than assuming the extension manifest format is frozen.

The licence is MIT, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are included. That is the whole of the licence implication here; nothing in the repository suggests a separate commercial tier or a contributor licence agreement that would change it.

Upgrade cost depends on how much you have built. Builtin actions and GUI-created URL templates or shell scripts are unlikely to break, because they are configured inside the app. Dropped-in extension folders are the fragile part: if a release changes the manifest schema, every folder in ~/.openclip/extensions is a manual migration, and the README's truncated example gives no versioning field to check against. The appcast.xml in the repository root indicates the app self-updates, so an upgrade can arrive without you choosing the moment.

Editorial conclusion

Adopt OpenClip if you work on macOS 14 or later, want a source-available text action bar, and are willing to write small JavaScript or shell extensions instead of buying a closed tool. Skip it if you need Windows or Linux, or if you cannot grant Accessibility permission on a managed machine. Before installing, check the v1.6.0 release notes for the current extension manifest format, confirm that ~/.openclip/extensions is the path your build scans, and decide which AI provider you will point the built-in assistant at, because the README does not document rollback if an extension misbehaves.

Frequently asked questions

How do I install OpenClip?

The recommended route is the Homebrew cask from the project's tap, or you can download the .dmg from getopenclip.app/download and drag OpenClip.app into /Applications. Either way you must grant Accessibility permission under System Settings, Privacy & Security, Accessibility.

What is OpenClip?

It is an open-source macOS text utility: selecting text in any app brings up a floating bar of contextual actions, and pressing Option-Command-C opens a fuzzy search palette over the full action catalog. It requires macOS 14.0 or later.

How does OpenClip compare with OpenAI CLIP?

They are unrelated projects that share a name. This OpenClip is a macOS menubar text utility written in Swift; the CLIP family of models is a vision-language embedding system. The repository's topics and README describe only the macOS app.

How does OpenClip compare with CLIP?

The two share a name but nothing else. OpenClip here is a macOS text utility built with Swift and SwiftUI; the CLIP family is a vision-language embedding model line. The repository's topics point only at the macOS app.

Official sources

  1. ganeshmshetty/openclip on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes