clippa
v1.0.15
Published
Installer for Clippa, a private keyboard-first clipboard history app for macOS.
Maintainers
Readme
Install
Run the installer with npm:
npx --yes clippaOr install with Homebrew:
brew tap Vaniawl/clippa
brew install clippaUpdate later with:
brew update
brew upgrade clippaYou can also install the current main build directly from GitHub:
npx --yes github:Vaniawl/Clippa#mainAfter it opens, grant Accessibility access when macOS asks. Clippa needs that permission only to paste the selected item into the app where your cursor is already active.
Useful installer options:
npx --yes github:Vaniawl/Clippa#main --no-open
npx --yes github:Vaniawl/Clippa#main --install-dir ~/ApplicationsYou can also download Clippa.app.zip from the latest GitHub release, unzip it, move Clippa.app to /Applications, and open it.
Screenshots
| Clipboard panel | Settings | | --- | --- | | | |
| Privacy | Install and release | | --- | --- | | | |
What It Does
Clippa runs quietly in the menu bar. Press Command-Shift-V in any app, select a clipboard item with the keyboard or mouse, then press Return or click to paste it back into the app you were using.
Core workflow:
Command-Shift-Vopens clipboard history.Up/Downselects items.Left/Rightswitches filters.Returnor click pastes the selected item.Esccloses the panel.
Useful details:
- Keeps recent text, links, images, and file references.
- Newest copied item stays at the top.
- Pinned items stay available separately.
- Optional trailing space for pasted text and links.
- Context menu supports copy, pin, delete, open, Quick Look, and image text extraction.
- Search supports plain text plus tokens such as
kind:text,type:link,from:safari,is:pinned,today, andyesterday. - History saving can be paused temporarily from the menu bar or Privacy settings.
- Link tracking cleanup removes common
utm_*,fbclid,gclid, and similar parameters. - Pinned clips can be exported and imported as local JSON.
- History retention, item limits, excluded apps, and Launch at Login are configurable.
iPhone Companion
The repo also includes a Clippa iOS target. It is a separate iPhone companion app, shaped around iOS clipboard limits:
- Open Clippa on iPhone.
- Copy text, a link, or an image in another app, then return to Clippa. The app saves the current iPhone clipboard automatically while it is active.
- Tap any saved clip to copy it back to the system clipboard.
- Text, links, images, pins, and deletions sync between the iPhone and Mac through the user's private iCloud database.
- Use search, filters, swipe actions, pinned clips, preview, and local settings from the iPhone app.
- Return to the previous app and paste normally.
- Use Shortcuts or Siri actions to save the current clipboard, copy the latest saved clip, or open Clippa.
iOS may ask before allowing automatic clipboard reads. It does not allow third-party apps to monitor the clipboard in the background, show a global floating paste window, or paste directly into other apps. Clippa captures new copies whenever its scene is active and also provides a Shortcuts action for an explicit save.
Privacy
Clippa does not use analytics or require a Clippa account. When iCloud sync is available, supported clipboard items are stored in the user's private CloudKit database.
Privacy behavior:
- Mac history is encrypted locally with AES-GCM.
- CloudKit encrypted fields store text, link, and metadata values; images are stored as CloudKit assets in the user's private database.
- File references and security-scoped bookmarks never leave the Mac.
- Items larger than 20 MB remain local.
- No telemetry, advertising SDKs, or separate account system.
- Common password managers are excluded by default.
- Additional apps can be added to the excluded-apps list.
Accessibility permission is only used to restore focus and paste the selected clip into the app that was active before Clippa opened. If automatic paste is unavailable, Clippa keeps the item on the system clipboard and shows a direct link to the required permission.
Verification
The current public release is 1.0.15.
| Check | Status |
| --- | --- |
| GitHub Actions CI | Passing |
| Local Swift tests | 37/37 passing |
| Local iOS companion tests | 11/11 passing |
| Release build | Passing |
| Smoke launch | Passing |
| GitHub release | v1.0.15 live |
| npm package | [email protected] |
| Homebrew cask | clippa 1.0.13 |
| Bundle identifier | app.clippa.Clippa |
Useful verification commands:
npm view clippa version
npx --yes clippa --version
brew info clippaRequirements
- macOS 26.0 or newer
- Xcode 26.6 or newer, only if you want to build from source
Build From Source
git clone https://github.com/Vaniawl/Clippa.git
cd Clippa
xcodebuild -project Clippa.xcodeproj -scheme Clippa -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO test
xcodebuild -project Clippa.xcodeproj -scheme 'Clippa iOS' -destination 'platform=iOS Simulator,name=iPhone 17 Pro' CODE_SIGNING_ALLOWED=NO test
SMOKE_LAUNCH=1 ./scripts/release.shThe packaged app is written to:
outputs/Clippa.app.zipUpdate From Git
For an existing checkout:
git pull origin mainProduction Notes
- Bundle identifier:
app.clippa.Clippa - Version:
1.0.15 - Release builds use hardened runtime.
- History retention and item limits are configurable; the default is 100 items for one week.
- iCloud container:
iCloud.app.clippa.Clippa. - A Developer ID provisioning profile with CloudKit is required for a synchronized macOS build distributed outside the Mac App Store.
CloudKit Setup
Both app targets contain the iCloud entitlement for iCloud.app.clippa.Clippa. To enable sync for a development or production build:
- Enable CloudKit for the macOS and iOS App IDs in the Apple Developer portal and assign the shared container.
- Use an Apple Development profile locally. For direct macOS distribution, use a Developer ID provisioning profile that includes CloudKit.
- Run a development build once to create the
ClippaCliprecord type and its encrypted fields. - In CloudKit Console, deploy the development schema to production before shipping.
The public npx package is ad-hoc signed, so it cannot access the CloudKit container. Use SIGNING_MODE=configured ./scripts/release.sh with a CloudKit-capable Developer ID profile to create a synchronized distribution build.
