Your tools can talk to your pet
App announcements, new in 1.1 — a truthful per-app setup guide. Updated July 2026.
Anything on your Mac that can open a URL can hand the pet a message to pass along. When something finishes — a coding-agent run, a build, an important email — the pet perks up and announces it at your desk. If you stepped away, it sends a macOS notification instead, so you can leave the desk without watching a progress bar.
That's the whole protocol. source is the app's name
(lowercase letters, digits, dashes); text is one percent-encoded line.
Each source appears in the menu bar under App announcements the first
time it speaks, with its own mute toggle. Announcements are rate-limited
(30 seconds per source, 12 per hour in total) so a runaway script can never
turn the pet into a firehose. The mochi:// scheme is local —
announcements never touch the network, and the app makes no request of its own.
Claude Code — the full "waiting together" setup
This is the one we recommend: the pet takes up its watch beside a tiny
terminal while Claude works, invites you to stretch on long waits,
celebrates every finish (with a notification if you stepped away), and
announces when Claude needs you. Add to ~/.claude/settings.json:
The msg= on run/end makes the away notification
personal — it carries Claude's actual closing words ("Deployed the site,
fixed 3 bugs") instead of a generic "done" (requires Mochi 1.1.1+; older
versions simply ignore it). Overlapping sessions are tracked per session
id — the pet celebrates quietly per run and fully when the last one lands.
Codex CLI (OpenAI)
The ChatGPT desktop app has no hooks (see below), but OpenAI's Codex
CLI does: the notify setting runs a program when an agent turn
completes. In ~/.codex/config.toml (user-level config only — project
configs can't set notify):
Codex appends one JSON argument of type agent-turn-complete to the
command, including the last-assistant-message — a small wrapper script
can jq it into the announcement text if you want the actual message.
Gemini CLI (Google)
Gemini CLI has Claude-style hooks; AfterAgent fires after the final
response. In ~/.gemini/settings.json:
Shortcuts — automations for everyone
Mochi requires macOS 26, and macOS 26 is where Shortcuts on the Mac finally gained real automation triggers. That means every Mochi user can wire events with no code at all:
- Open Shortcuts → Automation → + and pick a trigger: a time of day, an app opening or closing, a Focus turning on, an incoming email or message from specific senders or containing specific text, a folder changing, a drive or display connecting, a battery level…
- Add a URL action containing
mochi://announce?source=shortcut&text=Boss%20emailed, then an Open URLs action. - Choose Run Immediately so it fires without confirmation.
The incoming-email trigger watches accounts set up in Apple Mail — which is also the honest workaround for apps that can't be wired directly (Outlook, Gmail: add the same account to Mail).
Apple Mail rules
Mail rules still support Run AppleScript as an action. Save this as
mochi-announce.scpt in
~/Library/Application Scripts/com.apple.mail/ (the rule editor's
script pop-up has "Open in Finder" to reveal that exact folder — scripts
anywhere else won't run):
Then Mail → Settings → Rules → your conditions → "Run AppleScript". Test it with Message → Apply Rules first; after macOS updates, re-select the script in the rule if it stops firing (a known Mail quirk). If a rule feels fiddly, the Shortcuts email trigger above does the same job with no script.
Any script, build, or button
CI jobs, git hooks, Makefiles, cron, Stream Deck buttons, Raycast — if it can run a shell command, it can reach the pet:
What can't be wired (and why we won't pretend)
Some apps expose no automation surface at all — no hooks, no AppleScript, no URL callbacks. Nothing on macOS (Mochi included) can react to their events, because the system never shares one app's notifications with another:
- ChatGPT desktop app — no hooks, no AppleScript dictionary, no URL scheme. OpenAI's hook-capable tool is Codex CLI (above). If that changes, this page will too.
- Slack — the desktop app has no scripting surface, and Workflow Builder runs on Slack's servers, never on your Mac.
- Microsoft Teams — same story; its "Workflows" are Power Automate in Microsoft's cloud.
- Microsoft Outlook — "new Outlook" has no AppleScript, and its rules are server-side with fixed actions. (Legacy Outlook loses Exchange Online support in late 2026, so we don't recommend building on it.) Workaround: add the same mail account to Apple Mail and use a Mail rule or a Shortcuts email trigger.
Good to know
- Source names are folded to lowercase slugs (letters, digits, dash, underscore, max 24 chars); text is trimmed to one line of 120 characters.
- At the desk: the pet speaks the message. Away for a minute or more: a macOS notification instead (it asks permission the first time).
- Mute any source: menu bar → App announcements → click its name. New sources start enabled — you set up the sender, so it starts trusted.
- Copy example command in the same menu puts a working one-liner on your clipboard.