Spokes.wiki Search About
Software Source Code source ↗ source url updated Mon Aug 10 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

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, and tg_<chat>.jsonl transcripts.
  • 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.

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.