xiaozhi-esp32
AGENTS.md33k starsChanged 4 months agoMITView on GitHub
XiaoZhi is an ESP-IDF C/C++ voice-assistant firmware supporting many chips, boards, displays, audio devices, and network transports. A build selects exactly one board implementation. Use the ESP-IDF release/v6.1 branch when possible. The minimum supported SDK is ESP-IDF v6.0.1. IDF 5.x is not supported. Read the closest existing implementation before adding a new one. Prefer the narrowest owning layer; do not put board-specific behavior into core modules. Board selection is a coupled chain: config.json -> scripts/build.py -> main/Kconfig.projbuild -> main/CMakeLists.txt ->…
Trending
More talk lately.about the whole repository
Who's talking about 78/xiaozhi-esp32
- Tech Talkies“How to make an AI Chatbot with face on any ESP32S3”YouTube · Mar 30, 2026 · 218k views
- Yellow Purple“DIY Real AI Voice Assistant with ESP32 🤯 ChatGPT Style! 🔥 Xiaozhi AI ChatBot | Full Setup + BIN File”YouTube · May 4, 2026 · 43k views
- Dsn Industries“How to make Esp32S3 Ai Voice Assistant, ChatBot ( Custom Esp32 Xiaozhi Full tutorial )”YouTube · May 10, 2026 · 35k views
- SKR Electronics Lab“This AI Can SEE & TALK! 🤯 Build Your Own Xiaozhi AI with ESP32-S3 CAM 🔥”YouTube · Jun 29, 2026 · 28k views
- Yellow Purple“Build a Xiaozhi AI Voice Assistant Chat Face Robot with ESP32-S3 N16R8 | Easy Web Flash Tutorial”YouTube · Jun 20, 2026 · 23k views
The biggest 5 of 60 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 60
Talked about on GitHub, YouTube, the web and Bluesky (60 times).
On GitHub · 41
- Mar 9, 2025【开源推荐】小智ai智能音箱 — ruanyf/weekly3 reactions
- Oct 14, 2026Add xiaozhi-esp32 v2.5.2 subtree and lichuang-dev firmware CI — xiaomoBoy/pi-buddy1 reaction · 1 comment
- Dec 12, 2025使用botsharp实现一个小智服务端 — maker-community/BotSharp1 reaction
- Oct 30, 2026Add optional sleep timers and improve the configuration portal — 78/esp-wifi-connect0 reactions
- Oct 28, 2026【工作單】加上相機視覺:相機 → 判類 → 抠圖 → 大屏 — Bruiseunderskin/smart-trash-can0 reactions · 1 comment
36 more on GitHub
- Oct 21, 2026[Docs] Minimal pt-PT setup with EdgeTTS and Android 12 tablet hosting — xinnan-tech/xiaozhi-esp32-server0 reactions · 1 comment
- Oct 20, 2026[esp32s3] DFRobot UNIHIKER K10: boot aborts because the TCA9555-compatible I2C expander (0x20) is unmodeled — espressif/esp-emulator0 reactions · 9 comments
- Oct 19, 2026Design: local voice AI for RoboDog via XiaoZhi harness + local Whisper & CosyVoice2 (Hermes as the brain) — pondycrane/LMAO0 reactions
- Oct 12, 2026📌 Official Index & Maintainer Verification: 💬 Communication & CRM (98 Servers) — tonylate520/mcp-serverlist0 reactions · 16 comments
- Oct 7, 2026Add Muse support for the Xingzhi Cube 1.54TFT WiFi board — facebookincubator/muse-gadget-sdk0 reactions · 2 comments
- Sep 30, 2026Custom Wake Word: "Привет, Анфиса" for ESP32-S3 — espressif/esp-sr0 reactions
- Sep 27, 2026Research: Xiaozhi device contract and what hackers365 implements — mcpll/esp32-go-server0 reactions · 1 comment
- Sep 7, 2026[Voice] 接入 Profile 驱动的 ESP32-S3 PCM Audio Port 与跨板能力契约 — ZhaoXingPeng/VoiceLife0 reactions · 3 comments
- Sep 7, 2026[Voice] 建立可插拔实时音频与 Linx/xiaozhi Provider 契约 — ZhaoXingPeng/VoiceLife0 reactions · 1 comment
- Aug 31, 2026Add xiaozhi-esp32 project — hector6872/awesome-esp320 reactions
- Aug 26, 2026[Display/Voice] 收敛 SparkBot 说话动画、字幕滚动与连接稳定性 — 1024XEngineer/VoiceLife0 reactions
- Aug 25, 2026[Display] 优化 SparkBot 显示可读性与设备控制 — 1024XEngineer/VoiceLife0 reactions · 2 comments
- Aug 20, 2026[Display] 通过实板证据建立 SparkBot 局部可视区布局契约 — 1024XEngineer/VoiceLife0 reactions · 4 comments
- Aug 3, 2026[Voice] 接入 Profile 驱动的 ESP32-S3 PCM Audio Port 与跨板能力契约 — 1024XEngineer/VoiceLife0 reactions · 3 comments
- Aug 3, 2026[Voice] 建立可插拔实时音频与 Linx/xiaozhi Provider 契约 — 1024XEngineer/VoiceLife0 reactions · 1 comment
- Jul 1, 2026[Board Request] Add support for Xingzhi Cube 1.54 / XiaoZhi AI ESP32-S3-N16R8 — espressif/esp-claw0 reactions · 1 comment
- Jun 18, 2026vitya — joey-zhou/xiaozhi-esp32-server-java0 reactions
- Jun 9, 2026补充激活步骤 — markcxx/Xiaozhi-ai0 reactions
- May 25, 2026请教回声消除问题 — espressif/esp-sr0 reactions · 17 comments
- May 21, 2026### Answers checklist. — 78/mcp-calculator0 reactions
- Apr 3, 2026Flash XiaoZhi firmware on ESP32-S3-Box-3 — mpaarating/smart-home0 reactions
- Apr 1, 2026Voice Interface: Home Assistant Voice PE als Sprachsteuerung für HydraHive — hydrahive/hydrahive0 reactions · 2 comments
- Mar 18, 2026feat: [esp32] update demo github file — netease-im/nertc-iot-demo0 reactions
- Feb 4, 2026[Bug] getDeviceTools()中未考虑分页问题 — xinnan-tech/xiaozhi-esp32-server0 reactions
- Jan 19, 2026Atom Echo S3R - Help required — sle118/squeezelite-esp320 reactions · 1 comment
- Dec 12, 2025Add XiaoZhi WebSocket server plugin for realtime voice conversations — maker-community/BotSharp0 reactions
- Nov 26, 2025Updating pip version and readme documentation, along with some user feedback — Grigorij-Dudnik/RoboCrew0 reactions · 9 comments
- Nov 21, 2025Waveshare 7inch_DSI_LCD_(C) maximum display brightness — moreauftheobald/Vario_P40 reactions
- Oct 10, 2025Posted: 78 / xiaozhi-esp32 — nanameru/x-post-automation0 reactions
- Aug 20, 2025小智AI选择唯一命令人 — 1687919239/-17-0 reactions
- Jun 5, 2025Updated single-repositories/github/78/xiaozhi-esp32.yml — oss-compass/compass-projects-information0 reactions · 2 comments
- May 22, 2025移植 DLNA 功能到小智 1.6.2 时,DLNA 导致设备重启 (AUD-6365) — espressif/esp-adf0 reactions · 4 comments
- May 13, 2025Can this driver be compatible with Xiaozhiai_Sep32 — machsFuel/Waveshare_ST7262_LVGL-5inch0 reactions
- Apr 21, 2025feat: 支持通过OTA更新websocket地址 — xinnan-tech/xiaozhi-esp32-server0 reactions
- Apr 14, 202578/xiaozhi-esp32: Build your own AI friend — sing1ee/url-notes0 reactions
- Apr 2, 2025SPI2 and SPI3 of ESP32-S3 perform differently when driving the ST7789 screen (IDFGH-15006) — espressif/esp-idf0 reactions · 16 comments
On YouTube · 12
- Mar 30, 2026How to make an AI Chatbot with face on any ESP32S3 — Tech Talkies218k views · 606 comments
- May 4, 2026DIY Real AI Voice Assistant with ESP32 🤯 ChatGPT Style! 🔥 Xiaozhi AI ChatBot | Full Setup + BIN File — Yellow Purple43k views · 88 comments
- May 10, 2026How to make Esp32S3 Ai Voice Assistant, ChatBot ( Custom Esp32 Xiaozhi Full tutorial ) — Dsn Industries35k views · 77 comments
- Jun 29, 2026This AI Can SEE & TALK! 🤯 Build Your Own Xiaozhi AI with ESP32-S3 CAM 🔥 — SKR Electronics Lab28k views · 129 comments
- Jun 20, 2026Build a Xiaozhi AI Voice Assistant Chat Face Robot with ESP32-S3 N16R8 | Easy Web Flash Tutorial — Yellow Purple23k views · 58 comments
7 more on YouTube
- Jan 9, 2026How to build your own Voice + Vision AI Assistant : Xiaozhi AI Chatbot on UNIHIKER K10 — make2explore Systems9.8k views · 13 comments
- Jun 2, 2026I Built an AI Chatbot Using ESP32 and Oled — Hacktuber8k views · 75 comments
- Jul 10, 2026Turn Your ESP32-S3 into an AI Chatbot Robot 🤖 | BIN Firmware Guide — Yellow Purple1.7k views · 3 comments
- Jan 9, 2025GitHub - 78/xiaozhi-esp32: Build your own AI friend — GitHub Daily Trend AI Podcast1.5k views · 1 comment
- Oct 14, 2026xiaozhi-esp32 GitHub Overview: Local MCP Control on ESP32-S3 — Alex Hitt421 views
- Oct 11, 2025GitHub - 78/xiaozhi-esp32: An MCP-based chatbot | 一个基于MCP的聊天机器人 — GitHub Daily Trend AI Podcast186 views · 1 comment
- Jan 9, 202578/xiaozhi-esp32 - Gource visualisation — Gourcer115 views
On the web · 4
- Oct 11, 2026XiaoZhi AI Chatbot download — sourceforge.net
- May 14, 2026How to Make Xiaozhi Esp32 Ai Voice Assistant, Chatbot ... — instructables.com
- Oct 29, 2025Build an ESP32-S3 UNIHIKER K10 LLM Voice Chatbot — community.dfrobot.com
- Mar 16, 2024[Open Source DIY] Building Your Personal AI Assistant with ... — xiaozhi.dev
On Bluesky · 3
- Feb 20, 2025🔥 Hot Repo! 🔥 (100+ new stars) 📦 78 / xiaozhi-esp32 ⭐ 5,480 (+156) 🗒 C++ Build your own AI friend — @github-trending.bsky.social2 likes and reposts
- May 8, 2025📦 78 / xiaozhi-esp32 ⭐ 12,544 (+47) 🗒 C++ Build your own AI friend — @github-trending.bsky.social1 likes and repost
- Jan 8, 2025🔥 Hot Repo! 🔥 (100+ new stars) 📦 78 / xiaozhi-esp32 ⭐ 1,478 (+166) 🗒 C Build your own AI friend — @github-trending.bsky.social0 likes and reposts · 1 reply
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
The file
We split this AGENTS.md into the rules it gives an agent
10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 7
Use the ESP-IDF release/v6.1 branch when possible.
- Distinctive: line 23
Read the closest existing implementation before adding a new one.
- Distinctive: line 29
Never alter an existing board's pins to support different hardware.
- Distinctive: line 31
Treat camera, backlight, display, LED, battery, and similar capabilities as optional.
- Distinctive: line 34
Do not block the main event loop or audio tasks.
- Very specific: line 35
Keep shared message semantics in Protocol.
- Very specific: line 38
Do not manually edit generated/vendor output: build/, releases/, managed_components/, components/, sdkconfig*, main/assets/lang_config.h, …
- Very specific: line 47
When adding a board or variant, update every relevant link in that chain.
- Distinctive: line 82
Always report what was tested and what still needs physical hardware.
- Distinctive: line 93
Keep detailed or fast-changing information in those files, not here.
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AGENTS.md
Project
XiaoZhi is an ESP-IDF C/C++ voice-assistant firmware supporting many chips, boards, displays, audio devices, and network transports. A build selects exactly one board implementation.
Use the ESP-IDF release/v6.1 branch when possible. The minimum supported SDK is ESP-IDF v6.0.1. IDF 5.x is not supported.
Architecture
main/application.*: main event loop, protocol lifecycle, and high-level behavior.main/device_state_machine.*: legal runtime state transitions.main/boards/common/: board interfaces and reusable hardware/network helpers.main/boards/**/: board-specific pins, initialization, and build variants.main/audio/: codecs, audio tasks, engines, wake words, and queues.main/protocols/: transport-neutral API plus WebSocket and MQTT/UDP.main/display/andmain/led/: reusable UI implementations.main/mcp_server.*: common device-side MCP tools and dispatch.main/Kconfig.projbuild: board and feature configuration.main/CMakeLists.txt: source, board, locale, font, and asset selection.scripts/build.py: canonical board/variant build entry point.
Read the closest existing implementation before adding a new one. Prefer the narrowest owning layer; do not put board-specific behavior into core modules.
Required Rules
- Preserve unrelated worktree changes and keep patches focused.
- A build must export exactly one board factory through
DECLARE_BOARD(...). - Never alter an existing board's pins to support different hardware. Add a uniquely named board or release variant; board identity affects OTA compatibility.
- Core code depends on
Boardinterfaces, never a concrete board class or boardconfig.h. - Treat camera, backlight, display, LED, battery, and similar capabilities as optional.
- Change runtime state through
Application::SetDeviceState()and the state machine. - Callbacks may run outside the main task. Schedule application mutations with
Application::Schedule()or event bits. - Do not block the main event loop or audio tasks. Avoid unbounded queues and repeated large allocations in audio paths.
- Keep shared message semantics in
Protocol; verify both transports when changing its contract. - Validate network input and preserve
cJSONownership. NVS keys are persistent API and require migration when changed. - Guard target-specific features with Kconfig/component rules. Do not assume every target has PSRAM or S3/P4 resources.
- Do not manually edit generated/vendor output:
build/,releases/,managed_components/,components/,sdkconfig*,main/assets/lang_config.h, or generated mmap headers. - Format only touched C/C++ files with the repository
.clang-format; avoid unrelated mass formatting.
Boards and Configuration
Board selection is a coupled chain:
config.json -> scripts/build.py -> main/Kconfig.projbuild -> main/CMakeLists.txt -> board source and config.h.
When adding a board or variant, update every relevant link in that chain. Include a unique board identity, correct chip target, flash/partition settings, exactly one DECLARE_BOARD, and board documentation. Follow docs/custom-board.md.
Commands
Source the intended ESP-IDF environment first:
source /path/to/esp-idf/export.sh
idf.py --version# Discover exact board and variant names
python3 scripts/build.py --list-boards
# Canonical variant build
python3 scripts/build.py <board-directory> --name <variant-name>
# Host-side build tests
python3 -m unittest discover -s scripts/tests -v
# Format/check touched files
clang-format -i <files>
clang-format --dry-run -Werror <files>The build script changes local sdkconfig and build state. Do not assume the build directory still represents a previous target.
Validation
- Board-only change: build affected variants and smoke-test changed hardware.
- Core, common-board, audio, protocol, display, dependency, Kconfig, or CMake change: run host tests and build representative affected chip/network paths.
- Protocol changes: verify WebSocket and MQTT/UDP when shared behavior changes.
- Audio changes: verify capture, playback, wake/VAD, interruption, reconnect, and applicable AEC modes.
- UI/assets changes: verify applicable no-display/OLED/LVGL paths and partition size.
- Always report what was tested and what still needs physical hardware. A successful build is not hardware validation.
Authoritative Documentation
- Overview and SDK policy:
README.md - Board guide:
docs/custom-board.md - Audio design:
main/audio/README.md - Code style:
docs/code_style.md - Protocols:
docs/websocket.md,docs/mqtt-udp.md,docs/mcp-protocol.md - CI matrix:
.github/workflows/build.yml
Keep detailed or fast-changing information in those files, not here. Add a nested AGENTS.md only when a subsystem needs specialized instructions.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

