macOS 14+ · $2 one-time

A desktop pet you can program.

Petty is a floating, animated macOS companion with a JavaScript plugin API. Teach it new tricks in a few lines of code — build reactions, meeting reminders, git watchers, anything you can script.

Plugin system

Everything Petty does is a plugin.

Pomodoro, calendar reminders, git watching, Claude Code hook reactions — every built-in behavior is JavaScript running on the same petty.* API you'd use to write your own. A sandboxed runtime, permission-gated system access, and an event bus. That's it.

manifest.json

{
  "id": "builtin-claude-code",
  "name": "Claude Code",
  "version": "1.0.0",
  "script": "main.js",
  "capabilities": ["reactions"],
  "permissions": ["system"]
}

main.js

petty.events.on("hook:task-complete", () => {
  petty.pet.animate("yell");
  petty.pet.showBubble("Task done!", 3);
  petty.pet.speak("Your task is done!");
});

petty.events.on("hook:needs-attention", () => {
  petty.pet.animate("excited");
  petty.pet.showBubble("Needs attention!", 3);
});

Permission-gated

Every plugin declares what it needs in the manifest — calendar, clipboard, shell access, network. The runtime enforces it. A plugin that doesn't declare calendar can't touch your calendar.

Community marketplace

Download plugin zips from the marketplace and drop them into Petty's plugin folder. Nothing auto-runs, nothing installs silently. You see what you're getting before you enable it.

Before you install anything

Plugins are JavaScript that runs on your Mac. Only install from authors you trust, and read the manifest before enabling — treat it like any other code you're about to run.

Bundled plugins

Nine plugins in the box.

Every bundled behavior is a plugin you could have written yourself. Here's what comes installed. Toggle them individually from Settings.

Pomodoro

Focus/break cycle timer. Petty sleeps through focus, wakes you up on break.

Calendar

Reads macOS Calendar via EventKit. 15/5/0 minute reminders and a morning briefing.

Claude Code hooks

Wire petty:// URL events into your Claude Code hooks — task complete, needs attention, session start/end.

Git watcher

Polls your repos for dirty files, unpushed commits, and conflicts. Nags gently.

Weather

Temperature and condition quips via wttr.in, with context-aware commentary.

Personality

Time-of-day quips and tunable chattiness. The pet has opinions.

Clipboard reactions

Context-aware comments when you copy URLs, code snippets, or plain text.

App awareness

Observes the frontmost app and drops in app-specific commentary.

Idle timer

Notices when you've been away too long and gets progressively snarkier about it.

The character

Still a pet, first.

None of the plugin stuff matters if the pet isn't charming. So Petty gets the pet part right too.

Animated blob character

An amber procedural character rendered in SpriteKit with a full animation set — idle breathing, random walking, excited hops, yell, sleep, think.

Skin system

Swap the default blob for custom sprite-sheet skins. Drop a skin pack folder into ~/Library/Application Support/Petty/Skins and pick it in Settings.

Speech bubbles + TTS

Floating speech bubbles with custom Bezier tails, plus optional text-to-speech via AVSpeechSynthesizer.

File drop actions

Drag a file onto Petty for type-aware actions: image dimensions, PDF page count, LOC count, or compress to zip.

Quick notes HUD

A floating notepad one right-click away. Auto-saves to disk, stays on top when you need it.

Lives above everything

Borderless NSPanel at maximum window level. Joins every Space, click-through transparency, draggable anywhere.

Pricing

$2one-time

macOS 14 Sonoma or later

Download Petty
  • · Pay once, keep forever
  • · Free updates
  • · Nine bundled plugins
  • · Write your own in JavaScript