{"slug": "pawbot-an-ai-desktop-puppy-that-eats-your-files", "title": "PawBot - An AI Desktop Puppy That Eats Your Files 🐾", "summary": "Developer Varshithvhegde built PawBot, a Chrome extension and browser demo featuring a pixel-art golden retriever puppy powered by Google Gemini 2.0 Flash Lite. The desktop pet roams the screen, chases and eats dropped files or emoji, and generates mood-aware barks based on user interactions. Built with vanilla JavaScript and Canvas, it uses a Shadow DOM overlay and esbuild bundling to work as a Chrome content script.", "body_md": "*This is a submission for Weekend Challenge: Dog Days Edition*\n\nRemember **Neko the cat** and those **Tamagotchi desktop pets** from the 90s? I rebuilt that magic for 2026 — except your pet is a golden retriever puppy powered by an LLM.\n\n**PawBot** is a Chrome extension + browser demo where a cute **pixel puppy**:\n\nFeed it a `.pdf`\n\nand it might say *\"Mmm, crunchy homework!\"* Ignore it for 40 seconds and it curls up with sad puppy eyes.\n\nFull walkthrough on YouTube:\n\n**Quick try locally:**\n\n```\ngit clone https://github.com/Varshithvhegde/pawbot.git\ncd pawbot/web\npython3 -m http.server 8080\n# → http://localhost:8080\n```\n\nOr load the Chrome extension: clone the repo → `./scripts/sync-extension.sh`\n\n→ Load unpacked → select the `extension/`\n\nfolder.\n\n**An AI desktop puppy that lives in your browser.** A Tamagotchi/Neko-style pixel pet that roams your screen, chases your cursor, eats files & emoji you drop, and barks mood-aware responses powered by **Google Gemini**.\n\nBuilt for the [DEV Weekend Challenge: Dog Days Edition](https://dev.to/challenge).\n\n🎬 **Watch on YouTube** · 📝 ** DEV submission** · 🔗\n\n| Feature | Description |\n|---|---|\n🐕 Pixel puppy |\nFull sprite animations — idle, walk, run, eat, sleep, bark, wave |\n🍖 Feed anything |\nDrop files, emoji, or paste text — pup chases food then eats it |\n🏃 Chase mechanics |\nFood falls from above → pup runs to it → 4-frame eat animation |\n💬 AI barks |\nGoogle Gemini generates short mood-based responses |\n😴 Sleep mode |\nIgnore pup 40s → falls asleep with Zzz particles |\n❤️ Pet & wave |\nClick to pet, double-click to wave paw |\n⌨️ Hotkeys |\n`F` throw treat · `B` bark · `Esc` |\n\n**Repo:** [github.com/Varshithvhegde/pawbot](https://github.com/Varshithvhegde/pawbot)\n\n```\nBrowser tab\n    │\n    ├── Content script (bundled IIFE via esbuild)\n    │       └── Shadow DOM canvas overlay (immune to page CSS)\n    │\n    ├── Pet engine (Canvas 2D state machine)\n    │       idle → walk → run → eat → sleep → bark → wave\n    │\n    ├── Sprite loader (33 AI-generated pixel frames)\n    │\n    └── Bark engine → Google Gemini API\n            mood + hunger + last meal → short bark text\n```\n\n| Decision | Why |\n|---|---|\nVanilla JS + Canvas |\nZero build step for the web demo; screen-recording friendly |\nShadow DOM overlay |\nPage CSS can't hide the pup (learned this the hard way on AI Studio) |\nesbuild bundle |\nChrome content scripts can't use ES `import` — single bundled file fixes it |\nAI sprite sheet |\nGenerated pixel art, auto-sliced with a Python script into 33 transparent PNGs |\nChase-then-eat flow |\nFood drops → pup runs → 4-frame eat animation → crumb particles |\nFallback barks |\nWorks offline without an API key; Gemini enhances when configured |\n\n| State | Sprites |\n|---|---|\n| Idle | 4-frame breathing loop |\n| Walk / Run | Directional left & right sprites |\n| Eat | 4-frame chew cycle + flying food emoji |\n| Sleep | Curled up + floating Zzz particles |\n| Mood | Happy, sad, curious, excited overlays |\n| Bark | Shows while AI speech bubble is active |\n| Wave | Paw idle + 3-frame wave on pet/double-click |\n\n| Action | How |\n|---|---|\n| Feed | Drag & drop file or emoji |\n| Feed | Paste text/emoji |\n| Pet | Click the puppy |\n| Wave | Double-click |\n| Throw treat | Press `F`\n|\n| Bark | Press `B`\n|\n\nLive **hunger & happiness HUD** in the bottom-left corner.\n\nPawBot uses **Google Gemini 2.0 Flash Lite** — not as a chatbot, but as a **personality engine** for a desktop pet.\n\nEvery bark sends real context to Gemini:\n\n| Event | Context sent to Gemini | Example bark |\n|---|---|---|\nFed a `.py` file |\n`\"Just ate: main.py (file)\"` , mood: happy |\n\"Python for breakfast? Bold choice.\" |\n| Ignored 40s+ | mood: lonely, ignoredMs: 45000 | \"...hello? I saved you a spot.\" |\n| Poked | happiness: 85, mood: excited | \"Hehe! Belly rubs detected!\" |\n| Hungry | hunger: 82/100 | \"Is that food? IS THAT FOOD?\" |\n\nFree API key from [Google AI Studio](https://aistudio.google.com/apikey) → paste in extension popup. Falls back to canned barks if no key is set.\n\nThanks for reading! If PawBot made you smile, leave a 🐾 in the comments.\n\nBuilt for **International Dog Day** 🐕 · [DEV Weekend Challenge: Dog Days Edition](https://dev.to/challenges/weekend-2026-08-13)", "url": "https://wpnews.pro/news/pawbot-an-ai-desktop-puppy-that-eats-your-files", "canonical_source": "https://dev.to/varshithvhegde/pawbot-an-ai-desktop-puppy-that-eats-your-files-301a", "published_at": "2026-08-15 09:39:22+00:00", "updated_at": "2026-08-15 10:12:05.694433+00:00", "lang": "en", "topics": ["generative-ai", "ai-products", "developer-tools"], "entities": ["Varshithvhegde", "PawBot", "Google Gemini", "Google AI Studio", "Chrome", "Canvas", "Shadow DOM", "esbuild"], "alternates": {"html": "https://wpnews.pro/news/pawbot-an-ai-desktop-puppy-that-eats-your-files", "markdown": "https://wpnews.pro/news/pawbot-an-ai-desktop-puppy-that-eats-your-files.md", "text": "https://wpnews.pro/news/pawbot-an-ai-desktop-puppy-that-eats-your-files.txt", "jsonld": "https://wpnews.pro/news/pawbot-an-ai-desktop-puppy-that-eats-your-files.jsonld"}}