July 11, 2026
I Built two AI cats and mice that live on my desktop. Here’s why a Security Engineer made a toy
A side project, a Linux desktop, and a small reminder that not everything you build has to be defending something.

By h@shtalk
3 min read
A few weeks ago I came across lil agents — tiny pixel-art AI companions that live on your Mac's desktop. I don't run macOS. So naturally, instead of just admiring it, I rebuilt the idea for Linux, gave it dual personalities, and called it Tom and Jerry.
It's a genuinely silly project. Two pixel-art characters walk around your screen — Tom, a gray cat, handles system and productivity tasks; Jerry, a brown mouse, handles information and fun. Double-click either one and you get an AI chat terminal scoped to whatever that character is supposed to be good at. They occasionally throw shade at each other in speech bubbles. Tom found 3 security holes. Jerry found 3 typos. It's not trying to be profound.
But building it ended up being a genuinely good lesson in something I think about all day in a much more serious context, so let's actually talk about how it works.
The trick is dumber and smarter than it looks
Here's the part that's actually interesting from a technical standpoint: Tom and Jerry aren't two separate AI models, and they don't have separate brains. They're both just Claude Code, launched from two different folders. Each character's chat window opens its terminal session in a different working directory — ~/.tom-and-jerry/tom/ for Tom, ~/.tom-and-jerry/jerry/ for Jerry — and each of those folders has its own CLAUDE.md file that tells Claude how to behave: Tom's says "you are a reliable, slightly sarcastic system agent," Jerry's says "you are a curious, playful info agent."
That's the entire specialization mechanism. No fine-tuning, no separate API keys, no actual multi-agent architecture under the hood. Just the same tool, reading a different instructions file depending on which folder it was launched from, and behaving like a genuinely different assistant as a result. It's a clean, almost embarrassingly simple demonstration of how much behavior in these systems comes down to context and instructions rather than the underlying model being different at all.
Why a security person built a toy instead of a tool
I spend most of my working hours thinking about what happens when AI systems are given access to things they shouldn't be tricked into misusing — that's the lens I look at almost everything through right now. Building something deliberately low-stakes was a useful exercise specifically because of that. Tom and Jerry run entirely locally, no accounts, no telemetry, no API keys leaving your machine. There's nothing here that needs defending, which meant I got to focus purely on the part of working with AI agents that's easy to forget when you're also worried about exfiltration and prompt injection: it's actually fun to build with, and the "give it a personality through a markdown file in its working directory" pattern is a legitimately elegant piece of design, separate from any of the risk conversation.
It was also a good reminder of something I think gets lost in a field that's mostly about finding what's broken: building something with zero attack surface, on purpose, just to see what the tool can do when you're not also bracing for what it could do wrong, is its own kind of useful practice. You understand a tool's actual behavior a lot better once in a while when you're not simultaneously red-teaming it in your head.
What's actually next for it
Right now it's honestly more of a "desktop pet with a CLI wrapped in a costume" than a true autonomous agent — the characters don't have persistent memory, can't act on their own without you opening the chat, and don't talk to each other beyond scripted banter. The real next step, if I keep building on it, is swapping the CLI wrapping for direct API calls so each character can actually hold tools, memory, and run proactively instead of waiting for a double-click. That's the difference between a fun desktop toy and something closer to an actual agent, and it's a good excuse to keep tinkering.
The actual point
You don't need a serious justification for every project. Sometimes the most useful thing you can build is the one with nothing real at stake, just to remember why you liked this field before every conversation about it became about what could go wrong.
Repo's here if you want to run your own pixel-art cat and mouse: github.com/EvaGeorg/tom-and-jerry