← Back to portfolio

// project

EmberAI companion pendant

A look at what Ember does, the design and engineering problems it runs into, and how it's built end to end.

Every AI assistant I used lived behind a keyboard or a phone screen. I wanted to know what it would feel like if it lived with you instead — something you'd glance at on your desk or wear around your neck, that felt present rather than summoned.
Ember — Debug harness — expression picker and manual controls

// the problem

Most AI companions are disembodied — a chat window, a voice with no presence. I wanted an assistant you could glance at like a pet or a person: something with a face, in the room or worn on your body, that felt present rather than something you have to unlock a phone to summon.

// the solution

Give the assistant a physical, wearable body: a small display that renders an expressive animated face reacting to context in real time, paired to a phone in seconds, with the same rendering engine running on both a development machine and the physical hardware so the personality could be designed fast and shipped without surprises.

Designing a face that feels alive

Ember's display can hold nine distinct expressions — happy, sad, shocked, grumpy, and more — and animates smoothly between them, so the pendant reads as alive rather than as a static icon on a screen. Getting that feeling of 'presence' right took a lot of iteration: timing the blink, the exact curve of a smile, how quickly the eyes should dart before the mouth catches up.

Building once, running everywhere

You can't iterate on a personality by re-flashing hardware every few seconds. So the same animated face renderer runs identically whether it's being previewed on a laptop during development or running on the physical pendant, which meant the entire look and feel of the character could be designed and refined on a desktop, then dropped onto the real device with no surprises.

Getting a physical pendant online

Setting up a new pendant is a simple phone-to-device pairing flow: scan a QR code on the pendant, confirm on your phone, and it's linked to your account — no manual configuration, no typing wifi credentials on a tiny screen.

// key takeaways

// tradeoffs

Next.jsESP32-S3LVGLClerkNeon Postgres
View live ↗Get in touch