[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6537":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},6537,"mimiclaw","memovai\u002Fmimiclaw","memovai","MimiClaw: Run OpenClaw on a $5 chip. No OS(Linux). No Node.js. No Mac mini. No Raspberry Pi. No VPS. Hardware agents OS.","https:\u002F\u002Fmimiclaw.io",null,"C",5498,806,50,53,0,4,39,116,37,39.72,"MIT License",false,"main",[26,27,28,29,30,31],"ai","assistant","clawdbot","edge-ai-agents","memory","openclaw","2026-06-12 02:01:26","# MimiClaw: Pocket AI Assistant on a $5 Chip\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fbanner.png\" alt=\"MimiClaw\" width=\"500\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg\" alt=\"License: MIT\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdeepwiki.com\u002Fmemovai\u002Fmimiclaw\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDeepWiki-mimiclaw-blue.svg\" alt=\"DeepWiki\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002Fr8ZxSvB8Yr\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-mimiclaw-5865F2?logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fssslvky\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FX-@ssslvky-black?logo=x\" alt=\"X\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>\u003Ca href=\"README.md\">English\u003C\u002Fa> | \u003Ca href=\"README_CN.md\">中文\u003C\u002Fa> | \u003Ca href=\"README_JA.md\">日本語\u003C\u002Fa>\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n**The world's first AI assistant(OpenClaw) on a $5 chip. No Linux. No Node.js. Just pure C**\n\nMimiClaw 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.\n\n## Meet MimiClaw\n\n- **Tiny** — No Linux, no Node.js, no bloat — just pure C\n- **Handy** — Message it from Telegram, it handles the rest\n- **Loyal** — Learns from memory, remembers across reboots\n- **Energetic** — USB power, 0.5 W, runs 24\u002F7\n- **Lovable** — One ESP32-S3 board, $5, nothing else\n\n## How It Works\n\n![](assets\u002Fmimiclaw.png)\n\nYou 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.\n\n## Quick Start\n\n### What You Need\n\n- An **ESP32-S3 dev board** with 16 MB flash and 8 MB PSRAM (e.g. Xiaozhi AI board, ~$10)\n- A **USB Type-C cable**\n- A **Telegram bot token** — talk to [@BotFather](https:\u002F\u002Ft.me\u002FBotFather) on Telegram to create one\n- An **Anthropic API key** — from [console.anthropic.com](https:\u002F\u002Fconsole.anthropic.com), or an **OpenAI API key** — from [platform.openai.com](https:\u002F\u002Fplatform.openai.com)\n\n### Install\n\n```bash\n# You need ESP-IDF v5.5+ installed first:\n# https:\u002F\u002Fdocs.espressif.com\u002Fprojects\u002Fesp-idf\u002Fen\u002Fv5.5.2\u002Fesp32s3\u002Fget-started\u002F\n\ngit clone https:\u002F\u002Fgithub.com\u002Fmemovai\u002Fmimiclaw.git\ncd mimiclaw\n\nidf.py set-target esp32s3\n```\n\n\u003Cdetails>\n\u003Csummary>Ubuntu Install\u003C\u002Fsummary>\n\nRecommended baseline:\n\n- Ubuntu 22.04\u002F24.04\n- Python >= 3.10\n- CMake >= 3.16\n- Ninja >= 1.10\n- Git >= 2.34\n- flex >= 2.6\n- bison >= 3.8\n- gperf >= 3.1\n- dfu-util >= 0.11\n- `libusb-1.0-0`, `libffi-dev`, `libssl-dev`\n\nInstall and build on Ubuntu:\n\n```bash\nsudo apt-get update\nsudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv \\\n  cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0\n\n.\u002Fscripts\u002Fsetup_idf_ubuntu.sh\n.\u002Fscripts\u002Fbuild_ubuntu.sh\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>macOS Install\u003C\u002Fsummary>\n\nRecommended baseline:\n\n- macOS 12\u002F13\u002F14\n- Xcode Command Line Tools\n- Homebrew\n- Python >= 3.10\n- CMake >= 3.16\n- Ninja >= 1.10\n- Git >= 2.34\n- flex >= 2.6\n- bison >= 3.8\n- gperf >= 3.1\n- dfu-util >= 0.11\n- `libusb`, `libffi`, `openssl`\n\nInstall and build on macOS:\n\n```bash\nxcode-select --install\n\u002Fbin\u002Fbash -c \"$(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FHomebrew\u002Finstall\u002FHEAD\u002Finstall.sh)\"\n\n.\u002Fscripts\u002Fsetup_idf_macos.sh\n.\u002Fscripts\u002Fbuild_macos.sh\n```\n\n\u003C\u002Fdetails>\n\n### Configure\n\nMimiClaw 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.\n\n```bash\ncp main\u002Fmimi_secrets.h.example main\u002Fmimi_secrets.h\n```\n\nEdit `main\u002Fmimi_secrets.h`:\n\n```c\n#define MIMI_SECRET_WIFI_SSID       \"YourWiFiName\"\n#define MIMI_SECRET_WIFI_PASS       \"YourWiFiPassword\"\n#define MIMI_SECRET_TG_TOKEN        \"123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11\"\n#define MIMI_SECRET_API_KEY         \"sk-ant-api03-xxxxx\"\n#define MIMI_SECRET_MODEL_PROVIDER  \"anthropic\"     \u002F\u002F \"anthropic\" or \"openai\"\n#define MIMI_SECRET_SEARCH_KEY      \"\"              \u002F\u002F optional: Brave Search API key\n#define MIMI_SECRET_TAVILY_KEY      \"\"              \u002F\u002F optional: Tavily API key (preferred)\n#define MIMI_SECRET_PROXY_HOST      \"\"              \u002F\u002F optional: e.g. \"10.0.0.1\"\n#define MIMI_SECRET_PROXY_PORT      \"\"              \u002F\u002F optional: e.g. \"7897\"\n```\n\nThen build and flash:\n\n```bash\n# Clean build (required after any mimi_secrets.h change)\nidf.py fullclean && idf.py build\n\n# Find your serial port\nls \u002Fdev\u002Fcu.usb*          # macOS\nls \u002Fdev\u002FttyACM*          # Linux\n\n# Flash and monitor (replace PORT with your port)\n# USB adapter: likely \u002Fdev\u002Fcu.usbmodem11401 (macOS) or \u002Fdev\u002FttyACM0 (Linux)\nidf.py -p PORT flash monitor\n```\n\n> **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\u002FJTAG), **not** the one labeled **COM** (external UART bridge). Plugging into the wrong port will cause flash\u002Fmonitor failures.\n>\n> \u003Cdetails>\n> \u003Csummary>Show reference photo\u003C\u002Fsummary>\n>\n> \u003Cimg src=\"assets\u002Fesp32s3-usb-port.jpg\" alt=\"Plug into the USB port, not COM\" width=\"480\" \u002F>\n>\n> \u003C\u002Fdetails>\n\n### CLI Commands (via UART\u002FCOM port)\n\nConnect via serial to configure or debug. **Config commands** let you change settings without recompiling — just plug in a USB cable anywhere.\n\n**Runtime config** (saved to NVS, overrides build-time defaults):\n\n```\nmimi> wifi_set MySSID MyPassword   # change WiFi network\nmimi> set_tg_token 123456:ABC...   # change Telegram bot token\nmimi> set_api_key sk-ant-api03-... # change API key (Anthropic or OpenAI)\nmimi> set_model_provider openai    # switch provider (anthropic|openai)\nmimi> set_model gpt-4o             # change LLM model\nmimi> set_proxy 127.0.0.1 7897  # set HTTP proxy\nmimi> clear_proxy                  # remove proxy\nmimi> set_search_key BSA...        # set Brave Search API key\nmimi> set_tavily_key tvly-...      # set Tavily API key (preferred)\nmimi> config_show                  # show all config (masked)\nmimi> config_reset                 # clear NVS, revert to build-time defaults\n```\n\n**Debug & maintenance:**\n\n```\nmimi> wifi_status              # am I connected?\nmimi> memory_read              # see what the bot remembers\nmimi> memory_write \"content\"   # write to MEMORY.md\nmimi> heap_info                # how much RAM is free?\nmimi> session_list             # list all chat sessions\nmimi> session_clear 12345      # wipe a conversation\nmimi> heartbeat_trigger           # manually trigger a heartbeat check\nmimi> cron_start                  # start cron scheduler now\nmimi> restart                     # reboot\n```\n\n### USB (JTAG) vs UART: Which Port for What\n\nMost ESP32-S3 dev boards expose **two USB-C ports**:\n\n| Port | Use for |\n|------|---------|\n| **USB** (JTAG) | `idf.py flash`, JTAG debugging |\n| **COM** (UART) | **REPL CLI**, serial console |\n\n> **REPL requires the UART (COM) port.** The USB (JTAG) port does not support interactive REPL input.\n\n\u003Cdetails>\n\u003Csummary>Port details & recommended workflow\u003C\u002Fsummary>\n\n| Port | Label | Protocol |\n|------|-------|----------|\n| **USB** | USB \u002F JTAG | Native USB Serial\u002FJTAG |\n| **COM** | UART \u002F COM | External UART bridge (CP2102\u002FCH340) |\n\nThe ESP-IDF console\u002FREPL is configured to use UART by default (`CONFIG_ESP_CONSOLE_UART_DEFAULT=y`).\n\n**If you have both ports connected simultaneously:**\n\n- USB (JTAG) handles flash\u002Fdownload and provides secondary serial output\n- UART (COM) provides the primary interactive console for the REPL\n- macOS: both appear as `\u002Fdev\u002Fcu.usbmodem*` or `\u002Fdev\u002Fcu.usbserial-*` — run `ls \u002Fdev\u002Fcu.usb*` to identify\n- Linux: USB (JTAG) → `\u002Fdev\u002FttyACM0`, UART → `\u002Fdev\u002FttyUSB0`\n\n**Recommended workflow:**\n\n```bash\n# Flash via USB (JTAG) port\nidf.py -p \u002Fdev\u002Fcu.usbmodem11401 flash\n\n# Open REPL via UART (COM) port\nidf.py -p \u002Fdev\u002Fcu.usbserial-110 monitor\n# or use any serial terminal: screen, minicom, PuTTY at 115200 baud\n```\n\n\u003C\u002Fdetails>\n\n## Memory\n\nMimiClaw stores everything as plain text files you can read and edit:\n\n| File | What it is |\n|------|------------|\n| `SOUL.md` | The bot's personality — edit this to change how it behaves |\n| `USER.md` | Info about you — name, preferences, language |\n| `MEMORY.md` | Long-term memory — things the bot should always remember |\n| `HEARTBEAT.md` | Task list the bot checks periodically and acts on autonomously |\n| `cron.json` | Scheduled jobs — recurring or one-shot tasks created by the AI |\n| `2026-02-05.md` | Daily notes — what happened today |\n| `tg_12345.jsonl` | Chat history — your conversation with the bot |\n\n## Tools\n\nMimiClaw 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).\n\n| Tool | Description |\n|------|-------------|\n| `web_search` | Search the web via Tavily (preferred) or Brave for current information |\n| `get_current_time` | Fetch current date\u002Ftime via HTTP and set the system clock |\n| `cron_add` | Schedule a recurring or one-shot task (the LLM creates cron jobs on its own) |\n| `cron_list` | List all scheduled cron jobs |\n| `cron_remove` | Remove a cron job by ID |\n\nTo enable web search, set a [Tavily API key](https:\u002F\u002Fapp.tavily.com\u002Fhome) via `MIMI_SECRET_TAVILY_KEY` (preferred), or a [Brave Search API key](https:\u002F\u002Fbrave.com\u002Fsearch\u002Fapi\u002F) via `MIMI_SECRET_SEARCH_KEY` in `mimi_secrets.h`.\n\n## Cron Tasks\n\nMimiClaw has a built-in cron scheduler that lets the AI schedule its own tasks. The LLM can create recurring jobs (\"every N seconds\") or one-shot jobs (\"at unix timestamp\") via the `cron_add` tool. When a job fires, its message is injected into the agent loop — so the AI wakes up, processes the task, and responds.\n\nJobs are persisted to SPIFFS (`cron.json`) and survive reboots. Example use cases: daily summaries, periodic reminders, scheduled check-ins.\n\n## Heartbeat\n\nThe heartbeat service periodically reads `HEARTBEAT.md` from SPIFFS and checks for actionable tasks. If uncompleted items are found (anything that isn't an empty line, a header, or a checked `- [x]` box), it sends a prompt to the agent loop so the AI can act on them autonomously.\n\nThis turns MimiClaw into a proactive assistant — write tasks to `HEARTBEAT.md` and the bot will pick them up on the next heartbeat cycle (default: every 30 minutes).\n\n## Also Included\n\n- **WebSocket gateway** on port 18789 — connect from your LAN with any WebSocket client\n- **OTA updates** — flash new firmware over WiFi, no USB needed\n- **Dual-core** — network I\u002FO and AI processing run on separate CPU cores\n- **HTTP proxy** — CONNECT tunnel support for restricted networks\n- **Multi-provider** — supports both Anthropic (Claude) and OpenAI (GPT), switchable at runtime\n- **Cron scheduler** — the AI can schedule its own recurring and one-shot tasks, persisted across reboots\n- **Heartbeat** — periodically checks a task file and prompts the AI to act autonomously\n- **Tool use** — ReAct agent loop with tool calling for both providers\n\n## For Developers\n\nTechnical details live in the `docs\u002F` folder:\n\n- **[docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md)** — system design, module map, task layout, memory budget, protocols, flash partitions\n- **[docs\u002FTODO.md](docs\u002FTODO.md)** — feature gap tracker and roadmap\n- **[docs\u002FWIFI_ONBOARDING_AP.md](docs\u002FWIFI_ONBOARDING_AP.md)** — how the local `MimiClaw-XXXX` onboarding\u002Fadmin AP flow works\n- **[docs\u002Ftool-setup\u002F](docs\u002Ftool-setup\u002FREADME.md)** — configuration guides for external service integrations (Tavily, etc.)\n\n## Contributing\n\nPlease read **[CONTRIBUTING.md](CONTRIBUTING.md)** before opening issues or pull requests.\n\n## Contributors\n\nThanks to everyone who has contributed to MimiClaw.\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmemovai\u002Fmimiclaw\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=memovai\u002Fmimiclaw\" alt=\"MimiClaw contributors\" \u002F>\n\u003C\u002Fa>\n\n## License\n\nMIT\n\n## Acknowledgments\n\nInspired by [OpenClaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw) and [Nanobot](https:\u002F\u002Fgithub.com\u002FHKUDS\u002Fnanobot). MimiClaw reimplements the core AI agent architecture for embedded hardware — no Linux, no server, just a $5 chip.\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=memovai%2Fmimiclaw&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=memovai\u002Fmimiclaw&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=memovai\u002Fmimiclaw&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=memovai\u002Fmimiclaw&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n","MimiClaw 是一个基于 ESP32-S3 芯片的个人 AI 助手项目，可以在仅需5美元的硬件上运行。其核心功能包括通过 Telegram 与用户进行交互，处理各种任务，并具备本地记忆能力以实现持续学习和数据保存。该项目完全使用 C 语言编写，不依赖于 Linux、Node.js 或其他操作系统，具有极高的资源效率。MimiClaw 适合那些希望在低成本、低功耗条件下拥有个人智能助手的场景，特别适用于边缘计算设备或对隐私保护有较高要求的应用环境。",2,"2026-06-11 03:07:29","top_language"]