[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11051":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},11051,"openpets","alvinunreal\u002Fopenpets","alvinunreal","Desktop pets for AI coding agents. Install pets, connect Claude Code via MCP, and see live coding status on your desktop.","https:\u002F\u002Fopenpets.dev",null,"TypeScript",807,37,4,10,0,765,8.74,"MIT License",false,"master",[23,24,25,26,27,28,29,30,5,31],"ai-agents","bun","claude-code","coding-agents","desktop-pet","electron","mcp","opencode","pixel-art","2026-06-12 02:02:29","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fopenpets.png\" alt=\"OpenPets - pixel art desktop pets for coding agents\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>A tiny desktop pet for coding agents.\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  See agent progress, tool use, test runs, and coding state as a playful desktop companion.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fintro.png\" alt=\"OpenPets reacting across multiple coding agent sessions\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n\u003Cdiv align=\"center\">\n  \u003Cp>\u003Csub>by \u003Cb>Boring Dystopia Development\u003C\u002Fb>\u003C\u002Fsub>\u003C\u002Fp>\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fboringdystopia.ai\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fboringdystopia.ai-111111?style=for-the-badge&logo=vercel&logoColor=white\" alt=\"boringdystopia.ai\">\u003C\u002Fa>&nbsp;\n    \u003Ca href=\"https:\u002F\u002Fx.com\u002Falvinunreal\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FX-@alvinunreal-000000?style=for-the-badge&logo=x&logoColor=white\" alt=\"X @alvinunreal\">\u003C\u002Fa>&nbsp;\n    \u003Ca href=\"https:\u002F\u002Ft.me\u002Fboringdystopiadevelopment\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Join%20channel-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white\" alt=\"Telegram Join channel\">\u003C\u002Fa>&nbsp;\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\n\n---\n\n## 2-minute Quick Start\n\nInstall the OpenPets Agent Skill with [skills.sh](https:\u002F\u002Fskills.sh\u002F):\n\n```bash\nnpx skills add alvinunreal\u002Fopenpets --skill openpets\n```\n\nThen open Claude Code, OpenCode, Codex, or another skill-aware agent and say:\n\n```text\nUse the OpenPets skill. Install OpenPets for me, connect this agent, and verify the integration works.\n```\n\nFor project setup, open your agent inside the repo and say:\n\n```text\nUse the OpenPets skill. Help me choose or install a pet, configure it for this project, and verify the project integration.\n```\n\nUseful prompts:\n\n```text\nUse the OpenPets skill. Configure this project for Claude Code with a pet.\nUse the OpenPets skill. Configure this project for OpenCode with a pet.\nUse the OpenPets skill. Debug why openpets_status is unavailable.\n```\n\n## Star OpenPets\n\nHere is an extra GIF of me starring my own repo to encourage you to do the same. If OpenPets makes your coding setup a little more fun, please give the repo a star.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fstar-repo.gif\" alt=\"Starring the OpenPets repository\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n## What is OpenPets?\n\nOpenPets is a tray-first desktop companion app for AI coding agents.\n\n- **Desktop companion** - a small pet that reacts while agents think, edit, test, wait for approval, finish, or hit an error.\n- **Agent integrations** - first-class setup for Claude Code and OpenCode, including MCP tools, instructions, and automatic hooks\u002Fplugins.\n- **MCP ready** - any MCP-capable agent can send short safe speech bubbles and reactions through the OpenPets MCP server.\n- **Pet-pack friendly** - loads installed animated pet packs and can route a selected agent\u002Fproject to its own pet window.\n- **Privacy-conscious by design** - automatic hook speech is static and local; prompts, code, logs, command output, URLs, paths, and secrets are not shown in bubbles.\n\n## Manage your pets\n\nBrowse installed pets, preview their animations, and choose which companion should follow each coding agent from the OpenPets desktop app.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fmanage-pets.png\" alt=\"Managing pets in the OpenPets desktop app\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\n## Quick start\n\nInstall the desktop app, then connect your coding agent.\n\n### 1. Install OpenPets Desktop\n\nDownload the latest app from [OpenPets Releases](https:\u002F\u002Fgithub.com\u002Falvinunreal\u002Fopenpets\u002Freleases\u002Flatest):\n\n- **macOS Apple Silicon**: `OpenPets-*-mac-arm64.dmg`\n- **macOS Intel**: `OpenPets-*-mac-x64.dmg`\n- **Windows**: `OpenPets-*-win-x64-setup.exe`\n- **Linux**: `OpenPets-*-linux-x86_64.AppImage`\n\nLaunch OpenPets. You should see the desktop pet and the OpenPets tray\u002Fmenu-bar icon.\n\n> Current builds may be unsigned. macOS or Windows may show a security warning the first time you open the app.\n\nIf macOS says the app is damaged or should be moved to Trash, remove the quarantine flag and open it again:\n\n```bash\nxattr -dr com.apple.quarantine \u002FApplications\u002FOpenPets.app\nopen \u002FApplications\u002FOpenPets.app\n```\n\n### 2. Connect your agent\n\nUse the desktop **Integrations** screen for global setup when available:\n\n- **Claude Code** - installs OpenPets MCP, Claude memory instructions, and optional Claude hooks.\n- **OpenCode** - installs OpenPets MCP, an OpenCode instruction file, and the `@open-pets\u002Fopencode` plugin.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fintegrations.png\" alt=\"OpenPets desktop integrations screen\" width=\"100%\" \u002F>\n\u003C\u002Fp>\n\nFor project-local setup, run the CLI from the project you want to configure:\n\n```bash\nnpx -y @open-pets\u002Fcli@latest configure --agent claude --pet \u003CpetId>\nnpx -y @open-pets\u002Fcli@latest configure --agent opencode --pet \u003CpetId>\n```\n\nIf you prefer a permanent `openpets` shell command, install the CLI once with `npm install -g @open-pets\u002Fcli` and replace `npx -y @open-pets\u002Fcli@latest` with `openpets`.\n\nProject-local setup can create project files such as `.claude\u002Fsettings.local.json` or `.opencode\u002Fopencode.jsonc`. Review them before committing because they may include the selected pet id.\n\n## Agent integrations\n\nOpenPets integrations have three layers:\n\n1. **MCP tools** for explicit agent actions.\n2. **Agent instructions** so agents know when to use those tools.\n3. **Hooks\u002Fplugins** for automatic decorative reactions during normal agent work.\n\n### Claude Code\n\nClaude Code integration supports:\n\n- `openpets` MCP setup via Claude Code.\n- Managed Claude memory instructions in `~\u002F.claude\u002FCLAUDE.md` and `~\u002F.claude\u002Fopenpets.md`.\n- Managed Claude hooks in `~\u002F.claude\u002Fsettings.json`.\n- Project-local setup through `npx -y @open-pets\u002Fcli@latest configure --agent claude --pet \u003CpetId>` or the optional global `openpets` CLI.\n\nTypical global MCP command shape:\n\n```bash\nclaude mcp add --scope user openpets -- npx -y @open-pets\u002Fmcp@latest\n```\n\nWith a selected pet:\n\n```bash\nclaude mcp add --scope user openpets -- npx -y @open-pets\u002Fmcp@latest --pet \u003CpetId>\n```\n\nSee [`docs\u002Fclaude-integration.md`](docs\u002Fclaude-integration.md) for the full file layout, hook mapping, project-local behavior, and safety rules.\n\n### OpenCode\n\nOpenCode integration supports:\n\n- An MCP entry using `@open-pets\u002Fcli mcp`.\n- A managed `openpets.md` instruction file.\n- The `@open-pets\u002Fopencode` plugin for automatic reactions.\n- Global desktop setup and project-local `.opencode` setup.\n\nProject-local setup:\n\n```bash\nnpx -y @open-pets\u002Fcli@latest configure --agent opencode --pet \u003CpetId>\n```\n\nSee [`docs\u002Fopencode.md`](docs\u002Fopencode.md) for global config selection, plugin behavior, project-local setup, and safety rules.\n\n### Generic MCP clients\n\nAny MCP-capable editor or coding agent can talk to OpenPets through the MCP server while the desktop app is running.\n\n```json\n{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@open-pets\u002Fmcp@latest\"]\n    }\n  }\n}\n```\n\nTo target a specific installed non-default pet:\n\n```json\n{\n  \"mcpServers\": {\n    \"openpets\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@open-pets\u002Fmcp@latest\", \"--pet\", \"\u003CpetId>\"]\n    }\n  }\n}\n```\n\nAvailable MCP tools:\n\n- `openpets_status` - check whether OpenPets is reachable and which pet is targeted.\n- `openpets_react` - set a short reaction on the target pet.\n- `openpets_say` - show a short safe speech bubble, optionally with a reaction.\n\n`openpets_say` messages must be short, single-line, and must not look like code, logs, secrets, URLs, or file paths.\n\n## How it works\n\n```text\nClaude Code \u002F OpenCode \u002F Pi \u002F MCP client\n  -> @open-pets\u002Fmcp, @open-pets\u002Fcli mcp, @open-pets\u002Fclaude hook, @open-pets\u002Fopencode plugin, or @open-pets\u002Fpi extension\n  -> @open-pets\u002Fclient\n  -> OpenPets desktop local IPC discovery file\n  -> OpenPets desktop IPC socket\u002Fpipe\n  -> default pet or selected agent pet window\n```\n\nThe desktop app writes a local discovery file containing an IPC endpoint and a per-run token. Clients must send that token with every request.\n\nFor Windows desktop + WSL agent setups, see [`docs\u002Fwsl-ipc.md`](docs\u002Fwsl-ipc.md) for the opt-in TCP transport.\n\nWhen an integration is configured with `--pet \u003CpetId>`, OpenPets asks the desktop app for a short-lived lease. Valid installed non-default pets open as explicit agent pet windows. Missing, invalid, broken, built-in, or default pet requests fall back to the desktop default pet.\n\n## Reactions and speech\n\nAutomatic hooks are decorative and best-effort. They do not approve, deny, block, or change agent behavior.\n\nCommon reaction mapping:\n\n| Agent activity | Reaction |\n| --- | --- |\n| Prompt\u002Fchat starts | `thinking` |\n| File edit\u002Fwrite\u002Fpatch | `editing` |\n| Test-like shell command | `testing` |\n| Permission request | `waiting` |\n| Successful idle\u002Fstop | `success` |\n| Session\u002Ferror stop | `error` |\n\nGeneric shell activity is intentionally quiet by default. Hook\u002Fplugin speech is throttled and selected from local static message pools such as `Approval needed` or `Something failed`.\n\n### Pi extension package\n\nOpenPets includes an experimental Pi extension package at `@open-pets\u002Fpi`. Pi support is extension-first rather than MCP-first: the extension listens to Pi lifecycle\u002Ftool events and sends local best-effort reactions through `@open-pets\u002Fclient`.\n\n```bash\npi install npm:@open-pets\u002Fpi\npi install -l npm:@open-pets\u002Fpi\n```\n\nInside Pi, the extension registers `\u002Fopenpets status`, `\u002Fopenpets test`, `\u002Fopenpets react \u003Creaction>`, and `\u002Fopenpets say \u003Cmessage>`. Automatic events do not forward prompts, assistant text, tool output, file contents, paths, URLs, or secrets. Real Pi CLI install validation is still required before marking the integration fully supported.\n\n## Development\n\n### Requirements\n\n- Node.js 20+\n- pnpm 11+\n- TypeScript\n\nNo Bun runtime is required for development.\n\n### Install\n\n```bash\npnpm install\n```\n\n### Run the desktop app\n\n```bash\npnpm dev:desktop\n```\n\nEquivalent package command:\n\n```bash\npnpm --filter @open-pets\u002Fdesktop dev\n```\n\n### Checks\n\n```bash\npnpm check\npnpm typecheck\npnpm build\npnpm test\n```\n\nOpenPets currently uses lightweight Node contract checks instead of a full test framework. See [`docs\u002Ftesting.md`](docs\u002Ftesting.md).\n\n### Package desktop builds\n\n```bash\npnpm package:desktop:dir\npnpm package:desktop\n```\n\nRelease process details live in [`docs\u002Frelease.md`](docs\u002Frelease.md).\n\n## Workspace layout\n\n```text\napps\u002Fdesktop              Electron desktop app\npackages\u002Fclient           @open-pets\u002Fclient, local IPC client\npackages\u002Fmcp              @open-pets\u002Fmcp, MCP stdio server\npackages\u002Fclaude           @open-pets\u002Fclaude, Claude command and hook helpers\npackages\u002Fopencode         @open-pets\u002Fopencode, OpenCode config and plugin integration\npackages\u002Fpi               @open-pets\u002Fpi, Pi extension package\npackages\u002Fagent-events     Shared safe agent event speech helpers\npackages\u002Fcli              @open-pets\u002Fcli, user-run CLI and MCP\u002Fhook entrypoints\npackages\u002Fpet-format       @open-pets\u002Fpet-format, pet\u002Fcatalog format types\ndocs\u002F                     Documentation\n```\n\n## Documentation\n\n- [`docs\u002Fclaude-integration.md`](docs\u002Fclaude-integration.md) - Claude Code setup, MCP, memory, hooks, and safety.\n- [`docs\u002Fopencode.md`](docs\u002Fopencode.md) - OpenCode global\u002Fproject setup, plugin behavior, and safety.\n- [`docs\u002Fwsl-ipc.md`](docs\u002Fwsl-ipc.md) - Windows desktop + WSL MCP transport setup.\n- [`docs\u002Ftesting.md`](docs\u002Ftesting.md) - test\u002Fcheck strategy.\n- [`docs\u002Frelease.md`](docs\u002Frelease.md) - desktop release process.\n- [`docs\u002Fworkflow.md`](docs\u002Fworkflow.md) - project workflow notes.\n\n## Safety and privacy notes\n\n- OpenPets local IPC is local-only and protected by a per-run token.\n- Hook\u002Fplugin errors are swallowed unless debug logging is enabled.\n- Automatic speech is static and local; it does not include model-generated prompt text.\n- Tool inputs and command text are used only for coarse reaction classification.\n- Managed setup preserves unrelated user config and removes only OpenPets-managed entries.\n- Speech validation rejects code-like, secret-like, URL-like, path-like, or multiline messages.\n","OpenPets 是一款为AI编码助手设计的桌面宠物应用。它通过MCP协议与Claude Code等编码助手连接，使用户能够在桌面上实时查看编码状态和进度。该项目使用TypeScript开发，支持多种AI代理，并且可以加载安装的动画宠物包。每个代理或项目都可以配置自己的宠物窗口，以趣味化的方式展示思考、编辑、测试、等待审批等过程中的状态变化。OpenPets适用于希望在日常编程工作中增添乐趣的开发者，特别是在使用AI辅助工具进行代码编写时，能够提供更加生动直观的状态反馈体验。",2,"2026-06-11 03:31:07","CREATED_QUERY"]