Inntil nå har KI på ESP32 stort sett betydd TinyML, vekkord-modeller på et par hundre kilobyte og brikken brukt som passiv sensor som videresender input til en sky-modell. ESP-Claw, sluppet av Espressif som offisielt rammeverk, snur det rundt. LLM-en kan ligge hvor som helst, men ferdighets-katalog, verktøy-orkestrering, minne, ruting og hele agent-syklusen kjører på mikrokontrolleren selv. Hovedgrensesnittet er en Telegram-bot: du legger inn bot-tokenet via menuconfig, kortet long-poller mot Telegrams API, og samtalen flyter uten egen app eller åpen port.
Det tekniske grepet er at ferdigheter (skills) er Markdown + Lua på FATFS, ikke C-kode i fastvaren. Agenten leser metadata fra skills_list.json, henter inn Markdown-en som forteller når en skill er relevant, og kjører Lua-scriptet som gjør jobben. cap_lua eksponerer hele Lua-modul-settet, så en skill kan være «blink LED på GPIO 5 når brukeren sier hei», eller «hvert femte minutt: les DHT22 på GPIO 4, lagre til FATFS, varsle på Telegram hvis temperatur faller under terskelen». Brukeren beskriver det i chat. Agenten skriver Lua-en, kjører den, og scriptet overlever en omstart.
«Mikrokontrolleren er ikke det dumme endepunktet i forholdet» — XDA Developers etter å ha kjørt ESP-Claw på en CrowPanel ESP32-P4
cap_mcp_client lar agenten snakke med en hvilken som helst MCP-server, mens cap_mcp_server eksponerer ESP32-ens egne verktøy ut. Det betyr at en Claude Desktop-klient kan kalle inn til brikken og be den lese en sensor eller skru på en relé, og agenten på sin side kan trekke inn verktøy fra hjemmelaben uten å hardkode capability-er. claw_memory holder en kort oppsummering i memory/MEMORY.md som agenten leser hver tur og kan redigere via egne verktøy. I full strukturert modus brukes memory_records.jsonl og memory_index.json for retrieval.
Praktiske fallgruver er reelle. ESP-Claw retter seg primært mot ESP32-S3-klassen med ett-klikks flashing for M5Stack CoreS3. På P4-kort må du pinne ESP-IDF til v5.5.2 fordi v6 brekker BSP-en, hovedtask-stacken må bumpes til 16 KB, og en mutex-lekkasje i i2c_bus-komponenten henger hele claw_core_task om Lua sin GC frigjør userdata i feil rekkefølge. Default malloc går til intern DRAM på 768 KB delt med stack og IDF, så store allokeringer for ferdighetsdokumenter må rutes til PSRAM eksplisitt.
Hva bør du gjøre?
- Start med en M5Stack CoreS3 eller annen ESP32-S3: ett-klikks flashing fungerer der. Sett opp en Telegram-bot via @BotFather og legg inn token via
idf.py menuconfig. - Pek mot en lokal llama.cpp eller Ollama via OpenAI-kompatibel profil: ESP-Claw godtar dummy-API-nøkkel hvis serveren ikke sjekker. Velg en modell med solid tool-calling — XDA brukte Qwen 3.6 27B på en RX 7900 XTX.
- Bygg din første skill som Markdown + Lua: legg
skill.mdogscript.luaiskills/og rebygg FATFS-imaget. Etter første boot kan agenten skrive nye skills selv via cap_lua.