An open API service indexing awesome lists of open source software.

https://github.com/memovai/mimiclaw

MimiClaw: Run OpenClaw on a $5 chip. No OS(Linux). No Node.js. No Mac mini. No Raspberry Pi. No VPS.๐Ÿ˜—Local-first memory. Shareable. Portable. Privacy-first.
https://github.com/memovai/mimiclaw

ai assistant clawdbot edge-ai-agents memory openclaw

Last synced: 3 months ago
JSON representation

MimiClaw: Run OpenClaw on a $5 chip. No OS(Linux). No Node.js. No Mac mini. No Raspberry Pi. No VPS.๐Ÿ˜—Local-first memory. Shareable. Portable. Privacy-first.

Awesome Lists containing this project

README

          

# MimiClaw: Pocket AI Assistant on a $5 Chip

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![DeepWiki](https://img.shields.io/badge/DeepWiki-mimiclaw-blue.svg)](https://deepwiki.com/memovai/mimiclaw)
[![Discord](https://img.shields.io/badge/Discord-mimiclaw-5865F2?logo=discord&logoColor=white)](https://discord.gg/r8ZxSvB8Yr)
[![X](https://img.shields.io/badge/X-@ssslvky-black?logo=x)](https://x.com/ssslvky)

**[English](README.md) | [ไธญๆ–‡](README_CN.md) | [ๆ—ฅๆœฌ่ชž](README_JA.md)**


MimiClaw

**The world's first AI assistant(OpenClaw) on a $5 chip. No Linux. No Node.js. Just pure C**

MimiClaw turns a tiny ESP32-S3 board into a personal AI assistant. Plug it into USB power, connect to WiFi, and talk to it through Telegram โ€” it handles any task you throw at it and evolves over time with local memory โ€” all on a chip the size of a thumb.

## Meet MimiClaw

- **Tiny** โ€” No Linux, no Node.js, no bloat โ€” just pure C
- **Handy** โ€” Message it from Telegram, it handles the rest
- **Loyal** โ€” Learns from memory, remembers across reboots
- **Energetic** โ€” USB power, 0.5 W, runs 24/7
- **Lovable** โ€” One ESP32-S3 board, $5, nothing else

## How It Works

![](assets/mimiclaw.png)

You send a message on Telegram. The ESP32-S3 picks it up over WiFi, feeds it into an agent loop โ€” the LLM thinks, calls tools, reads memory โ€” and sends the reply back. Supports both **Anthropic (Claude)** and **OpenAI (GPT)** as providers, switchable at runtime. Everything runs on a single $5 chip with all your data stored locally on flash.

## Quick Start

### What You Need

- An **ESP32-S3 dev board** with 16 MB flash and 8 MB PSRAM (e.g. Xiaozhi AI board, ~$10)
- A **USB Type-C cable**
- A **Telegram bot token** โ€” talk to [@BotFather](https://t.me/BotFather) on Telegram to create one
- An **Anthropic API key** โ€” from [console.anthropic.com](https://console.anthropic.com), or an **OpenAI API key** โ€” from [platform.openai.com](https://platform.openai.com)

### Install

```bash
# You need ESP-IDF v5.5+ installed first:
# https://docs.espressif.com/projects/esp-idf/en/v5.5.2/esp32s3/get-started/

git clone https://github.com/memovai/mimiclaw.git
cd mimiclaw

idf.py set-target esp32s3
```

### Configure

MimiClaw uses a **two-layer config** system: build-time defaults in `mimi_secrets.h`, with runtime overrides via the serial CLI. CLI values are stored in NVS flash and take priority over build-time values.

```bash
cp main/mimi_secrets.h.example main/mimi_secrets.h
```

Edit `main/mimi_secrets.h`:

```c
#define MIMI_SECRET_WIFI_SSID "YourWiFiName"
#define MIMI_SECRET_WIFI_PASS "YourWiFiPassword"
#define MIMI_SECRET_TG_TOKEN "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
#define MIMI_SECRET_API_KEY "sk-ant-api03-xxxxx"
#define MIMI_SECRET_MODEL_PROVIDER "anthropic" // "anthropic" or "openai"
#define MIMI_SECRET_SEARCH_KEY "" // optional: Brave Search API key
#define MIMI_SECRET_PROXY_HOST "" // optional: e.g. "10.0.0.1"
#define MIMI_SECRET_PROXY_PORT "" // optional: e.g. "7897"
```

Then build and flash:

```bash
# Clean build (required after any mimi_secrets.h change)
idf.py fullclean && idf.py build

# Find your serial port
ls /dev/cu.usb* # macOS
ls /dev/ttyACM* # Linux

# Flash and monitor (replace PORT with your port)
# USB adapter: likely /dev/cu.usbmodem11401 (macOS) or /dev/ttyACM0 (Linux)
idf.py -p PORT flash monitor
```

> **Important: Plug into the correct USB port!** Most ESP32-S3 boards have two USB-C ports. You must use the one labeled **USB** (native USB Serial/JTAG), **not** the one labeled **COM** (external UART bridge). Plugging into the wrong port will cause flash/monitor failures.
>
>
> Show reference photo
>
> Plug into the USB port, not COM
>
>

### CLI Commands

Connect via serial to configure or debug. **Config commands** let you change settings without recompiling โ€” just plug in a USB cable anywhere.

**Runtime config** (saved to NVS, overrides build-time defaults):

```
mimi> wifi_set MySSID MyPassword # change WiFi network
mimi> set_tg_token 123456:ABC... # change Telegram bot token
mimi> set_api_key sk-ant-api03-... # change API key (Anthropic or OpenAI)
mimi> set_model_provider openai # switch provider (anthropic|openai)
mimi> set_model gpt-4o # change LLM model
mimi> set_proxy 127.0.0.1 7897 # set HTTP proxy
mimi> clear_proxy # remove proxy
mimi> set_search_key BSA... # set Brave Search API key
mimi> config_show # show all config (masked)
mimi> config_reset # clear NVS, revert to build-time defaults
```

**Debug & maintenance:**

```
mimi> wifi_status # am I connected?
mimi> memory_read # see what the bot remembers
mimi> memory_write "content" # write to MEMORY.md
mimi> heap_info # how much RAM is free?
mimi> session_list # list all chat sessions
mimi> session_clear 12345 # wipe a conversation
mimi> restart # reboot
```

## Memory

MimiClaw stores everything as plain text files you can read and edit:

| File | What it is |
|------|------------|
| `SOUL.md` | The bot's personality โ€” edit this to change how it behaves |
| `USER.md` | Info about you โ€” name, preferences, language |
| `MEMORY.md` | Long-term memory โ€” things the bot should always remember |
| `2026-02-05.md` | Daily notes โ€” what happened today |
| `tg_12345.jsonl` | Chat history โ€” your conversation with the bot |

## Tools

MimiClaw supports tool calling for both Anthropic and OpenAI โ€” the LLM can call tools during a conversation and loop until the task is done (ReAct pattern).

| Tool | Description |
|------|-------------|
| `web_search` | Search the web via Brave Search API for current information |
| `get_current_time` | Fetch current date/time via HTTP and set the system clock |

To enable web search, set a [Brave Search API key](https://brave.com/search/api/) via `MIMI_SECRET_SEARCH_KEY` in `mimi_secrets.h`.

## Also Included

- **WebSocket gateway** on port 18789 โ€” connect from your LAN with any WebSocket client
- **OTA updates** โ€” flash new firmware over WiFi, no USB needed
- **Dual-core** โ€” network I/O and AI processing run on separate CPU cores
- **HTTP proxy** โ€” CONNECT tunnel support for restricted networks
- **Multi-provider** โ€” supports both Anthropic (Claude) and OpenAI (GPT), switchable at runtime
- **Tool use** โ€” ReAct agent loop with tool calling for both providers

## For Developers

Technical details live in the `docs/` folder:

- **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** โ€” system design, module map, task layout, memory budget, protocols, flash partitions
- **[docs/TODO.md](docs/TODO.md)** โ€” feature gap tracker and roadmap

## License

MIT

## Acknowledgments

Inspired by [OpenClaw](https://github.com/openclaw/openclaw) and [Nanobot](https://github.com/HKUDS/nanobot). MimiClaw reimplements the core AI agent architecture for embedded hardware โ€” no Linux, no server, just a $5 chip.

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=memovai/mimiclaw&type=Date)](https://star-history.com/#memovai/mimiclaw&Date)