Count the menu bar apps you're running for text productivity. A clipboard manager - Maccy, Paste, or Alfred's clipboard history. A text expander - TextExpander, Raycast snippets, or Typinator. Maybe a dictation tool on top of that.

That's three apps doing one job - putting text into a text field faster than you can type it. Three installs, three things to configure, three icons in the menu bar.

ToolPiper replaces all three with one Mac menu bar app. Clipboard history holds 50 to 2,000 items with image OCR and source tracking, text snippets expand typed triggers, action snippets rewrite selections through a local model, and snippet import auto-detects 8 formats. Nothing leaves your Mac, and you can verify that yourself at localhost:9998.

Last updated June 2026.

What does ToolPiper's clipboard history track?

ToolPiper keeps 50 to 2,000 clipboard items with fuzzy search, auto-categorization into 8 content types, OCR on copied images, and source tracking that records the app and browser tab each item came from.

The default is 200 items, adjustable from 50 up to 2,000. Every item is auto-categorized - text, URL, email, code, JSON, file path, color value, number - so you can filter by category, search with fuzzy matching, or pin frequently used items to the top.

Images get OCR. Copy a screenshot and ToolPiper extracts the text from it automatically. The extracted text is searchable alongside your regular clipboard entries - useful for error dialogs, whiteboard photos, or anything you can't select with a cursor.

Source tracking. ToolPiper records which app you copied from, including the browser tab URL for Safari, Chrome (and Chrome Canary), Arc, Brave, Edge, Vivaldi, and Opera. When you're hunting for that thing you copied from that article an hour ago, you can trace it back to the exact page. For the head-to-head on the clipboard side alone, see the full Maccy comparison.

Smart filtering. Password manager entries, one-time passwords, and other concealed pasteboard items are skipped automatically. Your 1Password autofills never land in history.

Press Cmd+Shift+V to open the clipboard panel, Cmd+1 through Cmd+9 to paste recent items.

What snippet types does ToolPiper support?

ToolPiper has two snippet primitives. Text snippets expand a typed trigger into stored text with %date, %time, %clipboard, and %| cursor macros. Action snippets transform selected text through a local model when you type a trigger like ;fix and tap the right Command key.

Text snippets. Type ;addr and your mailing address appears. Type ;sig for your email signature. Inside any snippet, %date, %time, and %clipboard insert live values, %| places the cursor after expansion, and %% escapes a literal percent. The local text expander deep-dive covers the deterministic engine in full.

Utility snippets. 11 built-ins resolve live system values at expand time - ;today, ;date, ;time, ;now, ;iso, ;timestamp, ;name, ;login, ;myemail, ;host, and ;app.

Action snippets. Select a paragraph, type ;fix, then tap the right Command key - a quick press-and-release. A language model running on your Mac rewrites the selection in place. ToolPiper ships 12 built-in transforms, including ;summary, ;concise, ;simplify, ;bullets, ;tldr, ;email, and ;rewrite, and you can define your own triggers with your own prompts. The selection is the only input - action snippets never read your clipboard - and transforms cap at 16,384 characters. The full mechanics are in AI text snippets on Mac.

The model behind those transforms runs on ToolPiper's built-in llama.cpp runner. Your text stays on your Mac, there's no per-use cost, and it works offline.

How do you migrate snippets from TextExpander, Alfred, or Espanso?

Pick one file - or drag it onto the Snippets pane - and ToolPiper detects the format from its content. It imports TextExpander .textexpandersettings bundles, Alfred .alfredsnippets archives, Espanso YAML, Raycast JSON, Apple Text Replacements, CSV, TSV, and ToolPiper's own JSON. Re-importing the same file creates zero duplicates.

Detection reads the file's content - magic bytes, JSON shape, delimiter sniffing - not its extension, so a mislabeled export still imports. The Import command sits in the Snippets pane menu next to Export and Remove Duplicates. Alfred archives are read entirely in memory, and the collection's keyword prefix and suffix are applied to every trigger - the classic Alfred incorrect-import trap. Drag-and-drop imports only the first dropped file, and the ignored count is surfaced.

The merge is idempotent. Each snippet is fingerprinted on its content - trigger, kind, expansion text, prompt, and voice phrases, CRLF-normalized - so importing the same file twice, or round-tripping an export back in, lands zero duplicates, and groups merge by case-insensitive name. Snippets that share a trigger but differ in content import as both copies, and the import summary counts those conflicts so you can resolve them yourself.

