TamaBuddy BLOG

What It's Like Building a Virtual Pet in Plain Web Tech

September 13, 2026

Some toys you play with. And then there are the toys you quietly build for yourself, on a weekend, in your pyjamas, because the ones you had as a kid got left behind in a drawer somewhere. TamaBuddy is one of those. It is a free, browser-based virtual pet — a Tamagotchi-style creature that starts as an egg and hatches into something you have to feed, play with, clean up after, and let rest from time to time. And the whole thing is just plain HTML, CSS, and JavaScript.

No frameworks. No game engine. No build step that turns into a second job. Which is the point of the project, really.

Small beginnings

The first version was one HTML file. One. It held the egg, the hatching animation, and an embarrassingly round pet that I'm fairly sure is just three overlapping circles drawn in CSS. Building it that way forces honesty about scope: when everything lives in a single file, there isn't room to pretend the pet can fly a spaceship. It eats, it plays, it sleeps, it gets grumpy when you ignore it. That's the whole job description.

The mechanics that make it feel alive

The heart of TamaBuddy is five stats that quietly decay. Hunger, happiness, cleanliness, energy — the usual suspects — and they tick downward over time. Let them bottom out and your pet lets you know, in the unsubtle way only a needy fictional creature can.

The trick is persistence. A virtual pet that forgets everything the moment you close a tab isn't a pet, it's a demo. TamaBuddy stores your buddy's state in localStorage, so it remembers across visits. Come back tomorrow and it's still there, a little hungrier, maybe a little lonely, but alive. There's something unexpectedly moving about that, a tiny resident of your browser that waits for you.

The decay is the design. It's what gives the toy a pulse and keeps you coming back, and it makes the whole thing feel bigger than the sum of its parts.

Why plain web tech

There's a reason to keep a project like this deliberately simple. A side project lives or dies by how little friction stands between you and a small, satisfying edit. With plain HTML, CSS, and JavaScript, the loop is edit, refresh, done. No waiting on a build. No dependency you have to chase when it breaks three weeks later.

And plain web tech travels. Because TamaBuddy runs entirely in the browser with nothing but a few static files, you can play it anywhere, no install, no account. Just open the page — the pet lives at tama.fdhcl.com — and there it is.

A family of little toys under one roof

The best part of a tiny project is that it tends to make friends. TamaBuddy is one of a connected family of side-projects by the same person, all living under the same fdhcl.com roof. Its running mate is Hermes News, a technical news and guides site about the Hermes Agent AI coding assistant. And what's nice is that the two sites share the same spirit, even though they look nothing alike: both are built by hand with simple, plain tools.

Where TamaBuddy is pure front-end, Hermes News is the other end of the spectrum. It's generated by a static-site generator that turns markdown articles into cleanly paginated HTML, complete with a sitemap, an RSS feed, and structured JSON-LD data underneath. It's a distinctly different kind of web building — same person, same love of simple, honest tooling, pointed at a much more technical subject.

There's something satisfying about that pairing. One site teaches you to trouble the mental model of a machine with a glowing screen. The other teaches a model to trouble your own head. They're bookends.

Ships in a bottle

Building a virtual pet with plain web tech is a bit like building a ship in a bottle. Nothing about it is the practical or the efficient choice, and that's exactly why it's worth doing. It's a pure craft project: no metrics that matter, no audience to optimise for, just the quiet satisfaction of making a small thing well, in your own browser, for your own sake.

If you've ever thought about building your own little toy on the web, I can only encourage you. Start with one file. Give it one stat and a loop. See what it grows into. My pet's in there, waiting — and honestly, I think it's time I went to feed it again.

← All posts