{"id":31769188,"url":"https://github.com/second-state/echokit_server","last_synced_at":"2026-01-23T08:51:45.443Z","repository":{"id":301406911,"uuid":"939371152","full_name":"second-state/echokit_server","owner":"second-state","description":"Open Source Voice Agent Platform","archived":false,"fork":false,"pushed_at":"2025-09-21T17:40:44.000Z","size":362,"stargazers_count":357,"open_issues_count":3,"forks_count":64,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-05T15:07:24.115Z","etag":null,"topics":["agentic-ai","ai","asr","esp32","llm","mcp","mcp-client","tts","voice","voice-assistant"],"latest_commit_sha":null,"homepage":"https://echokit.dev/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/second-state.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-26T12:40:07.000Z","updated_at":"2025-10-05T13:41:29.000Z","dependencies_parsed_at":"2025-06-26T18:32:19.081Z","dependency_job_id":"06e802a9-4532-4e2c-9756-cb8154060133","html_url":"https://github.com/second-state/echokit_server","commit_stats":null,"previous_names":["second-state/esp_assistant","second-state/echokit_server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/second-state/echokit_server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/second-state%2Fechokit_server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/second-state%2Fechokit_server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/second-state%2Fechokit_server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/second-state%2Fechokit_server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/second-state","download_url":"https://codeload.github.com/second-state/echokit_server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/second-state%2Fechokit_server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002541,"owners_count":26083403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","ai","asr","esp32","llm","mcp","mcp-client","tts","voice","voice-assistant"],"created_at":"2025-10-10T02:41:34.352Z","updated_at":"2026-01-23T08:51:45.429Z","avatar_url":"https://github.com/second-state.png","language":"Rust","funding_links":[],"categories":["📚 Projects (1974 total)"],"sub_categories":["MCP Servers"],"readme":"# EchoKit Server\n\nEchoKit Server is the central component that manages communication between the [EchoKit device](https://echokit.dev/) and AI services. It can be deployed locally or connected to preset servers, allowing developers to customize LLM endpoints, plan the LLM prompt, configure speech models, and integrate additional AI features like MCP servers.\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://echokit.dev/\"\u003eWebsite\u003c/a\u003e |\n    \u003ca href=\"https://discord.gg/Fwe3zsT5g3\"\u003eDiscord\u003c/a\u003e |\n    \u003ca href=\"https://youtu.be/Zy-rLT4EgZQ\"\u003eLive Demo\u003c/a\u003e |\n    \u003ca href=\"https://echokit.dev/docs/quick-start/\"\u003eDocumentation\u003c/a\u003e\n\u003c/div\u003e\n\u003c/br\u003e\n\nYou will need an [EchoKit device](https://echokit.dev/), or create your own ESP32 device with the [EchoKit firmware](https://github.com/second-state/echokit_box).\n\n\n## Features\n\nEchoKit Server powers the full voice–AI interaction loop, making it easy for developers to run end-to-end speech pipelines with flexible model choices and custom integrations.\n\n### ASR → LLM → TTS Pipeline\n\nSeamlessly connect **ASR → LLM → TTS** for real-time, natural conversations.\nEach stage can be configured independently with your preferred models or APIs.\n\n#### Model Compatibility\n\n* **ASR (Speech Recognition):** Works with any API that’s *OpenAI-compatible*.\n* **LLM (Language Model):** Connect to any *OpenAI-spec* endpoint — local or cloud.\n* **TTS (Text-to-Speech):** Use any *OpenAI-spec* voice model for flexible deployment.\n    * ElevenLabs (Streaming Mode)\n\n### End-to-End Model Pipelines\n\nOut-of-the-box support for:\n\n* **Gemini** — Google’s multimodal model\n* **Qwen Real-Time** — Alibaba’s powerful open LLM\n\n### Developer Customization\n\n* Deploy **locally** or connect to **remote inference servers**\n* Define your own **LLM prompts** and **response workflows**\n* Configure **speech and voice models** for different personas or use cases\n* Integrate **MCP servers** for extended functionality\n\n\n## Set up the EchoKit server\n\n### Build\n\n```\ngit clone https://github.com/second-state/echokit_server\n```\n\nEdit `config.toml` to customize the VAD, ASR, LLM, TTS services, as well as prompts and MCP servers. You can [see many examples](examples/).\n\n```\ncargo build --release\n```\n\n### Configure AI services\n\nThe `config.toml` can use any combination of open-source or proprietary AI services, as long as they offer OpenAI-compatible API endpoints. Here are instructions to start open source AI servers for the EchoKit server.\n\n* ASR: https://llamaedge.com/docs/ai-models/speech-to-text/quick-start-whisper\n* LLM: https://llamaedge.com/docs/ai-models/llm/quick-start-llm\n* Streaming TTS: https://github.com/second-state/gsv_tts\n\nAlternatively, you could use Google Gemini Live services for VAD + ASR + LLM, and even optionally, TTS. See [config.toml examples](examples/gemini).\n\nYou can also [configure MCP servers](examples/mcp/config.toml) to give the EchoKit server tool use capabilities. \n\n### Configure the voice prompt\n\nThe `hello.wav` file on the server is sent to the EchoKit device when it connects. It is the voice prompt the device will say to tell the user that it is ready.\n\n### Run the EchoKit server\n\n```\nexport RUST_LOG=debug\nnohup target/release/echokit_server \u0026\n```\n\n### Test on a web page\n\nGo here: https://echokit.dev/chat/\n\nClick on the link to save the `index.html` file to your local hard disk.\n\nDouble click the local `index.html` file and open it in your browser. \n\nIn the web page, set the URL to your own EchoKit server address, and start chatting!\n\n### Configure a new device\n\nGo to web page: https://echokit.dev/setup/  and use Bluetooth to connect to the `GAIA ESP332` device.\n\n![Bluetooth connection](https://hackmd.io/_uploads/Hyjc9ZjEee.png)\n\nConfigure WiFi and server\n\n* WiFi SSID (e.g., `MyHome`)\n* WiFi password (e.g., `MyPassword`)\n* Web Socket server URL for `echokit_server`\n    * US: `ws://indie.echokit.dev/ws/`\n    * Taiwan: `ws://tw.echokit.dev/ws/`\n    * Rest of the world: `ws://edge.echokit.dev/ws/`\n\n![Configure Wifi](https://hackmd.io/_uploads/HJkh5ZjVee.png)\n\n### Use the device\n\n**Chat:** press the `K0` button once or multiple times until the status bar shows \"Ready\". You can now speak and it will show \"Listening ...\". The device answers after it decides that you have done speaking.\n\n**Config:** press `RST`. While it is restarting, press and hold `K0` to enter the configuration mode. Then [open the configuration UI](https://echokit.dev/setup/) to connect to the device via BT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecond-state%2Fechokit_server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsecond-state%2Fechokit_server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecond-state%2Fechokit_server/lists"}