MCPcopy Index your code
hub / github.com/espressif/esp-claw

github.com/espressif/esp-claw @v0.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.0 ↗ · + Follow
4,610 symbols 11,701 edges 464 files 190 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

  <img alt="ESP-Claw logo" src="https://github.com/espressif/esp-claw/raw/v0.1.0/docs/src/assets/logos/logo.svg" width="50%" />

ESP-Claw 🦞 AI Agent Framework for IoT Devices

💬 Chat as Creation · 🚀 Millisecond Response · 🧩 Smart and Extensible · 😋 Grows with You

<a href="https://www.espressif.com">
  <img src="https://img.shields.io/badge/runs_on-ESP32_Series-red?style=flat-square" alt="Runs on ESP32 Series" />
</a>
<a href="https://github.com/espressif/esp-claw/raw/v0.1.0/LICENSE">
  <img src="https://img.shields.io/github/license/espressif/esp-claw?style=flat-square" alt="License" />
</a>

Home | Docs | Online Flashing | Build from Source | 简体中文

ESP-Claw is Espressif's Chat Coding AI agent framework for IoT devices. It defines device behavior through conversation and completes the full loop of sensing, decision-making, and execution locally on Espressif chips. Inspired by the OpenClaw concept and reimplemented in C, ESP-Claw is lightweight, intelligent, and continuously evolving. With just an ESP32-series chip that costs only a few dollars, you can experience what makes ESP-Claw so nimble.

From traditional IoT to Edge Agent

🌟 Key Features

Traditional IoT usually stops at connectivity: devices can connect to the network, but they cannot think; they can execute commands, but they cannot make decisions. ESP-Claw brings the Agent Runtime down onto Espressif chips, turning them from passive executors into active decision-making centers.

💬 Chat as Creation ⚙️ Event Driven
IM chat + dynamic Lua loading Ordinary users can define device behavior without programming Any event can trigger the Agent Loop and more Response can be as fast as milliseconds
🧬 Structured Memory 📤 MCP Communication
Organize memories in a structured way Privacy stays off the cloud Supports standard MCP devices Works as both Server and Client
🧰 Ready Out of the Box 🧩 Component Extensibility
Quick setup with Board Manager Supports one-click flashing Every module can be trimmed as needed You can also add your own component integrations

📦 Quick Start

ESP-Claw on ESP32-S3 Breadboard

ESP-Claw now supports a wide range of development boards based on ESP32-S3, ESP32-P4, ESP32-C5, and ESP32-S31, including breadboards, M5Stack CoreS3, and many others. Supported boards in ./application/edge_agent/boards/ can be flashed online directly: configuration and flashing are done entirely in the browser, with no need to compile firmware locally or install a development environment first.

You can also build ESP-Claw locally. Please refer to the local build documentation for board adaptation, building, and flashing. Boards not listed above, as well as chips like the ESP32-P4, can also be supported through local builds and flashing.

You can find practical examples in our documentation.

Supported Platforms

<img alt="Supported Platforms" src="https://github.com/espressif/esp-claw/raw/v0.1.0/docs/static/claw-providers-black.webp" width="90%" />

LLM: ESP-Claw now supports both OpenAI-style APIs and Anthropic-style APIs. It natively supports GPT models from OpenAI, Qwen models from Alibaba Cloud Bailian, Claude models from Anthropic, DeepSeek models from DeepSeek API, and also supports custom endpoints.

[!TIP]

ESP-Claw's self-programming capability depends on models with strong tool use and instruction-following ability. We recommend gpt-5.4, qwen3.6-plus, claude4.6-sonnet, deepseek-v4-pro or models with comparable capability.

IM: ESP-Claw supports Telegram, QQ, Feishu, and WeChat, and can be extended further.

Development Plan

ESP-Claw is still under active development. Feel free to open an issue to report problems or request features. You can also share your ideas through our online survey (in Chinese).

Click here to view our TODO List (in Chinese) and vote for the features or issues you care about. That helps us prioritize them sooner.

📷 Follow Us

If this project helps you, please consider giving it a star. ⭐⭐⭐⭐⭐

Star History

<img alt="Star History Chart" src="https://api.star-history.com/chart?repos=espressif/esp-claw&type=date&legend=top-left" />

Acknowledgements

Inspired by OpenClaw.

The implementation of Agent Loop, IM communication, and related capabilities on ESP32 also draws on MimiClaw.

Extension points exported contracts — how you extend this code

AstroVFileData (Interface)
* @deprecated Astro does NOT inject `config` into `file.data.astro` during * the remark pipeline – only frontmatter lan
docs/src/plugins/remark-doc-links.ts
Window (Interface)
(no doc)
application/edge_agent/components/http_server/frontend_source/src/pages/WebImPage.tsx
Strings (Interface)
(no doc)
docs/src/flash-tool/i18n.ts
RemarkDocLinksOptions (Interface)
(no doc)
docs/src/plugins/remark-doc-links.ts
ChromeStrings (Interface)
(no doc)
docs/src/site/chrome-i18n.ts
TerminalLine (Interface)
(no doc)
docs/src/site/home-i18n.ts

Core symbols most depended-on inside this repo

lua_lvgl_unlock
called by 162
components/lua_modules/lua_module_lvgl/src/lua_lvgl_runtime.c
lua_lvgl_error_esp
called by 105
components/lua_modules/lua_module_lvgl/src/lua_lvgl_runtime.c
lua_lvgl_lock
called by 103
components/lua_modules/lua_module_lvgl/src/lua_lvgl_runtime.c
lua_ble_runtime_unlock
called by 87
components/lua_modules/lua_module_ble/src/lua_module_ble_utils.c
must
called by 70
docs/src/flash-tool/flash-page.ts
lua_display_check_integer_arg
called by 67
components/lua_modules/lua_module_display/src/lua_module_display.c
lua_ble_push_err_string
called by 65
components/lua_modules/lua_module_ble/src/lua_module_ble_utils.c
lua_lvgl_check_typed_obj
called by 62
components/lua_modules/lua_module_lvgl/src/lua_lvgl_complex_widgets.c

Shape

Function 4,233
Class 223
Method 74
Enum 67
Interface 10
Route 3

Languages

C84%
TypeScript11%
C++3%
Python2%

Modules by API surface

components/lua_modules/lua_module_lvgl/src/lua_lvgl_complex_widgets.c109 symbols
docs/src/flash-tool/flash-page.ts94 symbols
components/claw_modules/claw_event_router/src/claw_event_router.c84 symbols
components/lua_modules/lua_module_display/src/display_hal.c78 symbols
components/claw_capabilities/cap_im_platform/src/cap_im_wechat.c77 symbols
components/claw_capabilities/cap_im_platform/src/cap_im_feishu.c77 symbols
components/claw_modules/claw_ramfs/src/claw_ramfs.c74 symbols
docs/public/clientjs/marked@18.0.4/marked.umd.min.js72 symbols
components/claw_modules/claw_cap/src/claw_cap.c66 symbols
components/claw_modules/claw_memory/src/claw_memory_session.c61 symbols
components/lua_modules/lua_module_magnetometer/src/bmm350/bmm350.c59 symbols
components/claw_capabilities/cap_im_platform/src/cap_im_qq.c59 symbols

For agents

$ claude mcp add esp-claw \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact