{"adoption": {"forks": 3554, "observed_at": "2026-08-28T04:10:41.980820+00:00", "stars": 10433}, "canonical_url": "https://ross.abutalabs.com/products/xiaozhi-esp32-server", "card": {"archived": false, "artifact_type": "service", "description": "本项目为xiaozhi-esp32提供后端服务，帮助您快速搭建ESP32设备控制服务器。Backend service for xiaozhi-esp32, helps you quickly build an ESP32 device control server.", "domain": ["iot", "artificial-intelligence", "speech-processing", "chatbots", "hardware", "self-hosted"], "enriched": true, "function": ["websocket", "speech-recognition", "chatbot", "rag", "mcp", "iot", "agent-framework"], "health_score": 99, "homepage": "http://xiaozhi.biz", "language": "JavaScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["xinnan-tech/xiaozhi-esp32-server"], "name": "xinnan-tech/xiaozhi-esp32-server", "platform": ["self-hosted", "python"], "pushed_at": "2026-08-21T13:39:46+00:00", "repo": "xinnan-tech/xiaozhi-esp32-server", "stars": 10433, "tags": ["esp32", "voice-assistant", "mqtt", "voiceprint-recognition", "xiaozhi", "smart-hardware", "backend-server", "docker", "web-server"], "topics": ["dify", "esp32", "xiaozhi-esp32", "mcp-server", "xiaozhi", "xiaozhi-ai", "xiaozhi-server"], "urls": [], "use_cases": ["self-host a backend server for xiaozhi-esp32 devices", "build a voice assistant server for ESP32 hardware", "control ESP32 devices with a custom AI backend", "add voiceprint recognition to an ESP32 voice assistant", "connect a knowledge base to an ESP32 chatbot", "run an MCP access point for smart hardware"], "what_it_is": "A self-hosted backend server for the xiaozhi-esp32 open-source smart hardware project, implementing the Xiaozhi communication protocol over MQTT+UDP and WebSocket. It supports MCP access points, voiceprint recognition, and knowledge bases, enabling users to run their own ESP32 voice assistant control server.", "when_to_avoid": ["you don't have ESP32 hardware or aren't using the xiaozhi-esp32 firmware", "you want a turnkey commercial voice assistant without self-hosting", "you need a backend for other IoT protocols unrelated to the Xiaozhi protocol"], "when_to_choose": ["you own xiaozhi-esp32 hardware and want your own backend instead of the shared public server", "you need privacy and full control over your voice assistant data", "you want to integrate custom LLMs, TTS, or knowledge bases with ESP32 devices"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/xiaozhi-esp32-server", "repo": "xinnan-tech/xiaozhi-esp32-server", "role": "main", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.980820+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:19:01.856446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "cb80156b38eb893956629c1e4b7e99870b8f83bd963670831b112793303b3141", "fetched_at": "2026-08-28T04:10:41.980820+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xinnan-tech/xiaozhi-esp32-server"}, {"content_hash": "1b51cdd5fa4f4b77985b10a2966667a7d3bc0230f18f3caa3b835681bbe0b1fc", "fetched_at": "2026-08-29T08:18:26.415846+00:00", "kind": "homepage", "missing": false, "url": "http://xiaozhi.biz"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 41, "rhythm": 82}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 577, "days_push": 12, "days_rel": 40, "gap_med": 2, "n_releases_24m": 76}, "score": 81, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}