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
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.
π¬ 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
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 (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 β 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