finds.dev← search

// the find

tnm/zclaw

★ 2,197 · C · MIT · updated May 2026

Your personal AI assistant at all-in 888KiB (~35KB in app code). Running on an ESP32. GPIO, cron, custom tools, memory, and more.

zclaw is a C firmware that turns an ESP32 into an LLM-backed personal assistant with GPIO control, cron scheduling, and persistent memory — all under a 888 KiB binary budget. It talks to Anthropic, OpenAI, OpenRouter, or local Ollama, and surfaces via Telegram or a hosted web relay. Aimed at hardware hackers who want a real AI agent on a $5 chip, not a demo.

The 888 KiB all-in size constraint is enforced by CI (firmware-size-guard.yml), not just aspirational — that's a meaningful engineering commitment. The tool system is genuinely extensible: add a C handler and a registry entry in builtin_tools.def, and the LLM can call it; user_tools.c gives a clean hook for runtime additions without reflashing. The provisioning story is solid — credentials go to NVS, separate from firmware, so you can reflash without re-entering secrets. Host-side test harness (test/host/) lets you run agent and JSON logic tests on your laptop without hardware, which is the right call for embedded C.

The LLM conversation runs over HTTPS on device, so latency per message is high by nature — Telegram polling adds another round trip, and the benchmark tooling exists precisely because this hurts in practice. NVS flash encryption is opt-in (--flash-mode secure), meaning most users will store API keys in cleartext flash, which is a real concern if the device ever leaves your hands. The rate limits (100/hour, 1000/day) are compile-time constants in config.h — changing them requires a reflash, not a config update, which is awkward for tuning. Memory for the LLM context is fixed at compile time too, so long conversations will silently truncate rather than degrade gracefully.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →