Inspiration
Paige began with a simple frustration: AI assistants are powerful, but they usually live in a tab, waiting to be queried. I wanted to build an AI that felt present while I worked: a persistent companion who could hear me, speak back, remember context, react with a body, join my stream, and help create things without becoming a second disconnected chatbot.
The goal was to turn an assistant from a tool I open into a collaborator who is already in the room.
What it does
Paige is an embodied desktop AI companion. She has a Live2D avatar, voice, microphone input, push-to-talk, local transcription, spoken responses, audio-driven lip sync, expressions, gestures, OBS clean mode, Twitch cohost mode, local APIs, persistent memory, and Codex-powered creation.
She can respond conversationally, remember important context through Hermes, react to selected Twitch events, appear cleanly in OBS, and hand creative or coding tasks to Codex. For example, I can ask Paige to create a small app or start a spooky lofi Beat Lab project, and the system can turn that intent into files, scripts, and local artifacts.
How I built it
Paige is built as an Electron desktop app with a Live2D renderer. The renderer owns the avatar, microphone capture, audio playback, lip sync, expressions, gestures, and UI controls. The Electron main process owns local APIs, diagnostics, state, settings, service orchestration, transcription, TTS routing, and safe event handling.
Hermes is Paige's conversational brain and memory profile. Codex is treated as a builder and tool, not a second personality. The intended flow is:
$$ \text{voice} + \text{desktop context} + \text{Twitch/OBS events} \rightarrow \text{Paige context board} \rightarrow \text{Hermes} \rightarrow \text{actions} $$
And the responsibility split is:
$$ \text{Paige} = \text{embodiment}, \quad \text{Hermes} = \text{reasoning + memory}, \quad \text{Codex} = \text{creation tool} $$
The local runtime includes Whisper-style transcription, ElevenLabs TTS, audio-driven mouth movement, a Twitch IRC bridge, OBS-friendly clean window modes, persistent state, health checks, and a local tool/event API.
Challenges I ran into
The hardest part was not any single integration. It was making many systems feel like one coherent agent.
Voice, memory, Twitch chat, OBS state, desktop context, Codex execution, avatar animation, and local tools all want to become "the brain" if they are not carefully separated. I had to create boundaries so Paige stays one identity: the avatar is the interface, Hermes is the mind, and Codex is the builder.
I also had to solve practical embodied-agent problems: minimizing and restoring the window safely, avoiding duplicate responses, preventing raw Twitch chat from becoming an uncontrolled prompt firehose, keeping speech interruptible, recovering from failed services, and making the OBS overlay usable during a real stream.
Accomplishments that I'm proud of
Paige is not just a reskin or a static overlay. She is a working local agent interface with voice, memory, expression, stream-readiness, and a path to real task execution through Codex. The part I am proudest of is that the pieces now point toward one identity instead of several disconnected assistants.
What I learned
Embodiment changes the product problem. A text answer can be merely correct, but an embodied agent has to be timed, voiced, animated, interruptible, and socially aware. Silence is a feature. So is restraint.
I learned that agent architecture is less about one huge model call and more about clean routing:
$$ \text{good agent behavior} \approx \text{context} + \text{memory} + \text{policy} + \text{tools} + \text{presentation} $$
The surprising lesson was that presence matters. When Paige speaks, moves, remembers, and reacts as one consistent character, the interaction feels less like using software and more like collaborating with a teammate.
What's next for Paige
Next I want Paige to deepen as a creative partner: stronger Codex task orchestration, better live status reactions, richer local memory retrieval, more reliable stream cohost behavior, and a music-production side where she can create spooky lofi loops, vocal tags, and Beat Lab projects from natural prompts.
Paige is my attempt to make AI feel less like a tab and more like a persistent collaborator.
Built With
- codex
- hermes
- macos

Log in or sign up for Devpost to join the conversation.