
A local-first pixel companion for breaks, focus, hydration, and agent activity nudges.
English · 中文 · 日本語 · 한국어 · Français · Deutsch · Русский · العربية · Español
PawPause is a macOS and Windows desktop companion. It keeps a small pixel friend on your screen, nudges you to take breaks, reminds you to drink water, helps protect focus sessions, and supports PetDex-style companion imports.
pet.json + spritesheet.webp/png folders or zip packages in the app.~/.codex/pets.Download installers from Releases:
| File | Platform |
|---|---|
PawPause-x.x.x-mac-arm64.dmg |
macOS Apple Silicon |
PawPause-x.x.x-mac-x64.dmg |
macOS Intel |
PawPause-x.x.x-win-x64.exe |
Windows 64-bit |
On macOS, distraction detection and Agent window recognition require Accessibility permission.
PawPause can consume OpenCode lifecycle events through a small OpenCode plugin:
mkdir -p ~/.config/opencode/plugins
cp integrations/opencode/pawpause-agent-hook.js ~/.config/opencode/plugins/
The plugin writes JSONL events to ~/.local/share/pawpause/agent-events/opencode.jsonl. You can override that path with PAWPAUSE_AGENT_EVENTS.
PawPause also watches local DeepSeek TUI activity without a plugin. It reads recent session updates from ~/.deepseek/sessions and approval events from ~/.deepseek/audit.log, so normal chats, tool use, completion, failures, and permission prompts can move the companion.
PawPause can consume Hermes Agent lifecycle events through a small Hermes plugin:
mkdir -p ~/.hermes/plugins
cp -R integrations/hermes/pawpause-agent-hook ~/.hermes/plugins/
Then enable it in ~/.hermes/config.yaml:
plugins:
enabled:
- pawpause-agent-hook
The plugin writes JSONL events to ~/.local/share/pawpause/agent-events/hermes.jsonl. You can override that path with PAWPAUSE_HERMES_AGENT_EVENTS.
If the plugin is not installed, PawPause still watches recent Hermes session files in ~/.hermes/sessions as a local fallback, so normal chat turns can trigger progress and completion nudges.
If Hermes runs inside WSL and PawPause runs on Windows, Hermes must write events to a path that the Windows app also watches. The current PawPause Hermes hook handles this automatically, but if your Hermes process does not load environment variables correctly or PawPause still does not react, hardcode the event path in the WSL plugin.
In WSL, edit the plugin:
nano ~/.hermes/plugins/pawpause-agent-hook/__init__.py
Replace the whole _output_file() function with:
def _output_file() -> Path:
# WSL -> Windows PawPause fallback.
return Path("/mnt/c/Users/Administrator/.local/share/pawpause/agent-events/hermes.jsonl")
If the Windows username is not Administrator, replace it in the path:
/mnt/c/Users/<WindowsUserName>/.local/share/pawpause/agent-events/hermes.jsonl
Then create the directory from WSL:
mkdir -p /mnt/c/Users/Administrator/.local/share/pawpause/agent-events
Finally, restart Hermes. The key point is that Hermes writes from WSL into the mounted Windows user directory, and PawPause reads the same event file from Windows.
pet.json and spritesheet.webp or spritesheet.png.npx petdex install trump
PawPause scans ~/.codex/pets automatically, so installed companions usually appear without restarting.
git clone https://github.com/angziii/PawPause.git
cd PawPause
corepack enable
corepack pnpm install
corepack pnpm dev
corepack pnpm typecheck
corepack pnpm build
corepack pnpm dist:mac
corepack pnpm dist:win
src/main/ Electron main process: windows, tray, timers, focus detection, imports
src/preload/ IPC bridge between Electron and React
src/renderer/ React UI for the companion and settings windows
src/shared/ Types, defaults, i18n, PetDex state mapping
landing/ PawPause landing page deployed to pawpause.vercel.app
docs/readme/ Localized README pages
Large companion asset packs are intentionally not committed to keep the repository small. Import or install companions locally instead.
Source code is released under the MIT License. Companion assets may have separate licensing; see ASSET_LICENSE.md.
PawPause is built with appreciation for:
$ claude mcp add PawPause \
-- python -m otcore.mcp_server <graph>