DEV Community

老船长PZ_Jack
老船长PZ_Jack

Posted on

Copiwaifu: A Live2D Desktop Pet That Syncs with Claude Code, Codex, Copilot, and More

Demo video: https://youtu.be/Tgb2XZG03H4?si=96d6ScOvJU9hIJlQ


What Is This

Copiwaifu is a Live2D desktop pet that hooks into your AI coding tools. She eavesdrops on your conversations with Claude Code, GitHub Copilot, Codex, Gemini CLI, and OpenCode, then reacts on your desktop in real time.

When the AI is thinking, she furrows her brow. When it calls a tool, she shifts her pose. When a task finishes or crashes, she can even comment on what happened based on context. She's your cute AI co-pilot riding shotgun while you vibe code (Copi~).

Think of her as a digital rubber duck for debugging — or a cyber companion (your call). You can also swap in any Live2D model you like.

Technical Details

Stack

  • Frontend: Vue 3 + TypeScript + Vite 6
  • Desktop: Tauri 2 + Rust (uses macOS private APIs for click-through windows)
  • Live2D Rendering: PixiJS 8 + easy-live2d
  • AI Runtime: Node.js sidecar + Vercel AI SDK + esbuild bundle

State Machine

Raw hook events pass through a Rust-side reducer and map to six states:

  • idle — Chilling
  • thinking — AI is reasoning
  • tool_use — AI is calling tools
  • complete — Task finished
  • error — Something broke
  • needs_attention — Needs your input

Each state can be bound to a different Live2D motion group. If you don't configure bindings manually, the app auto-matches common motion group names (Idle, Thinking, ToolUse, Complete).

AI Talk Boundaries

AI Talk is off by default. When enabled, it only triggers when a session enters complete or error, and only once per turn. The information it receives is limited to session metadata already stored by Copiwaifu: agent type, working directory, session title, recent events, and summaries. It does not read full conversation logs, project files, or source code.

If the model call fails, it silently falls back to static bubbles — no error messages appear on the pet. Generated text is never written back to the original AI CLI.

Supported model providers: OpenAI, Anthropic, Google Gemini, DeepSeek, Alibaba Bailian/Qwen, Moonshot Kimi, Zhipu GLM, Volcengine Ark/Doubao, Baidu Qianfan/ERNIE, Tencent Hunyuan, MiniMax, and any OpenAI-compatible API.

Custom Models

The app ships with a built-in Live2D model called Yulia. You can import your own model directory in settings — the app validates that it contains a valid .model3.json entry file.

Getting Started

Currently macOS only (both Apple Silicon and Intel). PRs for other platforms are welcome.

Download from GitHub Releases, drag to Applications, then run in terminal:

xattr -dr com.apple.quarantine /Applications/copiwaifu.app
Enter fullscreen mode Exit fullscreen mode

This clears the macOS unsigned-app restriction. After that, it opens normally.

Once launched, she auto-installs hooks and starts the local server. Just use Claude Code or any other AI tool as usual — the pet reacts on its own. For AI Talk, head to settings, pick a model provider, and fill in your API key and model ID.

Contributing


bash
# Requires Node.js, pnpm, Rust toolchain
pnpm install
pnpm run  # equivalent to pnpm tauri dev

---

Questions or ideas? Feel free to open an Issue.

GitHub: https://github.com/Panzer-Jack/Copiwaifu

Website: https://copiwaifu.panzer-jack.cn/
Enter fullscreen mode Exit fullscreen mode

Top comments (0)