Desktop Pet is a playful desktop penguin + focus sidekick. It floats above your windows, reacts to interactions, and turns your Pomodoro sessions into progression, coins, quests, and customization unlocks.
- Your penguin lives on your desktop and reacts to pats, care actions, and focus progress.
- Focus sessions reward coins and XP, which feed directly into pet growth and unlocks.
- Quests, events, and accessories keep the loop fresh without becoming noisy.
- You can theme both the app UI and your pet setup with loadouts.
- Floating Pet Overlay: transparent, always-on-top companion window
- Calm Controls: Quiet Mode, Focus Mode, animation budget, and context-aware chill
- Pomodoro Modes: 15/5, 25/5, and 50/10 presets with runtime persistence
- Multi-Species Pets: data-driven species packs with selectable pet species
- Pet Progression: evolution stages, care stats, personality state, and calm questing
- Quests + Events: rolling events, active quests, and completion rewards
- Shop + Coins: accessory catalog with ownership and purchase tracking
- Tasks + Daily Goals: lightweight productivity tracking tied to session outcomes
- Achievements: 20+ unlockable achievements across 5 categories (focus, streak, pet care, progression, special)
- Focus Guardrails: allowlist/blocklist host matching, interventions, and event history
- Customization: skins, scenes, themes, and saved loadouts
- Photo Booth: user-triggered shareable pet card screenshots
- Seasonal Cosmetic Packs: optional, local-only cosmetic bundles
- System Tray Controls: quick timer start/pause/resume/reset + preset switching
- Local-first data storage with schema normalization on startup
- Snapshot export/import for backup and restore
- One-click full local reset to defaults
- Diagnostics export for debugging and support workflows
- CI quality gates for frontend checks and Tauri backend/bundle checks
- Release evidence policy (manual QA run + CI gate summary in release PRs)
Built with Tauri 2, React, TypeScript, and TailwindCSS. The pet is SVG-based, and app data is stored locally on-device.
- Node.js 20+
- Rust toolchain (stable)
- Xcode Command Line Tools on macOS (
xcode-select --install)
npm install
npm test
npm run test:smoke
npm run test:pack-qa
npm run tauri devUse this when you want to keep local disk usage down while developing:
npm install
npm run dev:leanWhat npm run dev:lean does:
- Starts the app with the normal
npm run tauri devflow. - Redirects heavy build caches to temporary directories (Cargo target + Vite cache).
- Automatically removes temporary caches and heavy build artifacts when you exit the app.
- Prints before/after disk usage snapshots for major bloat paths.
Disk vs speed tradeoff:
- Lean mode uses less persistent disk.
- Lean mode is usually slower on next startup because caches are rebuilt.
- Normal
npm run tauri devkeeps caches in-repo for faster repeated starts.
Target heavy build artifacts only:
npm run clean:heavyThis removes:
dist/artifacts/src-tauri/target/node_modules/.vite/
Full local reproducible cleanup:
npm run clean:allThis runs clean:heavy and also removes:
node_modules/
./scripts/verify.shThis runs:
npm testnpm run test:smokenpm run test:pack-qanpm run buildnpm run check:performance-budgetnpm run test:tauri-preflightcargo test --manifest-path src-tauri/Cargo.tomlnpm run tauri build
npm run tauri buildBuild artifacts are written to src-tauri/target/release/bundle/.