MirrorMate 소개
MirrorMate는 단순히 정보를 표시하는 디스플레이를 넘어, 거울 속에 상주하며 사용자와 대화하고 교감하는 개인화된 반려 AI(AI Companion) 프로젝트입니다. 이 오픈 소스 프로젝트는 사용자가 자신의 거울을 통해 AI와 자연스럽게 소통할 수 있도록 설계되었으며, 특히 프라이버시와 현실감에 중점을 두고 있습니다.
대부분의 스마트 홈 기기가 클라우드에 의존하거나 별도의 스크린(스마트폰, 태블릿)을 요구하는 것과 달리, MirrorMate는 우리의 일상 속에 이미 존재하는 '거울'이라는 오브젝트에 AI를 통합시켰습니다. 아침에 일어나 세수를 하거나 옷을 매무새를 다듬는 짧은 순간, 별도의 기기를 조작할 필요 없이 "OK Mira"라고 말을 걸어 날씨를 묻거나 일정을 확인하고, 가벼운 대화를 나눌 수 있습니다.
MirrorMate 프로젝트의 핵심은 자가 호스팅(Self-hosted) 및 로컬 구동입니다. 사용자는 OpenAI와 같은 외부 API를 사용할 수도 있지만, Ollama와 VOICEVOX 등을 활용하여 LLM(대규모 언어 모델), STT(음성 인식), TTS(음성 합성)의 모든 과정을 로컬 네트워크 안에서 처리할 수 있습니다. 이는 민감한 대화 내용이 외부로 유출되지 않도록 보호하며, 인터넷 연결이 불안정한 환경에서도 AI 비서로서의 역할을 수행할 수 있게 합니다.
또한, MirrorMate는 단순히 텍스트를 보여주는 것이 아니라, Three.js로 구현된 3D 아바타를 통해 시각적인 반응을 제공합니다. 사용자의 말에 귀를 기울이거나(Listening), 생각하고(Thinking), 대답하는(Speaking) 상태를 립싱크(Lip-sync)와 표정으로 표현하여, 마치 살아있는 존재와 대화하는 듯한 몰입감을 선사합니다.
MirrorMate와 MagicMirror² 비교
기존의 가장 대중적인 스마트 미러 프로젝트인 MagicMirror²와 MirrorMate는 지향하는 바가 다릅니다. MagicMirror²는 정보의 시각화에 집중하여 날씨, 뉴스, 달력 등의 위젯을 거울에 띄워 사용자가 수동적으로 정보를 소비하게 하는 스마트 디스플레이에 가까운 반면, MirrorMate는 능동적인 상호작용에 집중합니다. 위젯을 넘어, AI가 사용자의 목소리를 듣고 대답하며, 기억(Memory)을 통해 사용자의 맥락을 이해합니다. 즉, 거울을 '정보 게시판'이 아닌 '대화형 에이전트'로 진화시킨 형태입니다.
MirrorMate의 주요 특징
음성 우선 인터랙션 (Voice-First Interaction)
MirrorMate는 터치나 키보드 없이 오직 목소리만으로 모든 상호작용이 가능합니다. "OK Mira"와 같은 호출어(wake word)로 AI를 깨울 수 있습니다. 또한, 브라우저에 내장된 Web Speech API나, OpenAI Whisper같은 외부 서비스, 혹은 로컬 Whisper 모델 중 하나를 선택하여 음성을 텍스트로 변환합니다.
개인화된 기억 저장소 (RAG-based Memory)
MirrorMate는 단발성 대화에 그치지 않고, 사용자와의 대화 내용을 기억하는 개인화된 기억 저장소도 제공합니다. 먼저, 사용자와의 대화 중 사용자에 대한 중요한 정보(예: "나는 매운 음식을 싫어해")를 자동으로 추출하여 데이터베이스에 저장합니다. 이후 대화에서 저장된 기억을 검색(Retrieve)하여 LLM에 제공함으로써, "점심 메뉴 추천해줘"라는 질문에 "매운 거 싫어하시니 샌드위치 어떠세요?"와 같이 개인화된 답변을 생성합니다.
표현력 있는 아바타 (Expressive Avatar)
단조로운 텍스트 응답 대신 시각적 피드백을 제공합니다. 대기(Idle), 듣기, 생각하기, 말하기 등 8가지 상태에 따라 서로 다른 상태 애니메이션을 보여줍니다. 또한, TTS로 생성된 음성에 맞춰 아바타의 입 모양이 실시간으로 동기화되는 립싱크(Lip-sync) 기능도 제공합니다.
비전 컴패니언 (Vision Companion Plugin)
카메라를 통해 사용자를 인식하는 기능을 플러그인 형태로 제공합니다. 예를 들어, MirrorMate는 사용자가 거울을 바라보면 이를 감지하여 먼저 인사를 건네거나 대기 모드를 해제하는 눈맞춤 감지 (Eye Contact Detection) 기능이 있습니다. 이 기능을 활용하여 별도의 호출어(Wake word) 없이도 사용자의 시선만으로 상호작용을 시작할 수 있는 자연스러운 UX를 구현할 수 있습니다.
MirrorMate의 기술 스택 (Tech Stack)
최신 웹 기술과 AI 기술이 결합된 모던한 아키텍처를 구현하였습니다:
-
Frontend: Next.js 15, React 19, Three.js (3D 렌더링), Tailwind CSS.
-
Backend: Node.js, SQLite (Drizzle ORM).
-
AI Engine:
- LLM: OpenAI, Ollama (로컬).
- TTS: OpenAI, VOICEVOX (로컬 일본어/영어).
- STT: Whisper (faster-whisper).
-
Infra: Docker Compose로 배포되며, Tailscale을 통한 원격 접근도 지원합니다.
MirrorMate를 배포하기 위해 권장하는 하드웨어 구성은 다음과 같습니다:
-
최소 구성: Raspberry Pi (UI 및 오디오 입출력 담당) + OpenAI API.
-
로컬 완전 구동: Raspberry Pi + 고사양 PC (Mac Studio 혹은 GPU 탑재 PC)
로컬에서 완전히 구동할 때에는 무거운 AI 연산(LLM, TTS)은 고사양 PC에서 Docker로 구동하고, 라즈베리 파이는 이를 스트리밍 받아 가볍게 렌더링하는 구조를 권장합니다.
라이선스
MirrorMate 프로젝트는 MIT License로 공개 및 배포되고 있습니다.
MirrorMate 공식 홈페이지
MirrorMate 설치 및 설정 문서
MirrorMate 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

