
Tu asistente personal de IA, todo en 888KiB (~35KB en código de aplicación). Ejecutándose en un ESP32. GPIO, cron, herramientas personalizadas, memoria y más.

El asistente personal de IA más pequeño posible para ESP32.
zclaw está escrito en C y se ejecuta en placas ESP32 con un presupuesto estricto de firmware todo incluido de <= 888 KiB en la compilación predeterminada. Admite tareas programadas, control GPIO, memoria persistente y composición de herramientas personalizadas mediante lenguaje natural.
El límite de 888 KiB es el tamaño total del firmware, no solo el código de la aplicación.
Incluye la lógica de zclaw más el tiempo de ejecución de ESP-IDF/FreeRTOS, Wi-Fi/redes, TLS/criptografía y la sobrecarga del paquete de certificados.
Divertido de usar, divertido de hackear.
Utiliza el sitio de documentación para guías completas y referencia.
Arranque de una línea (macOS/Linux):
bash <(curl -fsSL https://raw.githubusercontent.com/tnm/zclaw/main/scripts/bootstrap.sh)
¿Ya clonado?
./install.sh
Instalación no interactiva:
./install.sh -y
bootstrap.sh clona/actualiza el repositorio y luego ejecuta ./install.sh. Puedes inspeccionar/verificar el flujo de arranque primero (incluyendo las verificaciones de integridad ZCLAW_BOOTSTRAP_SHA256); consulta la documentación de inicio.apt-get, pacman, dnf o zypper durante la ejecución de install.sh.no a menos que pases -y (o se apliquen preferencias guardadas/banderas explícitas).--flash-mode secure en el flujo de instalación, o ./scripts/flash-secure.sh directamente).daily, periodic y de una sola vez once)get_diagnostics (alcances: quick/runtime/memory/rates/time/all)gpio_read_all, i2c_scan, i2c_read/i2c_write y dht_read)neutral, friendly, technical, Objetivos probados: ESP32, ESP32-C3, ESP32-S3 y ESP32-C6. Las placas clásicas ESP32-WROOM/ESP32 DevKit son compatibles. ¡Los informes de prueba para otras variantes de ESP32 son muy bienvenidos!
Placa de inicio recomendada: Seeed XIAO ESP32-C3
Bucle 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
Configuración de perfil una vez, luego reutiliza:
./scripts/provision-dev.sh --write-template
# editar ~/.config/zclaw/dev.env
./scripts/provision-dev.sh --show-config
./scripts/provision-dev.sh
# si Telegram sigue reproduciendo actualizaciones obsoletas:
./scripts/telegram-clear-backlog.sh --show-config
Más detalles en la Guía de desarrollo local y hacking.
./scripts/flash-secure.sh - Flashear con cifrado./scripts/provision.sh - Aprovisionar credenciales en NVS./scripts/provision-dev.sh - Envoltorio de perfil local para aprovisionamiento repetido./scripts/telegram-clear-backlog.sh - Limpiar actualizaciones de Telegram en cola./scripts/erase.sh - Borrar solo NVS (--nvs) o flash completo (--all) con protecciones./scripts/monitor.sh - Monitor serie./scripts/emulate.sh - Ejecutar perfil QEMU./scripts/web-relay.sh - Relé alojado + interfaz de chat móvil./scripts/benchmark.sh - Evaluar latencia del relé/serie./scripts/test.sh - Ejecutar flujos de prueba host/dispositivoCuando la placa esté en modo seguro, sin aprovisionar, o la ruta del LLM no esté disponible, aún puedes operarla a través del USB serie sin Wi-Fi ni un viaje de ida y vuelta al LLM.
./scripts/monitor.sh /dev/cu.usbmodem1101
# luego escribe:
/wifi status
/wifi scan
/bootcount
/gpio all
/reboot
Comandos disponibles solo localmente:
/gpio [all|pin|pin high|pin low]/diag [alcance] [verbose]/reboot/wifi [status|scan]/bootcount/factory-reset confirm (destructivo; borra NVS y reinicia)Referencia completa: Consola de administración local
Desglose predeterminado actual de esp32 (bytes de imagen agrupados desde idf.py -B build size-components):
El tamaño total de la imagen de esta compilación es 853034 bytes; el zclaw.bin rellenado es 853184 bytes (~833.2 KiB), dejando 56128 bytes (~54.8 KiB) por debajo del límite de 888 KiB.
Evaluación comparativa de la ruta del relé (incluye procesamiento del relé web + viaje de ida y vuelta del dispositivo):
./scripts/benchmark.sh --mode relay --count 20 --message "ping"
Evaluación comparativa directa por serie (viaje de ida y vuelta del host + tiempo de primera respuesta). Si el firmware registra líneas METRIC request ..., el informe también incluye tiempos del lado del 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 en cualquier momento (sin necesidad de reflashear) para actualizar las credenciales en tiempo de ejecución: SSID/contraseña WiFi, backend/modelo/clave API de LLM (o URL de API de Ollama), y token/lista blanca de ID de chat de Telegram.100/hora y 1000/día; cambia los límites en tiempo de compilación en main/config.h (RATELIMIT_*)../scripts/web-relay.sh y envía un mensaje de prueba para confirmar que el dispositivo puede responder../scripts/release-port.sh y vuelve a intentarlo../scripts/provision-dev.sh con un archivo de perfil local (provision-dev.sh envuelve a provision.sh --yes).witty./scripts/test-api.sh - Ejecutar verificaciones en vivo de API de proveedor (manual/local)| Segmento | Bytes | Tamaño | Participación |
|---|
lógica de la aplicación zclaw (libmain.a) | 39276 | ~38.4 KiB | ~4.6% |
| Pila de Wi-Fi + redes | 378624 | ~369.8 KiB | ~44.4% |
| Pila TLS/criptografía | 134923 | ~131.8 KiB | ~15.8% |
| Paquete de certificados + metadatos de la aplicación | 98425 | ~96.1 KiB | ~11.5% |
| Otros ESP-IDF/tiempo de ejecución/controladores/libc | 201786 | ~197.1 KiB | ~23.7% |