Animated terminal pets for CLI coding agents — Claude Code, OpenCode, Pi, Gemini CLI, Codex CLI, Cursor CLI, Aider.
Features • Installation • Per-agent setup • Slash Commands * Discord
campy brings delightful ASCII pets to your terminal sidebar. Pets animate through states, react to coding events, and display contextual speech bubbles—adding personality to your coding sessions.
- 4 Pet Types: Cat, Hamster, Ghost, and Robot
- 7 Animation States: idle, happy, sleeping, eating, playing, excited, sad—with multi-frame animations and blinking
- Speech Bubbles: Context-aware messages ("Edited file!", "Thinking...", "Need a hand?")
- Happiness System: Feed, play, or pet your companion to increase happiness
- Event Reactions: Automatic responses to tool use, file edits, errors, and idle states
- Multi-agent: One CLI + per-agent adapters for Claude Code, OpenCode, Pi, Gemini CLI, Codex CLI, Cursor CLI, and Aider
- MCP server: One stdio server unlocks Gemini / Codex / Cursor at once
Prerequisite: bun (
curl -fsSL https://bun.sh/install | bash). The CLI is a single TypeScript file with a#!/usr/bin/env bunshebang — no build step.
campy isn't on npm yet. Pick one of these:
# via bun
bun add -g github:dropdevrahul/campy
# or via npm
npm install -g github:dropdevrahul/campyThis registers campy on your $PATH. Verify:
campy statusgit clone https://github.com/dropdevrahul/campy.git ~/work/campy
cd ~/work/campy && bun install
chmod +x cli/campy.ts
ln -s "$PWD/cli/campy.ts" ~/.bun/bin/campy # or any dir on $PATHcampy setupThis detects which agents are installed on your machine (~/.claude, ~/.gemini, ~/.codex, ~/.cursor, ~/.pi, .opencode/, .aider.conf.yml) and wires each natively. Or install for one agent:
campy install claude-code # | opencode | pi | gemini | codex | cursor | aidercampy watch # run inline in any terminal
campy attach # auto-split a side pane (tmux / zellij / wezterm / kitty)| Agent | Surface | Install |
|---|---|---|
| Claude Code | statusline + hooks | campy install claude-code |
| OpenCode | native sidebar widget | campy install opencode |
| Pi | native sidebar widget | campy install pi |
| Gemini CLI | MCP tools (inline ASCII card) | campy install gemini |
| Codex CLI | MCP tools (inline ASCII card) | campy install codex |
| Cursor CLI | MCP tools (inline ASCII card) | campy install cursor |
| Aider | .git/hooks/post-commit |
campy install aider |
For agents with no built-in render surface, run campy attach in a side pane.
The Claude Code adapter is zero-token for normal operation. Hooks and the statusline are bash scripts run outside the model. Slash commands (/campy:feed, etc.) cost a small prompt when you invoke them.
The slash-command prefix depends on the host:
- OpenCode / Pi:
/pet feed,/pet play,/pet robot, … - Claude Code:
/campy:feed,/campy:play,/campy:pet,/campy:switch <pet> - MCP agents (Gemini / Codex / Cursor): call the tools
campy_feed,campy_play,campy_pet,campy_switch,campy_status
| Command | Effect |
|---|---|
feed |
Feed your pet (+15 happiness) |
play |
Play with your pet (+20 happiness) |
pet |
Pet your pet (+10 happiness) |
sleep |
Put pet to sleep |
wake |
Wake pet |
status |
Show mood & happiness |
switch <pet> |
cat | hamster | ghost | robot |
| Pet | States | Blinking | Emoji |
|---|---|---|---|
| Cat | 7 states | Yes (layered eyes) | 🐱 |
| Hamster | 7 states | Yes (frame-step) | 🐹 |
| Ghost | 7 states | Yes (layered eyes) | 👻 |
| Robot | 7 states | Yes (layered eyes) | 🤖 |
core/ # portable pet logic (animation, store, runtime, render)
cli/campy.ts # the campy binary (bun)
adapters/
├── claude-code/ # hooks + statusline + slash commands
├── pi/ # in-process TUI widget
├── mcp/ # stdio MCP server (Gemini / Codex / Cursor)
└── gemini/ # gemini-extension.json + GEMINI.md
.opencode/ # OpenCode plugins (re-export from core/)
.claude-plugin/ # Claude Code marketplace manifest
ghost-pet/ # legacy standalone Bash plugin (kept for back-compat)
See CLAUDE.md for the full architecture, and docs/superpowers/specs/2026-06-13-cli-agent-support-design.md for the multi-agent design spec.
