
Il tuo assistente AI personale tutto-in-uno in 888KiB (~35KB di codice dell'app). In esecuzione su un ESP32. GPIO, cron, strumenti personalizzati, memoria e altro ancora.

Il più piccolo assistente personale AI possibile per ESP32.
zclaw è scritto in C e funziona su schede ESP32 con un rigoroso budget totale di firmware di <= 888 KiB nella build predefinita. Supporta attività programmate, controllo GPIO, memoria persistente e composizione di strumenti personalizzati tramite linguaggio naturale.
Il limite di 888 KiB è la dimensione totale del firmware, non solo il codice dell'app. Include la logica zclaw più il runtime ESP-IDF/FreeRTOS, Wi-Fi/rete, TLS/crypto e overhead del bundle di certificati.
Divertente da usare, divertente da smanettare.
Usa il sito di documentazione per guide complete e riferimenti.
Bootstrap con una riga di comando (macOS/Linux):
bash <(curl -fsSL https://raw.githubusercontent.com/tnm/zclaw/main/scripts/bootstrap.sh)
Già clonato?
./install.sh
Installazione non interattiva:
./install.sh -y
bootstrap.sh clona/aggiorna il repository e poi esegue ./install.sh. Puoi prima ispezionare/verificare il flusso di bootstrap (inclusi i controlli di integrità ZCLAW_BOOTSTRAP_SHA256); vedi la documentazione per iniziare.apt-get, pacman, dnf o zypper durante l'esecuzione di install.sh.no a meno che non si passi -y (o si applichino preferenze salvate/flag espliciti).--flash-mode secure nel flusso di installazione, o direttamente ./scripts/flash-secure.sh).daily, periodic e one-shot once)get_diagnostics (ambiti quick/runtime/memory/rates/time/all)gpio_read_all, i2c_scan, i2c_read/i2c_write e dht_read)neutral, friendly, technical, Target testati: ESP32, ESP32-C3, ESP32-S3 e ESP32-C6. Le schede classiche ESP32-WROOM/ESP32 DevKit sono supportate. Rapporti di test per altre varianti ESP32 sono molto graditi!
Scheda iniziale consigliata: Seeed XIAO ESP32-C3
Loop veloce tipico:
./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
Imposta il profilo una volta, poi riutilizzalo:
./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
Maggiori dettagli nella guida allo sviluppo locale e hacking.
./scripts/flash-secure.sh - Flash con crittografia./scripts/provision.sh - Fornisce credenziali a NVS./scripts/provision-dev.sh - Wrapper profilo locale per provisioning ripetuto./scripts/telegram-clear-backlog.sh - Cancella gli aggiornamenti Telegram in coda./scripts/erase.sh - Cancella solo NVS (--nvs) o flash completo (--all) con protezioni./scripts/monitor.sh - Monitor seriale./scripts/emulate.sh - Esegui profilo QEMU./scripts/web-relay.sh - Relay ospitato + interfaccia chat mobile./scripts/benchmark.sh - Benchmark latenza relay/seriale./scripts/test.sh - Esegui flussi di test host/dispositivoQuando la scheda è in modalità sicura, non fornita, o il percorso LLM non è disponibile, puoi comunque operarla tramite USB seriale senza Wi-Fi o round trip LLM.
./scripts/monitor.sh /dev/cu.usbmodem1101
# then type:
/wifi status
/wifi scan
/bootcount
/gpio all
/reboot
Comandi disponibili solo localmente:
/gpio [all|pin|pin high|pin low]/diag [scope] [verbose]/reboot/wifi [status|scan]/bootcount/factory-reset confirm (distruttivo; cancella NVS e riavvia)Riferimento completo: Console di amministrazione locale
Ripartizione predefinita corrente per esp32 (byte dell'immagine raggruppati da idf.py -B build size-components):
La dimensione totale dell'immagine da questa build è 853034 byte; zclaw.bin con padding è 853184 byte (~833.2 KiB), lasciando 56128 byte (~54.8 KiB) sotto il limite di 888 KiB.
Benchmark del percorso relay (include elaborazione relay web + round trip del dispositivo):
./scripts/benchmark.sh --mode relay --count 20 --message "ping"
Benchmark seriale diretto (round trip host + tempo di prima risposta). Se il firmware registra righe METRIC request ..., il rapporto include anche il timing lato dispositivo:
./scripts/benchmark.sh --mode serial --serial-port /dev/cu.usbmodem1101 --count 20 --message "ping"
MIT
./scripts/provision.sh../scripts/provision.sh o ./scripts/provision-dev.sh in qualsiasi momento (nessun reflash richiesto) per aggiornare le credenziali runtime: SSID/password WiFi, backend/modello/chiave API LLM (o URL API Ollama) e token Telegram/lista consentita ID chat.100/ora e 1000/giorno; modifica i limiti in fase di compilazione in main/config.h (RATELIMIT_*)../scripts/web-relay.sh e invia un messaggio di test per confermare che il dispositivo possa rispondere../scripts/release-port.sh e riprova../scripts/provision-dev.sh con un file di profilo locale (provision-dev.sh avvolge provision.sh --yes).witty./scripts/test-api.sh - Esegui controlli API provider live (manuale/locale)| Segmento | Byte | Dimensione | Percentuale |
|---|
logica app zclaw (libmain.a) | 39276 | ~38.4 KiB | ~4.6% |
| Stack Wi-Fi + rete | 378624 | ~369.8 KiB | ~44.4% |
| Stack TLS/crittografia | 134923 | ~131.8 KiB | ~15.8% |
| bundle di certificati + metadati app | 98425 | ~96.1 KiB | ~11.5% |
| altro ESP-IDF/runtime/driver/libc | 201786 | ~197.1 KiB | ~23.7% |