# PawBot - An AI Desktop Puppy That Eats Your Files 🐾

> Source: <https://dev.to/varshithvhegde/pawbot-an-ai-desktop-puppy-that-eats-your-files-301a>
> Published: 2026-08-15 09:39:22+00:00

*This is a submission for Weekend Challenge: Dog Days Edition*

Remember **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.

**PawBot** is a Chrome extension + browser demo where a cute **pixel puppy**:

Feed it a `.pdf`

and it might say *"Mmm, crunchy homework!"* Ignore it for 40 seconds and it curls up with sad puppy eyes.

Full walkthrough on YouTube:

**Quick try locally:**

```
git clone https://github.com/Varshithvhegde/pawbot.git
cd pawbot/web
python3 -m http.server 8080
# → http://localhost:8080
```

Or load the Chrome extension: clone the repo → `./scripts/sync-extension.sh`

→ Load unpacked → select the `extension/`

folder.

**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**.

Built for the [DEV Weekend Challenge: Dog Days Edition](https://dev.to/challenge).

🎬 **Watch on YouTube** · 📝 ** DEV submission** · 🔗

| Feature | Description |
|---|---|
🐕 Pixel puppy |
Full sprite animations — idle, walk, run, eat, sleep, bark, wave |
🍖 Feed anything |
Drop files, emoji, or paste text — pup chases food then eats it |
🏃 Chase mechanics |
Food falls from above → pup runs to it → 4-frame eat animation |
💬 AI barks |
Google Gemini generates short mood-based responses |
😴 Sleep mode |
Ignore pup 40s → falls asleep with Zzz particles |
❤️ Pet & wave |
Click to pet, double-click to wave paw |
⌨️ Hotkeys |
`F` throw treat · `B` bark · `Esc` |

**Repo:** [github.com/Varshithvhegde/pawbot](https://github.com/Varshithvhegde/pawbot)

```
Browser tab
    │
    ├── Content script (bundled IIFE via esbuild)
    │       └── Shadow DOM canvas overlay (immune to page CSS)
    │
    ├── Pet engine (Canvas 2D state machine)
    │       idle → walk → run → eat → sleep → bark → wave
    │
    ├── Sprite loader (33 AI-generated pixel frames)
    │
    └── Bark engine → Google Gemini API
            mood + hunger + last meal → short bark text
```

| Decision | Why |
|---|---|
Vanilla JS + Canvas |
Zero build step for the web demo; screen-recording friendly |
Shadow DOM overlay |
Page CSS can't hide the pup (learned this the hard way on AI Studio) |
esbuild bundle |
Chrome content scripts can't use ES `import` — single bundled file fixes it |
AI sprite sheet |
Generated pixel art, auto-sliced with a Python script into 33 transparent PNGs |
Chase-then-eat flow |
Food drops → pup runs → 4-frame eat animation → crumb particles |
Fallback barks |
Works offline without an API key; Gemini enhances when configured |

| State | Sprites |
|---|---|
| Idle | 4-frame breathing loop |
| Walk / Run | Directional left & right sprites |
| Eat | 4-frame chew cycle + flying food emoji |
| Sleep | Curled up + floating Zzz particles |
| Mood | Happy, sad, curious, excited overlays |
| Bark | Shows while AI speech bubble is active |
| Wave | Paw idle + 3-frame wave on pet/double-click |

| Action | How |
|---|---|
| Feed | Drag & drop file or emoji |
| Feed | Paste text/emoji |
| Pet | Click the puppy |
| Wave | Double-click |
| Throw treat | Press `F`
|
| Bark | Press `B`
|

Live **hunger & happiness HUD** in the bottom-left corner.

PawBot uses **Google Gemini 2.0 Flash Lite** — not as a chatbot, but as a **personality engine** for a desktop pet.

Every bark sends real context to Gemini:

| Event | Context sent to Gemini | Example bark |
|---|---|---|
Fed a `.py` file |
`"Just ate: main.py (file)"` , mood: happy |
"Python for breakfast? Bold choice." |
| Ignored 40s+ | mood: lonely, ignoredMs: 45000 | "...hello? I saved you a spot." |
| Poked | happiness: 85, mood: excited | "Hehe! Belly rubs detected!" |
| Hungry | hunger: 82/100 | "Is that food? IS THAT FOOD?" |

Free 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.

Thanks for reading! If PawBot made you smile, leave a 🐾 in the comments.

Built for **International Dog Day** 🐕 · [DEV Weekend Challenge: Dog Days Edition](https://dev.to/challenges/weekend-2026-08-13)
