I just built something that makes me absurdly happy — a personal side project.
It’s a desktop app where AI agents live in an animated world on your screen. They wander around, greet each other, chase balls you throw, wear silly hats… and you can actually talk to them.
Think Stardew Valley meets desktop pets — except the pets are intelligent.

The Inspiration
I recently discovered the VS Code Pets extension, and it’s delightful. It serves no “function” other than being charming. A little creature hanging out in your editor, doing nothing productive. And yet it makes the environment feel more alive.
I wanted to bring that energy to AI agents — but go further. What if they weren’t just decorative? What if you could click an agent and have a real conversation, backed by Copilot or Claude or your local LLM?
The Insight: Pets vs Cattle
There’s a tension in how we think about agents.
The industry defaults to cattle — headless workers, disposable, scale-out infrastructure. Agents as background processes. Invisible. Interchangeable.
But people anthropomorphize everything. We name our Roombas. We say “thank you” to Alexa (and curse at her when she gets things wrong — see, we can’t even talk about these things without using human pronouns). Maybe some agents should be pets.
Not because it’s more efficient. Because it sparks joy. And honestly? Approachability matters. A terminal is intimidating. A cute creature wandering your desktop? That’s inviting.
Features
Agent Terrarium has grown into something richer than I expected:

Agents & Backends
- 10 built-in avatars — Cat, Copilot, Squirrel, Penguin, Ghost, Clippy, Claude, Chicken Jockey (yes, the Minecraft mob), and more
- Unique personalities — different movement styles (wander, patrol, bounce, float) and ball interest levels
- Agent interactions — agents greet each other with emoji chat bubbles when they meet
- Hover greetings — playful synthesized speech and mood-based emojis
- Per-avatar backend — each avatar is associated with an AI backend (Copilot, Claude, OpenAI-compatible, or NPC/echo mode)
- Working directory — real agent backends can be pointed at a folder to work on, just like Copilot CLI or Claude Code
AI Chat
- Click to chat — inline chat bubble with Markdown and syntax-highlighted code blocks
- Pop-out window — detach conversations into their own windows
- Multiple backends — GitHub Copilot, OpenAI-compatible APIs, local models
- Text-to-speech — agents speak responses via Windows SAPI with pitch shifting
Awareness System
“Awareness” answers the question: when does the AI get invoked?
At the default level (chat-only), an agent only sees your messages — just like Copilot CLI or any other chat interface. But these agents live in a virtual world, so there are additional layers of context they could access:
| Level | Name | What the agent sees |
|---|---|---|
| 0 | Chat only | Your messages only (default) |
| 1 | Events | World events: ball thrown, new agent arrived, theme changed |
| 2 | Social | Other agents’ speech and emotes |
| 3 | Full | Complete world state: all agent positions, moods, recent interactions |
Higher awareness levels let agents react autonomously — commenting on a ball you threw, greeting a new arrival, or responding to another agent’s quip. They can use tools like say, emote, move_to, or run_away to express themselves in the world, not just in chat.
Themes & Visuals

- 10+ animated themes — Meadow, Night (shooting stars!), Desert, Ocean, Forest, Castle, Outer Space, Seattle, Shanghai, Paris, Rio, Winter Olympics
- Dynamic sky — the sun and moon position, sky color, and weather all reflect your real local conditions. Rain, drizzle, snow, fog — if it’s happening outside, it’s happening in your terrarium. Location is coarsely inferred from IP to preserve privacy.
- Per-theme music — procedural lofi soundtracks unique to each theme
- Sound effects — audio feedback for interactions
- Custom decorators — themes include inline SVG elements with waypoint animations
Ball Physics
- Throw a ball — click and drag to throw; realistic gravity, bounce, and friction
- Agent chase — agents pursue the ball based on their personality’s
ballInteresttrait - Capture & kick — agents catch the ball and kick it to each other
Gear & Customization
- 5 equipment slots — hat, face, neck, body, back
- 10 built-in items — hats, scarves, sunglasses, capes
- Config persistence — everything saves to
~/agent-terrarium.json
Extension Packages
- Declarative JSON — add themes, avatars, and gear without touching source code
- Hot reload — drop packages into
~/agent-terrarium/packages/and they load automatically
Why This Matters
I’m not claiming this is the future of agent UX. But I think the design space is wider than we’re exploring.
Today’s agent interfaces optimize for power users and developers. That’s fine — those are the early adopters. But if agents are going to be everywhere, they need to be approachable to everyone.
Approachability isn’t about dumbing things down. It’s about meeting people where they are emotionally, not just functionally.
And honestly? Building this reminded me why I got into software in the first place. I stayed up until 4am multiple nights — not because I had to, but because I couldn’t stop. When building feels like play, you’re onto something worth sharing.
Built with Tauri + Rust for a lightweight, native desktop experience.
Early Access
I’m running a small closed alpha before public release. If you want to try it out, DM me on LinkedIn.
What do you think — should agents feel more alive?