Clawd on Desk
A pixel desktop pet that watches Claude Code, Codex, Cursor and other AI coding agents in real time — so you don't have to.
Integrations inject hooks into many agent config files (~/.claude, ~/.codex, etc.); most are opt-in with uninstall scripts, but Claude/Codex auto-sync writes user configs by default — not top marks. Permission bubbles offer Ask-always / tools-only / auto-approve modes, with auto-approve degrading after restart (good), but auto-approve accepts unrecognized request names — deducted. Data-flow docs cover statusline non-scraping, local 0600 secret files, private-channel advice; good but asserted rather than code-verified. Pinned deps plus a dependency-security-floor test. Uninstall/cleanup scripts for rollback. Author, AGPL-3.0, and NOTICE.md present.
package. description still says 'reacts to your Claude Code sessions' while README covers 20+ agents — minor self-inconsistency, deducted. Dependency ranges reasonable (Node>=22.12, pinned koffi 2.16.3) with postinstall verification. CI failure paths and assertions are thorough, but runtime error-message quality cannot be verified statically.
Target scenario (multi-agent monitoring desktop pet) clearly described; Windows/macOS/Linux multi-arch coverage earns full marks. Per-agent capability boundaries (state-only vs permission bubbles) are noted item by item, but many 'phase 1' limits are prose-only — 2. Trigger mapping docs (state-mapping.md) and environment fit (WSL limits, multi-monitor) documented.
Good doc architecture: multi-language READMEs, docs/guides/, install notes covering prebuilt installers and source. Full AGPL-3.0 text consistent with package. (AGPL-3.0-only) — full marks. Version 1.0.0 and release badges exist but no CHANGELOG file seen — deducted on versioning. Individual maintainer with credited contributor (@Bynlk) — average.
The product output (animations, session panel, permission bubbles, remote notifications) has clear marginal value for 'walk away from the terminal'; low friction overall, though memory footprint is undeclared — cost_benefit deducted 1.
Most feature claims map to hooks/*.js scripts, docs/guides, and dedicated CI tests (telegram-retirement, koffi-smoke, audit-packaged-native) — good traceability, but static review did not verify implementations file-by-file. Facts and inferences are mostly separated; performance/stability claims lack runtime evidence — deducted.
- Auto-approve permission mode may approve unrecognized request names; keep 'Ask always' by default.
- Installation writes to multiple agents' global config files; review install/uninstall hook scripts before use.
- Publisher is unverified and identity unknown; audit the hooks/ install scripts yourself.
- Slack/Telegram/Feishu messages may include session titles and paths — use a private channel.
- The LAN PWA bridge is read-only and token-protected, but enable only on trusted networks.
- This is a static review; no code was executed and runtime behavior is unverified.
What does this agent do, and when should you use it?
Clawd on Desk is an open-source (AGPL-3.0) Electron desktop pet for Windows, macOS and Linux that mirrors what your AI coding agents are doing. It reads agent lifecycle state through command hooks, HTTP permission hooks, log polling or plugin integrations covering more than twenty local agents — Claude Code, Codex CLI, Copilot CLI, Gemini CLI, Cursor Agent, Qwen Code and many others — and drives a pixel character through 12 animated states: thinking, typing, subagent groove, juggling, error, celebration and sleep. When a permission-capable agent requests approval, Clawd pops a floating bubble card for one-click Allow/Deny, with optional remote approval via Telegram and Feishu/Lark and notification-only push to Slack. The app also ships a multi-session dashboard and HUD, a private local Recap, subscription quota rings, a read-only LAN PWA mobile mirror, three built-in themes (Clawd the crab, Calico the cat, Cloudling) plus custom themes and Codex Pet pack imports. Prebuilt installers exist for Windows x64/ARM64, macOS DMG, Linux AppImage/deb and Homebrew; Claude Code and Codex hooks auto-register on first launch while the rest are enabled from Settings → Agents.
Clawd runs as an Electron desktop process. For Claude Code it performs full integration via command hooks plus HTTP permission hooks; for Codex CLI it uses official hooks with a JSONL fallback polling ~/.codex/sessions/; for Gemini, Qwen, Cursor, CodeBuddy, Kimi and others it registers command hooks by writing each agent's config file (e.g. ~/.gemini/settings., ~/.cursor/hooks., ~/.qwen/settings.), also installable via scripts like npm run install:gemini-hooks. It maps agent lifecycle events to 12 animation states (idle, thinking, typing, building, subagent groove, juggling, error, happy, notification, sweeping, carrying, sleeping), tracks each session independently across simultaneously running agents, and resolves them to the highest-priority state. Permission requests appear as stacked bubble cards bottom-right with global hotkeys Ctrl+Shift+Y / Ctrl+Shift+N and three handling modes (Ask every time / Question prompts only / Auto-approve), plus remote Allow/Deny through Telegram and Feishu (Lark); Slack receives notification-only Block Kit cards. The Dashboard (right-click → Open Dashboard) shows live sessions, recent events and aliases with one-click terminal focus; Orbit rings and Dashboard bars show subscription quota (local Claude collection is off by default and uses the official status-line rate_limits payload). Settings → Mobile / PWA generates a token-gated LAN pairing URL for a read-only phone mirror of session states. Custom themes are scaffolded with node scripts/create-theme.js, require at minimum 1 eye-tracking SVG plus 7 GIF/APNG files, and can be validated with node scripts/validate-theme.js.
- A Claude Code user kicking off a long refactor or test run: walk away and let the crab's sleeping or celebration animation tell you when it's done instead of polling the terminal.
- A power user running Claude Code, Codex CLI and Cursor Agent in parallel: Clawd tracks each session independently and shows one subagent as a headphones groove, two or more as juggling.
- A security-conscious developer: approve or deny file-write and command permissions from the desktop bubble, or remotely from Telegram/Feishu, without babysitting the terminal.
- A remote/WSL worker: deploy hooks via Settings → Remote SSH to a server-side Claude Code or Codex install and still get state and permission bubbles locally.
- Someone quantifying their AI-assisted coding: review accepted agent activity by hour/day/month in Recap and watch subscription quota in Dashboard bars.
- A theme tinkerer: scaffold a custom character with
create-theme.jsor import an existing Codex Pet zip animation pack.
What are this agent's strengths and limitations?
- Exceptional agent coverage: beyond out-of-the-box Claude Code and Codex, the README documents concrete hook/plugin wiring for Copilot, Gemini, Cursor, Qwen, Kiro, opencode, Hermes and many more.
- Permission approval is genuinely actionable: desktop bubbles, global hotkeys, and Telegram/Feishu remote Allow/Deny, while state-only agents explicitly keep their native permission flow.
- Fine-grained multi-session awareness: independent per-session tracking with the one-subagent-headphones vs two-plus-juggling mapping makes concurrency legible at a glance.
- Clear local privacy boundaries: Recap stores only minimized local data with no telemetry; the mobile PWA is a LAN-only, token-gated read-only mirror; Slack secrets live in a local env file with 0600 permissions.
- Many integrations are phase-1/state-only: Antigravity, Pi, CodeWhale, QoderWork, TraeCode and others show animations but no permission bubbles, and some (DeepSeek Harness, TraeCode) are explicitly experimental — check the known-limitations table before adopting.
- Except for Claude Code and Codex, every other agent's hooks must be installed manually from Settings → Agents and kept in sync, which adds setup cost.
- Slack is notification-only — it cannot Allow or Deny; the mobile PWA is read-only too, with in-browser approval still on the roadmap.
- Running from source pulls Electron build tooling and a large node_modules tree, suitable mainly for contributors and debugging.
- The Clawd character is Anthropic's property and the project is an unofficial fan work; bundled artwork is not covered by AGPL-3.0, so redistribution of assets needs care.
How do you install or deploy this agent?
For normal use, download a prebuilt installer from GitHub Releases: Windows x64 or ARM64 Clawd-on-Desk-Setup-<version>-*.exe, macOS .dmg, or Linux .AppImage/.deb. On macOS or Linux x86_64 you can also run brew install --cask clawd-on-desk. To run from source you need Node.js: git clone https://github.com/rullerzhou-afk/clawd-on-desk.git && cd clawd-on-desk && npm install && npm start. On first launch Clawd auto-registers Claude Code and Codex hooks; other agent integrations are installed from Settings → Agents as needed.
How do you use this agent?
After installing and launching, Clawd sits on your desktop with Claude Code / Codex integrations auto-synced. To attach other agents, open Settings… → Agents and install the hook or plugin for each. Right-click or use the tray menu to open the Dashboard (live sessions), Recap (activity history), Mini Mode (edge-docked mini mode) and Do Not Disturb. When a permission bubble appears, click Allow/Deny or press Ctrl+Shift+Y / Ctrl+Shift+N; configure Telegram or Feishu channels for remote approval. Switch or import themes under Settings → Theme, and pair your phone via the URL in Settings → Mobile / PWA.