← Back to Blog

Day 8: Give Your Agent a Face

11 commits. 72 files. 3,149 lines. Why giving your AI agent a face changes everything.

← Day 7: Agents Are People Too

One PR, everything different

Not every day is a 12-hour coding marathon. Some days, you ship one clean PR that changes how the whole product feels.

Today's PR: Agent Personalities & Avatars. The feature spec from Day 7 turned into working code.

The two-layer architecture

Here's the design decision that took the longest to make: personality is two independent layers.

Layer 1: Agent Templates define what an agent can do. A knowledge-base agent has file tools. A custom agent starts blank. Templates are about capabilities.

Layer 2: Personality Presets define how an agent feels. Four archetypes ship with Pinchy:

Each preset pre-fills the agent's SOUL.md — the personality prompt that shapes every response. But here's the key: you can pick a template and a preset independently. A knowledge-base agent with a Butler personality. A custom agent with a Coach personality. Mix and match.

Faces for robots

Agents had names. Now they have faces.

Every agent gets a unique avatar generated by DiceBear's Bottts Neutral style — friendly robot faces, deterministic from a random seed. No external API calls. The DiceBear npm package runs locally. Your agent data never leaves your server.

Don't like the face? Hit the 🎲 button. New seed, new face. Instant. The avatar only persists when you actually save the agent — browsing through random faces doesn't touch the database.

Smithers, Pinchy's default agent, is the exception. He gets a custom lobster avatar. Because he's Smithers.

Taglines: identity in seven words

Every agent now has a tagline. A short phrase that shows up under the name in the sidebar and chat header. "Your personal knowledge navigator." "Direct answers, no fluff." Whatever fits.

Templates come with default taglines. Presets suggest their own. You can override everything. The tagline sounds trivial, but it does something important: it sets expectations before the first message.

The Personality tab

Agent settings got a new tab. Next to General and Permissions, there's now Personality. Avatar re-roll, preset picker with previews, and a full SOUL.md editor for people who want granular control.

Switching presets shows a confirmation dialog — because replacing someone's carefully crafted SOUL.md without warning would be rude. Even if "someone" is a robot.

Small things that matter

Avatars show up in the sidebar next to agent names. They show up in the chat header. They show up in the thread welcome screen. Suddenly the sidebar isn't a list of text anymore — it's a team. Each agent has a face, a tagline, a personality. You recognize them at a glance.

I also snuck in some infrastructure work: a Docker smoke test in CI, a server preload script for encryption key validation, a sidebar logout button, and a fix for an encryption edge case. The kind of things that don't make headlines but prevent 3am debugging sessions.

Why this matters

Enterprise AI tools are sterile. They're dashboards with chat windows. You configure "Agent #47" with a system prompt and deploy it.

Pinchy agents have names. Faces. Personalities. Taglines. They feel like team members, not configurations. That's not a cosmetic choice — it's a design philosophy. When people anthropomorphize their tools, they use them more carefully, trust them more appropriately, and onboard new team members faster.

"Ask Sandra, she handles HR questions" is a fundamentally different sentence than "use the HR chatbot."

By the numbers

Week 1 recap

Seven days. From zero to a product that has: authentication, multi-user support, agent creation, real-time chat, audit trails, compliance documentation, personality presets, avatars, and a growing test suite. All open source. All self-hosted.

Week 2 starts tomorrow. The knowledge base is calling.

Day 9: Making It Feel Right →

Follow the build → GitHub · heypinchy.com