Install
openclaw skills install mu-petAnimated pixel art desktop pet that roams the screen as an always-on-top Electron overlay. The pet avoids the cursor and active windows, walks along screen e...
openclaw skills install mu-petA pixel art desktop pet (default: lobster 🦞) that roams the screen as a transparent Electron overlay.
cd <skill-dir>/assets/app
npm install
npx electron .
The pet starts at the bottom center of the screen and begins roaming.
Local API on port 18891 (127.0.0.1 only):
GET /state - returns {"state":"idle","statusText":""}POST /state - set state: {"state":"talking","bubble":"hello!"}| State | Behavior |
|---|---|
idle | Gentle bob, occasional claw snap |
walking | Moves along current surface |
climbing | Transitions between floor/walls/ceiling |
fleeing | Running from cursor or active window |
working | Sits at tiny laptop with sparkle particles |
thinking | Slow sway, thought dots appear |
sleeping | Eyes closed, zzz bubbles float up |
talking | Faces user, shows speech bubble, auto-returns to idle |
snapping | Claw snap animation |
Hit the API at the start of responses to make the pet face the user:
curl -s -X POST http://127.0.0.1:18891/state \
-H 'Content-Type: application/json' \
-d '{"state":"talking","bubble":"working on it..."}'
Set to working during long operations, thinking while reasoning.
The talking state auto-returns to idle after the bubble duration expires.
Create a LaunchAgent for auto-start on login. Use label ai.openclaw.desktop-pet.
# Install as LaunchAgent
cat > ~/Library/LaunchAgents/ai.openclaw.desktop-pet.plist << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>ai.openclaw.desktop-pet</string>
<key>ProgramArguments</key><array>
<string>APP_PATH/node_modules/.bin/electron</string>
<string>APP_PATH</string>
</array>
<key>WorkingDirectory</key><string>APP_PATH</string>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key><string>/tmp/desktop-pet.log</string>
<key>StandardErrorPath</key><string>/tmp/desktop-pet.log</string>
<key>EnvironmentVariables</key><dict>
<key>PATH</key><string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
</dict>
</dict></plist>
EOF
Replace APP_PATH with the absolute path to the app directory.
The pet is drawn programmatically via Canvas pixel art in index.html. To change the creature:
lobsterBase() and lobsterFront() functions with new pixel layouts{x, y, w, h, color} at 3x scale