Self-hosted personalized AI in a mirror
AI doesn't have to live on a screen.
Docs • Getting Started • Releases
mirrormate.mov
A mirror is something you already live with. You glance at it in the morning. You check yourself before heading out. In those few seconds, you could ask about the weather, check your schedule, or just chat.
MirrorMate puts AI into that everyday object. No phone to pull out. No laptop to open. Just talk to the mirror.
- A voice-first AI designed to live in a mirror
- Runs entirely local with Ollama + VOICEVOX (no cloud required)
- Buildable with Raspberry Pi + half mirror
- Remembers you through RAG-based memory
- Not a smart display
- Not a cloud-dependent assistant
- Not another chat UI in a browser
┌─────────────────────────────────────────────────────────────────┐
│ Raspberry Pi │
│ ┌───────────────┐ ┌────────────┐ ┌────────────────────────┐ │
│ │ Browser │ │ Next.js │ │ SQLite │ │
│ │ (Chrome) │◄─┤ App │◄─┤ (Memory, Sessions) │ │
│ │ + Mic/Cam │ │ Port 3000 │ │ │ │
│ └───────────────┘ └─────┬──────┘ └────────────────────────┘ │
│ ▲ │ │
│ │ │ Tailscale VPN │
└─────────┼─────────────────┼─────────────────────────────────────┘
│ ▼
│ ┌─────────────────────────────────────────────────┐
│ │ Mac Studio │
│ │ ┌────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ │ Ollama │ │ VOICEVOX │ │ Whisper │ │
│ │ │ LLM/VLM │ │ TTS │ │ STT │ │
│ │ │ Embedding │ │ Port 50021 │ │ Port 8080│ │
│ │ └────────────┘ └──────────────┘ └───────────┘ │
│ └─────────────────────────────────────────────────┘
│
└── Half Mirror + Monitor
Minimal setup: Raspberry Pi + OpenAI API only
Full local setup: Combine with Mac Studio (or any GPU machine) as shown above
With OpenAI API (easiest):
docker run -p 3000:3000 \
-e OPENAI_API_KEY=sk-xxx \
-e LLM_PROVIDER=openai \
-e TTS_PROVIDER=openai \
ghcr.io/orangekame3/mirrormate:latestOpen http://localhost:3000 in Chrome.
Fully local (Ollama + VOICEVOX):
# 1. Pull a model with Ollama
ollama pull qwen2.5:14b
# 2. Start MirrorMate
git clone https://github.com/orangekame3/mirrormate.git
cd mirrormate
docker compose up -dWake word: Say "Hey Mira" to activate.
Activate with a wake word. Choose from Web Speech API, OpenAI Whisper, or local Whisper for speech recognition.
Automatically extracts and stores information about you from conversations. Uses RAG to retrieve relevant memories and generate personalized responses.
Lip-synced avatar speaks responses. Eight animation states (Idle, Listening, Thinking, Speaking, etc.) show what it's doing at a glance.
| Component | Options |
|---|---|
| LLM | OpenAI, Ollama |
| TTS | OpenAI, VOICEVOX |
| STT | Web Speech API, OpenAI Whisper, Local Whisper |
| Embedding | Ollama, PLaMo-Embedding-1B |
- Weather (Open-Meteo)
- Calendar (Google Calendar)
- Web search (Tavily)
- Reminders
- Discord sharing
Add your own widgets or sensor integrations. The Vision Companion plugin detects eye contact and greets you automatically.
- Frontend: Next.js 15 / React 19 / Three.js
- Backend: Node.js / SQLite (Drizzle ORM)
- AI: Ollama / OpenAI / VOICEVOX / faster-whisper
- Infra: Docker / Tailscale
bun install
bun run devSee Documentation for details.
Work in progress. Core features work, but rough edges remain.
If you're into local AI, self-hosted systems, or physical interfaces, give it a try.