Competitor placeholders get exactly one of three counted dispositions. Translatable ones translate - {clipboard} becomes %clipboard, cursor markers become %|, and simple date and time tokens become %date and %time. Untranslatable ones are kept as literal text and counted. The rest skip the snippet with a named reason. A literal percent sign in imported text is escape-protected, so a snippet containing "100% done" can never fire a live macro.

The honest caveats. Fill-in forms, script snippets (AppleScript, shell, JavaScript), nested snippet references, regex triggers, and {random} placeholders don't import - each is skipped with a counted reason, and the summary reports the detected format, snippets imported, duplicates skipped, trigger conflicts, and a per-reason skip count. Nothing is silently dropped. Keyboard Maestro, PhraseExpress, and Text Blaze have no native parser - their CSV export is the migration path. Files cap at 32 MB and 10,000 snippets per import. Leaving TextExpander specifically? The switching guide covers pricing and feature mapping.

How does push-to-talk dictation work?

Hold the Right Option key, speak, and release - the transcript lands in the focused text field. Speech-to-text runs on the Neural Engine, audio never leaves the Mac, and push-to-talk dictation is a Pro feature.

The engine is the same Parakeet model described in our voice transcription article, running on Apple's Neural Engine. End-to-end latency measured 127-173 ms in our testing, fast enough that the transcript feels immediate. It works offline, and if you dictate confidential material - client names, medical terms, legal details - it stays on the machine.

Push-to-talk dictation is a Pro feature. Clipboard history, snippets, AI transforms, and snippet import are free at every tier.

How do you set up ToolPiper?

1. Download and install. Grab the DMG from modelpiper.com. ToolPiper isn't on the Mac App Store because it needs Accessibility and global keyboard access that the App Store sandbox doesn't allow - most text expanders ship outside the App Store for the same reason.

2. Grant Accessibility permission. On first launch, macOS asks for Accessibility access. That's what lets ToolPiper watch for snippet triggers and inject expanded text. Grant it once.

3. Start using clipboard and snippets. Clipboard history and text snippets work immediately.

4. Pick a model for AI snippets. AI transforms run on ToolPiper's built-in llama.cpp runner. Download a model from the Models pane - free, no account, no API keys - and ;fix works offline from then on.

5. Import your existing snippets (optional). Open the Snippets pane, choose Import, and pick the file. Format detection handles the rest.

What do people actually use this for?

Rewriting a client email with a typed trigger and a tap. You drafted a reply but the tone is off. Select the text, type ;formal, tap the right Command key, and the model rewrites it professionally - no switching to ChatGPT, no pasting client correspondence into a cloud service. The rewrite appears in place.

Finding that thing you copied three hours ago. You copied a URL, a code snippet, and an error message from three different tabs this morning. Open clipboard history with Cmd+Shift+V, search for any fragment, and ToolPiper shows what you copied, when, and from which app and browser tab.

Talking instead of typing. You're on a call and need notes without keyboard clatter. Hold Right Option, speak, release - the text appears in your notes app. Useful for RSI, accessibility, or any time your hands are busy.

What doesn't ToolPiper do?

ToolPiper doesn't sync across devices, doesn't expand snippets in apps with non-standard text input, and needs a one-time local model download before AI transforms work. Push-to-talk dictation is a Pro feature.

Snippet expansion works in most standard text fields, but some apps handle input in non-standard ways. Terminal emulators, some Electron apps, and apps with custom text rendering may not respond to injection - clipboard history and AI transforms still work, you paste manually instead.

AI transforms need a model on disk first. That's a one-time download from the Models pane, no account and no API keys - until then, ToolPiper works as a clipboard manager and text expander.

There's no sync. If you need snippets shared across Macs or a team library, TextExpander's hosted service is still the better pick - ToolPiper keeps everything local on one machine.

Dictation accuracy depends on audio quality. A quiet room with a decent microphone works well in our testing. Noisy environments, heavy accents, or dense jargon produce errors - same as any speech-to-text system.

Get ToolPiper

Clipboard history, snippets, AI transforms, and snippet import are free. Push-to-talk dictation is Pro.

Download ToolPiper free from modelpiper.com (DMG, macOS 26+, Apple Silicon) and import your snippet library from the Snippets pane - one file pick brings it over.

This is part of a series on local-first AI workflows on macOS. See also: Local Text Expander and Voice Transcription.