{"id":50692351,"url":"https://github.com/andrewmmc/clipwise","last_synced_at":"2026-06-09T04:08:17.783Z","repository":{"id":351787869,"uuid":"1206023516","full_name":"andrewmmc/clipwise","owner":"andrewmmc","description":"Select text anywhere, transform it with AI, get the result in your clipboard.","archived":false,"fork":false,"pushed_at":"2026-05-31T11:38:11.000Z","size":6239,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-31T13:04:40.393Z","etag":null,"topics":["chatgpt","claude","codex","gpt","llm","macos"],"latest_commit_sha":null,"homepage":"https://clipwise.mmc.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewmmc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-09T13:56:41.000Z","updated_at":"2026-05-31T11:38:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrewmmc/clipwise","commit_stats":null,"previous_names":["andrewmmc/clipwise"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/andrewmmc/clipwise","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewmmc%2Fclipwise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewmmc%2Fclipwise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewmmc%2Fclipwise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewmmc%2Fclipwise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewmmc","download_url":"https://codeload.github.com/andrewmmc/clipwise/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewmmc%2Fclipwise/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34090885,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatgpt","claude","codex","gpt","llm","macos"],"created_at":"2026-06-09T04:08:16.596Z","updated_at":"2026-06-09T04:08:17.777Z","avatar_url":"https://github.com/andrewmmc.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./public/app-icon.png\" alt=\"Clipwise app icon\" width=\"96\" height=\"96\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eClipwise\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003emacOS menu bar app for LLM-powered text transformations.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/andrewmmc/clipwise/actions/workflows/ci.yml\"\u003e\n    \u003cimg alt=\"CI\" src=\"https://github.com/andrewmmc/clipwise/actions/workflows/ci.yml/badge.svg\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/andrewmmc/clipwise/releases/latest\"\u003e\n    \u003cimg alt=\"Latest release\" src=\"https://img.shields.io/github/v/release/andrewmmc/clipwise?display_name=release\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nClipwise is a small menu bar app that helps you quickly rewrite, summarize, translate, and clean up text anywhere on macOS. Copy text in any app, pick an action from the menu bar, and Clipwise puts the improved result back on your clipboard so you can paste it right away. On Macs that support Apple Intelligence, it can use the built-in on-device model automatically; you can also connect OpenAI-compatible, Anthropic, or local CLI tools.\n\nNo browser. No context switching. Select text, run an action, get the result back in your clipboard.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/screenshot-1.png\" alt=\"Clipwise actions view\" width=\"900\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eDefine reusable actions\u003c/strong\u003e\u003cbr /\u003e\n  Create custom prompt + provider combinations for text transformations like rewriting, translating, and more.\n\u003c/p\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cimg src=\"./assets/screenshot-2.png\" alt=\"Clipwise providers view\" width=\"900\" /\u003e\n      \u003cp\u003e\n        \u003cstrong\u003eManage providers\u003c/strong\u003e\u003cbr /\u003e\n        Use Apple Intelligence automatically on supported Macs, or connect OpenAI, Anthropic, and local CLI tools like \u003ccode\u003ecopilot\u003c/code\u003e and \u003ccode\u003eclaude\u003c/code\u003e.\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cimg src=\"./assets/screenshot-3.png\" alt=\"Clipwise history view\" width=\"900\" /\u003e\n      \u003cp\u003e\n        \u003cstrong\u003eReview history\u003c/strong\u003e\u003cbr /\u003e\n        Browse past transformations with input/output details and quick copy.\n      \u003c/p\u003e\n    \u003c/td\u003e\n    \u003ctd width=\"33%\" valign=\"top\"\u003e\n      \u003cimg src=\"./assets/screenshot-4.png\" alt=\"Clipwise settings view\" width=\"900\" /\u003e\n      \u003cp\u003e\n        \u003cstrong\u003eConfigure settings\u003c/strong\u003e\u003cbr /\u003e\n        Toggle notifications, enable history, and set max token limits.\n      \u003c/p\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Download\n\n**[Get Clipwise on the Mac App Store](https://apps.apple.com/us/app/clipwise-refine-text-with-ai/id6762086471)** (Apple Intelligence, OpenAI, Anthropic) or **[download the latest release](https://github.com/andrewmmc/clipwise/releases/latest)** (includes CLI tool support)\n\nmacOS builds are available for both Apple Silicon (M1+) and Intel.\n\n### From the Mac App Store\n\n1. Open the [App Store link](https://apps.apple.com/us/app/clipwise-refine-text-with-ai/id6762086471) and click **Get**.\n2. The app will be installed to your **Applications** folder automatically.\n\n### From GitHub Releases\n\n1. Download the `.dmg` file from the [releases page](https://github.com/andrewmmc/clipwise/releases/latest) for your architecture.\n2. Open the `.dmg` and drag **Clipwise** to your **Applications** folder.\n3. On first launch, macOS may block the app. Go to **System Settings → Privacy \u0026 Security** and click **Open Anyway**.\n\n## How to Use\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/screenshot-5.png\" alt=\"Clipwise menu bar dropdown\" width=\"235\" /\u003e\n\u003c/p\u003e\n\n1. **Open settings** — launch Clipwise and open the settings window from the menu bar.\n2. **Check providers** — if your Mac supports Apple Intelligence, the Apple provider is added automatically. Otherwise add an LLM provider manually (OpenAI-compatible, Anthropic, or a CLI tool).\n3. **Create an action** — define a prompt and select a provider (for example, \"Refine wording\" with Apple Intelligence or OpenAI).\n4. **Copy text** — select and copy text in any app.\n5. **Run the action** — click the Clipwise icon in the menu bar and select an action.\n6. **Paste the result** — the transformed text is written back to your clipboard, ready to paste.\n\n## Why Clipwise\n\n- **System-wide access** — trigger actions from the menu bar in any app without switching context\n- **Multi-provider support** — Apple Intelligence on supported Macs, plus OpenAI, Anthropic, any OpenAI-compatible endpoint, and local CLI tools like `claude` or `codex`\n- **Custom actions** — define reusable prompt + provider combinations for your specific workflows\n- **Local-first** — no backend, no telemetry; on-device Apple Intelligence, API keys, and config stay on your machine\n\n## Features\n\n- **Menu bar app** — runs as a tray app with no Dock presence\n- **Settings UI** — manage providers, actions, and app settings from a dedicated window\n- **Apple Intelligence support** — auto-attaches the on-device Apple provider when the current Mac supports it\n- **Clipboard workflow** — reads text from clipboard, runs the action, writes result back\n- **Action testing** — test actions directly in the settings UI before using them\n- **Notifications** — optional macOS notifications when actions complete\n- **Reorderable actions** — drag to reorder actions in the menu\n- **History** — browse past transformations with input/output details\n\n## Providers\n\nClipwise supports two provider modes:\n\n- **Apple Intelligence** — on supported Macs, Clipwise auto-adds the built-in on-device Apple provider. No API key is required.\n- **BYOK / local tools** — for Anthropic, OpenAI-compatible APIs, and CLI tools, you provide your own API keys or local commands. No keys are included or shared. You can get started for free with [OpenRouter's free models](https://openrouter.ai/openrouter/free).\n  - **OpenAI-compatible** — works with OpenAI, OpenRouter, local gateways, and other compatible chat completion endpoints\n  - **Anthropic** — direct Anthropic API requests\n  - **CLI** — local CLI commands like `claude`, `codex`, or custom scripts\n\n## Development\n\n\u003e **Note:** This section is for contributors and developers only.\n\n### Prerequisites\n\n- macOS\n- Node.js 22+\n- [Rust](https://www.rust-lang.org/tools/install)\n- Xcode Command Line Tools\n\n### Quick start\n\n```bash\nnpm install\nnpm run tauri:dev    # full Tauri app\n```\n\n### Build modes\n\nClipwise supports two build modes via a Cargo feature flag:\n\n| Mode                        | CLI Provider | Use case                                               |\n| --------------------------- | ------------ | ------------------------------------------------------ |\n| **Default** (with CLI)      | Yes          | Development, non-App-Store distribution (DMG/Homebrew) |\n| **App Store** (without CLI) | No           | Mac App Store submission (sandbox-compliant)           |\n\nThe `cli-provider` feature is enabled by default.\n\n```bash\n# Default build (with CLI provider)\nnpm run tauri:dev\nnpm run tauri:build\nnpm run tauri:build-debug\n\n# App Store build (without CLI provider)\nnpm run tauri:dev:appstore\nnpm run tauri:build:appstore\n```\n\n\u003e **Why two modes?** The Mac App Store requires the App Sandbox, which prevents running arbitrary subprocesses. CLI providers (e.g. `claude`, `codex`) execute local commands and are incompatible with sandboxing. The UI automatically hides the CLI option when the build doesn't support it.\n\n### Commands\n\n```bash\nnpm run dev          # Vite dev server only\nnpm run build        # tsc + Vite build\nnpm run tauri:dev    # full Tauri app (dev, with CLI)\nnpm run tauri:dev:appstore  # full Tauri app (dev, without CLI / App Store mode)\nnpm run tauri:build  # production build (with CLI)\nnpm run tauri:build:appstore # production build (App Store)\nnpm run tauri:build-debug  # debug .app bundle\nnpm run lint         # ESLint\nnpm run typecheck    # TypeScript check\nnpm run format       # Prettier\nnpm test             # Vitest\ncd src-tauri \u0026\u0026 cargo test  # Rust tests (default features)\ncd src-tauri \u0026\u0026 cargo test --no-default-features  # Rust tests (App Store mode)\n```\n\n### Testing macOS build\n\nTo test a built `.app` bundle:\n\n```bash\n# Default build (with CLI provider)\nnpm run tauri:build-debug\n# Output: src-tauri/target/debug/bundle/macos/Clipwise.app\n\n# App Store build (without CLI provider)\nnpm run tauri:dev:appstore\n```\n\n### Tech stack\n\nReact 19, TypeScript, Vite 7, Tailwind CSS v4, Tauri 2, Vitest.\n\nSee **[AGENTS.md](./AGENTS.md)** for architecture, conventions, and contributor docs.\n\n## Architecture\n\n```text\nsrc/           React + TypeScript settings UI (Vite, Tailwind CSS v4)\nsrc-tauri/     Rust backend: tray app, config persistence, provider calls\n```\n\n## Configuration\n\nConfig is stored at `~/Library/Application Support/clipwise/config.json`:\n\n```json\n{\n  \"providers\": [\n    {\n      \"id\": \"apple-intelligence\",\n      \"name\": \"Apple Intelligence\",\n      \"type\": \"apple\"\n    }\n  ],\n  \"actions\": [],\n  \"settings\": {\n    \"showNotificationOnComplete\": true,\n    \"maxTokens\": 4096,\n    \"historyEnabled\": true\n  }\n}\n```\n\nOn Macs without Apple Intelligence support, `providers` may start as an empty array until you add one manually.\n\n## Author\n\nCreated by **Andrew Mok** ([@andrewmmc](https://github.com/andrewmmc))\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewmmc%2Fclipwise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewmmc%2Fclipwise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewmmc%2Fclipwise/lists"}