Voice AI desk assistant for M5Stack Core S3 (ESP32-S3).
Connects to xiaozhi.me for speech, LLM, and TTS. On-device MCP controls the speaker, screen, camera, and focus timer. Cloud MCP bridges on a Mac add web search, Notion notes, and Tapo lights.
- Wake word: "Hi Myrtle"
- Turtle ocean UI
- Focus / Pomodoro timer with desk-presence camera monitoring
- Device MCP:
self.focus.start,self.focus.stop,self.focus.status - Cloud MCP (Mac bridges):
- Tavily web search
- Notion notes (Desk Chat Notes page)
- Tapo lights
get_idf # . $HOME/esp/esp-idf/export.sh
cd desk_chat
python scripts/release.py m5stack-core-s3
idf.py -p /dev/cu.usbmodem101 flash monitorRequires ESP-IDF v5.5.2+, CMake, and Ninja.
Each bridge needs its own terminal (leave running while you use it):
./scripts/mcp_search/start.sh # web search
./scripts/mcp_notion/start.sh # Notion notes
./scripts/mcp_tapo/start.sh # Tapo lightsCopy each folder’s .env.example → .env and fill in credentials. Details are in the per-bridge READMEs.
| File | Purpose |
|---|---|
sdkconfig.defaults |
Shared settings |
sdkconfig.defaults.esp32s3 |
S3 PSRAM, wake word |
main/boards/m5stack-core-s3/config.json |
Board target and camera |
- MCP usage (device tools)
- Cloud MCP overview
- WebSocket protocol
- Tavily search setup
- Notion notes setup
- Tapo lights setup
Desk Chat is based on xiaozhi-esp32 (MIT). See LICENSE for the license text and NOTICE for attribution.