MimiClaw — an agent harness in C on a microcontroller
An agent harness written in pure C for an ESP32-S3, with no Linux, no
Node.js and no server. You message it on Telegram, it runs a ReAct loop against Anthropic or OpenAI,
calls tools, keeps memory in markdown files on flash, and replies. MIT, 5,608★/829 forks/114 open
issues, repository created 2026-02-04, last pushed 2026-08-10 (read 2026-08-10). By memovai;
the README credits OpenClaw and HKUDS’s Nanobot as the architectures it reimplements for
embedded hardware.
What it actually is: the harness anatomy at its floor
openclaw-hermes-control-layer settled this spoke’s anatomy for a harness — runtime, gateway, memory, tools, identity, policy. MimiClaw is the cleanest test of that list yet, because it ships four of the six and simply omits the other two.
- Runtime — C on ESP-IDF v5.5+, dual-core: network I/O on one core, the agent loop on the other.
- Gateway — Telegram, plus an unauthenticated WebSocket listener on port 18789 for the LAN.
- Memory — plain text on SPIFFS:
SOUL.md(persona),USER.md,MEMORY.md(long-term),HEARTBEAT.md(task list),cron.json, dated daily notes, andtg_<chat>.jsonltranscripts. - Tools — five:
web_search(Tavily or Brave),get_current_time,cron_add,cron_list,cron_remove. - Identity — none.
- Policy — none.
Those last two are exactly what NVIDIA and Microsoft bolted onto OpenClaw to get it into production. MimiClaw demonstrates they are separable from a working harness, which the anatomy already implied and nothing here had shown at the bare end of the range.
Self-scheduling with no gate at all
Two features make it act without being asked. Heartbeat re-reads HEARTBEAT.md on a timer
(default 30 minutes) and prompts the agent for any unchecked item. cron_add lets the LLM
schedule its own recurring or one-shot jobs, persisted to flash and surviving reboots; when one
fires, its message is injected into the agent loop.
That is durable, self-driven behaviour on a device with no approval prompt anywhere in it. Set against the synthesis’s newest finding — per-action approval catching 13.6% of harmful actions in claude-code-auto-mode — MimiClaw is the limit case those numbers were pointing at: it skips the dial entirely rather than turning it (agent-permission-model).
Its blast radius is small for a reason worth naming. The tool list has no shell, no filesystem
write outside its own memory files, no code execution, no HTTP verb the user chooses. An agent that
can search the web and set alarms cannot do much harm no matter how autonomously it runs. That is
containment by capability poverty, not by external policy — a third mechanism
beside NVIDIA’s sandbox and Anthropic’s prompt, and the only one in this corpus that costs nothing to
enforce because there is nothing to enforce. It also stops working the moment somebody adds a sixth
tool, and docs/TODO.md exists.
The $5 is the harness, not the intelligence
The headline is “The world’s first AI assistant on a $5 chip.” Two corrections, both from the same README.
The board it asks for is an ESP32-S3 with 16 MB flash and 8 MB PSRAM, and the example given is a
Xiaozhi AI board at ~$10. And the reasoning does not happen on the chip: every turn is an API call
to Claude or GPT, with a sk-ant-… or OpenAI key compiled into mimi_secrets.h or set over the
serial CLI into NVS. The device holds the loop, the memory and the tools. The model is rented, and
metered.
The repository’s own GitHub description is the accurate version — “Harness on a $5 chip” — and the gap between the two lines is the model-or-harness-taxonomy question in miniature. What got cheap here is the harness host, which was never the expensive part. Running the agent 24/7 at 0.5 W is real, and it is a claim about electricity, not inference.
Secrets on a device on your desk
Recorded plainly because the README is casual about it. An Anthropic or OpenAI API key, a Telegram bot
token, WiFi credentials and optional search keys live either in a build-time C header or in NVS flash
on a board with OTA firmware update over WiFi and that open WebSocket gateway. Nothing in the
documentation discusses authenticating the gateway, encrypting NVS, or what happens to the keys if the
board is lost or reflashed. config_show masks them; the flash does not.
Provenance and tier
T1, primary artifact — the repository, its README and its self-hosting-style setup docs. Star
counts and issue counts are snapshots. Everything above is claimed by the project; the only
independent evidence of anything is the fork count.
Related
openclaw (the acknowledged parent — gateway-first, and MimiClaw keeps the gateway shape while
shrinking everything else) · openclaw-hermes-control-layer (the anatomy it tests) ·
agent-memory (markdown-file memory, the same representation choice as the
gbrain lineage in ../research-wiki) · durable-agents · agent-permission-model ·
agent-guardrails · model-or-harness-taxonomy · agentic-coding-harness
Cross-spoke. The hardware half belongs to ../embedded-iot-wiki, which already pages esp32,
microcontroller and espressif. This is the first agent harness in the corpus whose substrate is
an MCU rather than a server, a laptop or a phone, and that spoke owns the substrate question. Noted,
not duplicated.