
Seu assistente pessoal de IA em apenas 888KiB (~35KB de código do aplicativo). Executando em um ESP32. GPIO, cron, ferramentas personalizadas, memória e muito mais.

O menor assistente pessoal de IA possível para ESP32.
zclaw é escrito em C e roda em placas ESP32 com um orçamento estrito de firmware all-in de <= 888 KiB na build padrão. Suporta tarefas agendadas, controle GPIO, memória persistente e composição personalizada de ferramentas através de linguagem natural.
O limite de 888 KiB é o tamanho total do firmware all-in, não apenas o código do aplicativo.
Inclui a lógica do zclaw mais o runtime ESP-IDF/FreeRTOS, Wi-Fi/rede, TLS/criptografia e overhead do pacote de certificados.
Divertido de usar, divertido de hackear.
Use o site de documentação para guias completos e referência.
Linha única de inicialização (macOS/Linux):
bash <(curl -fsSL https://raw.githubusercontent.com/tnm/zclaw/main/scripts/bootstrap.sh)
Já clonou?
./install.sh
Instalação não interativa:
./install.sh -y
bootstrap.sh clona/atualiza o repositório e então executa ./install.sh. Você pode inspecionar/verificar o fluxo de inicialização primeiro (incluindo verificações de integridade ZCLAW_BOOTSTRAP_SHA256); consulte a documentação Getting Started docs.apt-get, pacman, dnf ou zypper durante execuções do install.sh.no, a menos que você passe -y (ou preferências salvas/sinalizadores explícitos sejam aplicados).--flash-mode secure no fluxo de instalação, ou ./scripts/flash-secure.sh diretamente).diário, periódico e único uma vez)get_diagnostics (escopos: quick/runtime/memory/rates/time/all)gpio_read_all, i2c_scan, i2c_read/i2c_write e dht_read)neutra, amigável, técnica, Alvos testados: ESP32, ESP32-C3, ESP32-S3 e ESP32-C6. Placas clássicas ESP32-WROOM/ESP32 DevKit são suportadas. Relatórios de teste para outras variantes ESP32 são muito bem-vindos!
Placa inicial recomendada: Seeed XIAO ESP32-C3
Loop rápido típico:
./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
Configure o perfil uma vez e depois reutilize:
./scripts/provision-dev.sh --write-template
# edite ~/.config/zclaw/dev.env
./scripts/provision-dev.sh --show-config
./scripts/provision-dev.sh
# se o Telegram continuar reproduzindo atualizações obsoletas:
./scripts/telegram-clear-backlog.sh --show-config
Mais detalhes no guia Local Dev & Hacking.
./scripts/flash-secure.sh - Gravar com criptografia./scripts/provision.sh - Provisionar credenciais para NVS./scripts/provision-dev.sh - Wrapper de perfil local para provisionamento repetido./scripts/telegram-clear-backlog.sh - Limpar atualizações enfileiradas do Telegram./scripts/erase.sh - Apagar apenas NVS (--nvs) ou flash completo (--all) com proteções./scripts/monitor.sh - Monitor serial./scripts/emulate.sh - Executar perfil QEMU./scripts/web-relay.sh - Relay hospedado + interface de chat móvel./scripts/benchmark.sh - Benchmark de latência relay/serial./scripts/test.sh - Executar fluxos de teste host/dispositivoQuando a placa está em modo seguro, não provisionada, ou o caminho LLM está indisponível, você ainda pode operá-la via USB serial sem Wi-Fi ou uma ida e volta ao LLM.
./scripts/monitor.sh /dev/cu.usbmodem1101
# então digite:
/wifi status
/wifi scan
/bootcount
/gpio all
/reboot
Comandos locais disponíveis:
/gpio [all|pin|pin high|pin low] - Define ou lê pinos GPIO./diag [scope] [verbose] - Diagnóstico com escopo e verbosidade opcionais./reboot - Reinicializar./wifi [status|scan] - Status ou scan do Wi-Fi./bootcount - Mostrar contagem de boot./factory-reset confirm - Reset de fábrica (destrutivo; apaga NVS e reinicializa).Referência completa: Local Admin Console
Detalhamento atual do esp32 padrão (bytes de imagem agrupados de idf.py -B build size-components):
O tamanho total da imagem desta build é 853034 bytes; o zclaw.bin preenchido tem 853184 bytes (~833.2 KiB), deixando 56128 bytes (~54.8 KiB) abaixo do limite de 888 KiB.
Benchmark do caminho relay (inclui processamento do relay web + ida e volta do dispositivo):
./scripts/benchmark.sh --mode relay --count 20 --message "ping"
Benchmark serial direto (ida e volta do host + tempo da primeira resposta). Se o firmware registrar linhas METRIC request ..., o relatório também inclui o tempo do lado do dispositivo:
./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 a qualquer momento (sem necessidade de regravação) para atualizar credenciais de runtime: SSID/senha WiFi, backend/modelo/chave API LLM (ou URL da API Ollama) e token Telegram/lista de permissão de chat ID.100/hora e 1000/dia; altere os limites em tempo de compilação em main/config.h (RATELIMIT_*)../scripts/web-relay.sh e envie uma mensagem de teste para confirmar que o dispositivo pode responder../scripts/release-port.sh e tente novamente../scripts/provision-dev.sh com um arquivo de perfil local (provision-dev.sh envolve provision.sh --yes).espirituosa./scripts/test-api.sh - Executar verificações ao vivo da API do provedor (manual/local)| Segmento | Bytes | Tamanho | Participação |
|---|
Lógica do aplicativo zclaw (libmain.a) | 39276 | ~38.4 KiB | ~4.6% |
| Pilha Wi-Fi + rede | 378624 | ~369.8 KiB | ~44.4% |
| Pilha TLS/criptografia | 134923 | ~131.8 KiB | ~15.8% |
| Pacote de certificados + metadados do aplicativo | 98425 | ~96.1 KiB | ~11.5% |
| Outros ESP-IDF/runtime/drivers/libc | 201786 | ~197.1 KiB | ~23.7% |