Everything Pastiche can do.
Install it in about a minute, learn nine keystrokes, and your clipboard stops forgetting. Every command, path, and permission step below matches the shipping app.
Install
From download to first paste
Pastiche ships as a disk image on GitHub Releases. There is no installer, no account, and no license key — drag it in and press the hotkey.
- 1
Download the disk image
Grab the latest
Pastiche-<version>.dmgfrom GitHub Releases. Every release also carries a.zipof the same build — that one is what the auto-updater downloads. - 2
Drag Pastiche into Applications
Open the DMG and drag Pastiche onto the Applications shortcut inside the window. Then eject the disk image.
- 3
Launch it and press the hotkey
Pastiche is a menu-bar app — there is no Dock icon and no main window. A clipboard glyph appears in the menu bar; press ⇧⌘V and the shelf slides up from the bottom of whichever screen your mouse is on.
Gatekeeper on first launch
Release builds are ad-hoc signed rather than Developer ID notarized, so macOS refuses the first double-click with “Pastiche cannot be opened because the developer cannot be verified.” Do either of these once:
- Right-click (or Control-click) Pastiche.app → Open → Open in the dialog, or
- open System Settings → Privacy & Security, scroll to the message about Pastiche, and click Open Anyway.
You only need to do this once per installed version.
Accessibility permission
Pastiche pastes by synthesizing a ⌘V keystroke into the app you were last using, and macOS only lets trusted apps post keyboard events. On first launch Pastiche asks for Accessibility access — approve it in System Settings → Privacy & Security → Accessibility.
Without it Pastiche still works: selecting a card copies it to the system clipboard, you just press ⌘V yourself. Nothing else in the app reads other applications’ contents.
Declined the prompt by accident? The request re-arms — flip Pastiche off and on in the Accessibility list, or trigger a paste again, and direct paste recovers.
Using Pastiche
The shelf, end to end
Copy the way you always have. Pastiche records every clipping in the background and hands it back when you summon the shelf.
Open the shelf
Press ⇧⌘V from any app, or choose Open Pastiche from the menu-bar icon. The panel appears on the screen holding the mouse and closes again with the same hotkey, Esc, or by switching apps.
Pick and paste
Move with ← →, then Return to paste into the app you came from. ⇧Return pastes as plain text, and ⌘1–⌘9 fire the numbered cards without moving the selection.
Right-click any card for Paste, Paste as Plain Text, Copy, Add to Pinboard, and Delete.
Pinboards
The tabs across the top of the shelf are Clipboard plus your pinboards — named, color-coded boards for the snippets you reuse. Hit + to create one, then drag a card onto a tab, or use Add to Pinboard.
Adding an item to a board saves a copy, so your history is untouched. Right-click a tab to rename, recolor, or delete it — deleting a board removes only the copies saved on it.
Previews
Press Space to toggle the large preview of the selected card: full text, images fitted to the panel, openable links, file lists, and color swatches. Space or Esc closes it again.
Drag and drop
Drag any card straight out of the shelf and into another app — a document, a Finder window, a chat box. Files and images carry their real contents, not just a text stand-in.
Pause capture
Choose Pause Clipboard History from the menu-bar icon to stop recording entirely until you turn it back on — useful when you are about to move something you would rather not keep.
What Pastiche captures
Each kind of clipping gets its own card layout, a source-app badge, and a relative timestamp. Rich text keeps its RTF and HTML styling; images are stored as PNGs with thumbnails alongside.
- Plain text
- Rich text
- Links
- Images
- Files
- Colors
Keyboard reference
Everything below works while the shelf is open, except the global toggle.
| Shortcut | Action |
|---|---|
| ⇧⌘V | Toggle the shelf — works anywhere, and is re-bindable in Settings |
| ←/→ | Move the selection |
| Return | Paste the selected item into the app you came from |
| ⇧Return | Paste the selected item as plain text |
| Space | Toggle the large preview |
| ⌘1…⌘9 | Paste the 1st … 9th visible card |
| ⌘F | Focus the search field — typing anywhere also focuses it |
| Delete | Delete the selected item |
| Esc | Close the preview → clear the search → hide the shelf |
Power search
Find it faster than you copied it
Start typing with the shelf open — the search field takes focus automatically. Bare words fuzzy-match item text, URLs, hex codes, file names, and the app a clipping came from, ranked best-first.
| Token | Matches |
|---|---|
| type:text | Text and rich-text clippings |
| type:image | Images |
| type:link | Links |
| type:file | Files |
| type:color | Colors |
| app:<fragment> | Items copied from an app whose name or bundle id contains the fragment |
Tokens combine with each other and with free text:
type:link github links mentioning "github"
app:xcode type:text text copied out of Xcode
app:com.apple.Safari everything grabbed from Safari
#ff colors (and anything else) containing "#ff"Fuzzy matching is forgiving about typos — searching wrld still surfaces the clipping containing “world”. Press ⌘F to jump back to the field, and Esc to clear it.
Settings
Four tabs, no surprises
Open Settings… from the menu-bar icon in the top-right of the screen. Every preference is stored locally, alongside your history.
General
- Launch Pastiche at login — backed by
SMAppService; the toggle verifies the real system state and reverts if registration fails. - Global shortcut — record a new combination for the shelf. It needs at least one of ⌘ ⌃ ⌥; a combination the system rejects reverts to the previous one.
- Keep history — Unlimited (the default), or cap at 100 / 500 / 1,000 / 5,000 items. Lowering the cap prunes immediately.
- Paste as plain text by default — flips the meaning of Return and ⇧Return.
- Panel height — 280 pt to 520 pt.
Privacy
- Ignore concealed and transient clipboard content — on by default. Password managers mark their copies as concealed, and Pastiche never records them.
- Ignored Apps — anything copied while one of these apps is frontmost is skipped entirely.
- Clear History — removes every item from the Clipboard tab and scrubs the content from the database file on disk. Pinboards are left untouched.
Updates
Automatically check for updates reflects Sparkle’s real setting, and Check Now runs a check on demand. The current version is listed underneath.
About
Version, license, and links back to the repository — plus the only promise the app makes: everything you copy stays on this Mac.
Where your data lives
Clippings live only on your Mac, in ~/Library/Application Support/Pastiche — pastiche.sqlite3 plus an Images/ folder. Nothing is uploaded anywhere, and deleting an item deletes its row and any image files it owned.
The only network request Pastiche makes is fetching appcast.xml to check for updates.
Updates
Signed updates, straight from the repo
Pastiche ships with Sparkle 2. Each release is a .zip of the app signed with an EdDSA (Ed25519) key that never leaves the maintainer’s machine; the matching public key is baked into the app’s Info.plist.
How a check works
The app fetches appcast.xml from the repository in the background, verifies the signature on the archive, and installs the update on relaunch. The feed is the same file you can read on GitHub — nothing is served from a private endpoint.
Checking manually
Choose Check for Updates… from the menu-bar icon, or open Settings → Updates and press Check Now. Automatic checks can be turned off in the same place.
Updates are only available in the packaged Pastiche.app. A binary run with swift run has no bundle identifier, so Sparkle and launch-at-login are both disabled there.
Every release is written up in the changelog.
Building from source
A plain SwiftPM package
Requirements: macOS 13 or later and the Xcode Command Line Tools (xcode-select --install). A full Xcode install is not needed.
git clone https://github.com/Prestongramberg/Pastiche.git
cd Pastiche
# Debug build / run straight out of the package
swift build
# Build the real, signed .app bundle (icon, Info.plist, Sparkle framework)
bash Scripts/build_app.sh # add --universal for arm64 + x86_64What you get
The finished bundle lands at dist/Pastiche.app. Drag it to /Applications and launch it as usual — the same Gatekeeper step applies the first time.
Running the binary directly with swift run works for quick iteration, but there is no bundle identifier in that mode, so updates and launch-at-login are disabled.
Packaging a disk image of your own build is one more command: bash Scripts/make_dmg.sh <version>, which writes dist/Pastiche-<version>.dmg.
Uninstall
Two paths, both complete
Pastiche installs nothing outside the app bundle and its own support folder — no daemons, no kernel extensions, no receipts.
- 1
Quit the app
Click the menu-bar icon and choose Quit Pastiche (⌘Q). If you had launch-at-login on, turn it off in Settings → General before quitting so the login-item registration is cleaned up.
- 2
Remove the app, and optionally the data
Deleting
Pastiche.appalone leaves your history and pinboards in place, so reinstalling picks up where you left off. Delete the support folder too for a clean slate.
# Remove the app
rm -rf /Applications/Pastiche.app
# Remove clipboard history, pinboards, and cached images
rm -rf "$HOME/Library/Application Support/Pastiche"
# Optional: forget the app's preferences
defaults delete com.prestongramberg.pasticheThe second command is permanent — it deletes pastiche.sqlite3 and the Images/ folder with it. Finally, remove the stale entry under System Settings → Privacy & Security → Accessibility by selecting Pastiche and clicking the minus button.
Get help
Something off?
Pastiche is a one-person open-source project. Bug reports with the macOS version and a short repro are genuinely useful.
Report an issue
Open a ticket on GitHub — bugs, rough edges, and feature ideas all land in the same place.
Read the source
MIT licensed, Swift, no dependencies beyond Sparkle. Pull requests welcome.
Changelog
What changed in each release, written for humans rather than commit logs.
Ready to stop losing what you copied?
Free, open source, and entirely local. macOS 13 or later.
Download for Mac