
Votre assistant IA personnel d'une taille totale de 888 Kio (~35 Ko de code applicatif). Fonctionne sur un ESP32. GPIO, cron, outils personnalisés, mémoire, et plus encore.

Le plus petit assistant personnel IA possible pour ESP32.
zclaw est écrit en C et fonctionne sur les cartes ESP32 avec un objectif strict de budget firmware tout-en-un de <= 888 KiB sur la construction par défaut. Il prend en charge les tâches planifiées, le contrôle GPIO, la mémoire persistante et la composition d'outils personnalisés via le langage naturel.
La limite de 888 KiB correspond à la taille totale du firmware, pas seulement au code applicatif.
Elle inclut la logique zclaw ainsi que le runtime ESP-IDF/FreeRTOS, le Wi-Fi/réseau, TLS/crypto et la surcharge du bundle de certificats.
Amusant à utiliser, amusant à bidouiller.
Utilisez le site de documentation pour les guides complets et les références.
Bootstrap en une ligne (macOS/Linux) :
bash <(curl -fsSL https://raw.githubusercontent.com/tnm/zclaw/main/scripts/bootstrap.sh)
Déjà cloné ?
./install.sh
Installation non interactive :
./install.sh -y
bootstrap.sh clone/met à jour le dépôt puis exécute ./install.sh. Vous pouvez d'abord inspecter/vérifier le flux bootstrap (y compris les vérifications d'intégrité ZCLAW_BOOTSTRAP_SHA256) ; voir la documentation Démarrage.apt-get, pacman, dnf, ou zypper lors des exécutions de install.sh.no sauf si vous passez -y (ou que des préférences enregistrées/drapeaux explicites s'appliquent).--flash-mode secure dans le flux d'installation, ou directement ./scripts/flash-secure.sh).daily, periodic, et unique once)get_diagnostics (portées quick/runtime/memory/rates/time/all)gpio_read_all, i2c_scan, i2c_read/i2c_write, et dht_read)neutral, friendly, technical, Cibles testées : ESP32, ESP32-C3, ESP32-S3 et ESP32-C6. Les cartes classiques ESP32-WROOM/ESP32 DevKit sont supportées. Les rapports de test pour d'autres variantes ESP32 sont les bienvenus !
Carte de démarrage recommandée : Seeed XIAO ESP32-C3
Boucle rapide typique :
./scripts/test.sh host
./scripts/build.sh
./scripts/flash.sh --kill-monitor /dev/cu.usbmodem1101
./scripts/provision-dev.sh --port /dev/cu.usbmodem1101
./scripts/monitor.sh /dev/cu.usbmodem1101
Configuration du profil une fois, puis réutilisation :
./scripts/provision-dev.sh --write-template
# edit ~/.config/zclaw/dev.env
./scripts/provision-dev.sh --show-config
./scripts/provision-dev.sh
# if Telegram keeps replaying stale updates:
./scripts/telegram-clear-backlog.sh --show-config
Plus de détails dans le guide Développement local et bidouillage.
./scripts/flash-secure.sh - Flash avec chiffrement./scripts/provision.sh - Provisionne les identifiants dans NVS./scripts/provision-dev.sh - Wrapper de profil local pour un provisionnement répété./scripts/telegram-clear-backlog.sh - Efface les mises à jour Telegram en attente./scripts/erase.sh - Efface uniquement NVS (--nvs) ou flash complet (--all) avec garde-fous./scripts/monitor.sh - Moniteur série./scripts/emulate.sh - Exécute le profil QEMU./scripts/web-relay.sh - Relais hébergé + interface de chat mobile./scripts/benchmark.sh - Benchmark de la latence relais/série./scripts/test.sh - Exécute les flux de test hôte/appareilLorsque la carte est en mode sans échec, non provisionnée, ou que le chemin LLM est indisponible, vous pouvez toujours l'utiliser via USB série sans Wi-Fi ni aller-retour LLM.
./scripts/monitor.sh /dev/cu.usbmodem1101
# then type:
/wifi status
/wifi scan
/bootcount
/gpio all
/reboot
Commandes locales uniquement disponibles :
/gpio [all|pin|pin high|pin low]/diag [scope] [verbose]/reboot/wifi [status|scan]/bootcount/factory-reset confirm (destructif ; efface NVS et redémarre)Référence complète : Console d'administration locale
Répartition actuelle par défaut pour esp32 (octets d'image groupés depuis idf.py -B build size-components) :
La taille totale de l'image de cette construction est de 853034 octets ; le fichier zclaw.bin rempli est de 853184 octets (~833.2 Kio), laissant 56128 octets (~54.8 Kio) sous la limite de 888 Kio.
Benchmark du chemin relais (inclut le traitement du relais web + aller-retour appareil) :
./scripts/benchmark.sh --mode relay --count 20 --message "ping"
Benchmark série direct (aller-retour hôte + temps de première réponse). Si le firmware enregistre
des lignes METRIC request ..., le rapport inclut également le timing côté appareil :
./scripts/benchmark.sh --mode serial --serial-port /dev/cu.usbmodem1101 --count 20 --message "ping"
MIT
./scripts/provision.sh../scripts/provision.sh ou ./scripts/provision-dev.sh à tout moment (pas besoin de reflash) pour mettre à jour les identifiants d'exécution : SSID/mot de passe WiFi, backend/modèle/clé API LLM (ou URL API Ollama), et jeton Telegram/ liste blanche d'ID de chat.100/heure et 1000/jour ; modifiez les limites au moment de la compilation dans main/config.h (RATELIMIT_*)../scripts/web-relay.sh et envoyez un message test pour confirmer que l'appareil peut répondre../scripts/release-port.sh et réessayez../scripts/provision-dev.sh avec un fichier de profil local (provision-dev.sh encapsule provision.sh --yes).witty./scripts/test-api.sh - Exécute les vérifications d'API fournisseur en direct (manuel/local)| Segment | Octets | Taille | Part |
|---|
Logique applicative zclaw (libmain.a) | 39276 | ~38.4 KiB | ~4.6% |
| Pile Wi-Fi + réseau | 378624 | ~369.8 KiB | ~44.4% |
| Pile TLS/crypto | 134923 | ~131.8 KiB | ~15.8% |
| Bundle de certificats + métadonnées applicatives | 98425 | ~96.1 KiB | ~11.5% |
| Autres ESP-IDF/runtime/pilotes/libc | 201786 | ~197.1 KiB | ~23.7% |