Mu Pet

WarnAudited by ClawScan on May 10, 2026.

Overview

The desktop pet mostly matches its description, but its localhost control API can be abused to run code inside a persistent Electron app.

Review or patch the local API before installing. If you still use it, prefer manual launch over auto-launch, install only on macOS, pin dependencies, and avoid sending untrusted text or state values to the localhost API.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A local process that can reach the pet API may be able to run commands as the user, rather than only changing the pet's animation state.

Why it was flagged

The localhost POST body controls values inserted into an executeJavaScript string, while the Electron renderer has Node integration enabled and context isolation disabled. This can turn a state-change API into arbitrary JavaScript/Node execution for a local caller.

Skill content
const { state, status, bubble, duration } = req.body || {}; ... win.webContents.executeJavaScript(`window.setState("${state}", "${text}", ${dur})`); ... nodeIntegration: true, contextIsolation: false
Recommendation

Do not run this version as a persistent app unless the API is fixed. Validate state against an allowlist, require numeric duration, pass data via IPC/JSON instead of string-built JavaScript, enable contextIsolation, and disable nodeIntegration where possible.

What this means

The pet may request or rely on macOS automation/accessibility behavior to detect the active window position.

Why it was flagged

The app executes a local AppleScript command to inspect the frontmost window bounds. This matches the stated window-avoidance feature, but it is still shell-based OS automation.

Skill content
const { execSync } = require('child_process'); ... execSync(`osascript -e '${script.replace(/'/g, "'\\''")}'`, { timeout: 1000 })
Recommendation

Keep this command limited to window geometry, avoid adding user-controlled input, and disclose any macOS permissions users may need to grant.

What this means

If installed with this script, the pet will keep running after login until the LaunchAgent is unloaded or the uninstall script is run.

Why it was flagged

The installer creates and loads a macOS LaunchAgent that starts the pet on login and keeps it alive. This is coherent with an always-on desktop pet and is also documented in SKILL.md.

Skill content
<key>RunAtLoad</key><true/> ... <key>KeepAlive</key><true/> ... launchctl load "$PLIST"
Recommendation

Only use the installer if you want auto-launch. Otherwise run the app manually, and use the provided uninstall script or remove the LaunchAgent to stop persistence.

What this means

Installation may download dependency versions that were not exactly reviewed in these artifacts.

Why it was flagged

The app depends on npm packages using caret version ranges, and no lockfile is included in the manifest. A user-directed npm install may resolve newer compatible dependency versions.

Skill content
"dependencies": { "electron": "^35.0.0", "express": "^4.21.0" }
Recommendation

Use a package lockfile or exact pinned versions, and install only from a trusted npm environment.