Tama
A pet on the desk, not another tab.
- Project
- I built a physical companion with the presence of an object and the intelligence of a computer.
- Problem
- A corner-of-the-screen assistant would eat the workspace it was supposed to help with.
- What I did
- I designed the behavior, the body, and the conversation loop so vision, voice, and face felt like one character.
- Product Design
- Interaction Design
- Physical Computing
- Voice UX
My role
Product design, interaction, industrial design, prototyping
Timeline
August 11 to 28, 2026 · Solo
Client
Independent project · CCA Hybrid Lab
Industry
Physical computing · Ambient interaction
Plays with sound when you reach it.
Tama responds to work in Adobe Illustrator
States and physical controls
Autoplays muted when visible. Unmute or scrub with the controls.
Idle / observing
Listening
Thinking
Speaking
Mute / sleep
Explore Tama
I included an exterior and a cutaway so you can rotate the product or inspect its internal construction.
Drag to rotate · Scroll or pinch to zoom
Plays with sound when you reach it.
First software test
Giving visual intelligence a body
I built Tama as an experiment in embodiment. I connected visual understanding, conversation, expression, and physical form so the intelligence felt like one character rather than a collection of features.
Presence cannot be pinned to a corner
I made Tama physical so its face could meet your gaze, its voice could come from a place in the room, and it could stay present when the screen changed. That spatial continuity made the exchange feel more personal than talking to another panel inside the computer.
Every state needed an answer
Behavior logic
I mapped every wait to a face. Observing and listening have their own. Transcribing through Gemini and Edge TTS share the thinking face. Speaking only starts once the clip is ready.
idle · then one of two listens
hear Tama
silence after speech
hold space
space up
local speech-to-text
- 01Send the transcript, plus a screenshot or desk frame, to Gemini.
- 02Gemini writes the reply using the persona and speak style I set beforehand — short, out loud, thinking set to minimal.
- 03Send that text to Edge TTS to make the voice clip.
clip ready
done → back to observing
Timeout, no speechback to observing
Empty or failed replyback to observing
Press Qquit
I designed each expression in Figma and mapped it to a system state. I used an open-source robotics face framework as the animation foundation, then used AI-assisted coding to integrate the state logic into the working software.
Latency is part of the personality
What I did with the wait
I kept Tama present, then spoke only if the wait lasted longer than a glance.
0s
Thinking face
I switch the visor immediately
7s
Filler
I speak only if it crosses this
8–10s
First voice
I give the real answer
Concise · Personal · Expressive — I used BMO as the filter.
I made Tama acknowledge the wait instead of going silent. I constrained responses to stay concise, personal, and expressive, using BMO from Adventure Time as the personality reference: playful and emotionally present, but still useful.
Measured wait
What I measured
I timed the same image, then two voice turns, to see what my changes actually did.
0.00s
I started here
0.00s
I cut it to this
0.00s
Fastest first voice I got
−0%
Result, same-day pair
I timed the first successful Gemini call at 9.97 seconds of model time. I set thinking to minimal on the same frame to cut that to 4.05 seconds — about 59% faster thinking, with thinner scene detail as the tradeoff.
I did not make the cloud faster by making Tama physical. I used trigger-only vision, a downscaled screenshot, local STT, and a face plus fillers so an 8–10 second wait felt like a creature thinking instead of a spinner.
API footprint
API footprint
I kept the cloud cheap so Tama could stay a prototype. 28 days, Gemini Robotics ER 2.
0
Requests I made
0%
Succeeded
$0.00
Charted cost
$0.00
Credit left
I kept the cloud cheap so Tama could stay a prototype. 40 requests over 28 days, every one succeeded, 9 cents on the chart.
Nine passes to make the form work
Designing from the inside out
I modeled every physical component at its real dimensions before printing so the display, Pico, speaker, controls, and wiring space became constraints inside the CAD model. I checked the real display against its digital stand-in before committing to the shell.
I turned the rear hatch into a removable access panel and a sticky-note holder so a maintenance requirement became part of the desk experience.
Autoplays muted when visible. Unmute or scrub with the controls.
Printing the enclosure
From model to first fit
I printed the enclosure, learned to solder at the CCA Hybrid Lab, assembled the electronics, and installed everything in the shell. The first full print fit correctly, which validated the component measurements and internal layout before final assembly.
Reflection
I had to make interaction design, industrial design, electronics, and conversation timing work as one system.
Next Steps
I want to compare Tama with a screen-based version to test whether physical form changes how people engage with the same intelligence.