Todo es un evento en el bus
Ningún componente llama a otro directamente. Un sentido publica un evento; quien quiera reaccionar se suscribe. Un solo hilo reparte los eventos, así que los manejadores nunca pelean por candados. Este desacople es lo que permite agregar un sensor nuevo sin tocar nada de lo existente.
Eventos y acciones tienen forma fija
Los eventos se nombran sentido.qué y las acciones
objetivo.verbo(). El prefijo dice quién lo emite.
face.emotion() · sound.chirp() · led.mood()
Escuchá uno o una familia entera
Un reflejo puede escuchar touch.pet exacto, toda la familia
touch.*, o absolutamente todo con * (así funciona el
tracer de depuración).
Cuatro primitivos, y nada más
Toda funcionalidad tiene que presentarse como uno de estos cuatro. Es la regla que mantiene el proyecto entendible mientras crece con muchas manos.
Sentidos
Convierten el mundo en eventos: tacto, NFC, micrófono, sensores, temporizadores.
→ touch.pet→ nfc.tag
Expresiones
Consumen acciones: la cara en pantalla, sonidos, LED de humor, y luego motores.
face.emotion()led.mood()
Reflejos
Scripts en Berry: evento → acción, con recarga en caliente. Acá vive el 90% del hackeo. Funcionan sin red.
buddy.on("touch.pet", …)Habilidades
Capacidades que el cerebro expone como herramientas: recordatorios, calendario. Las construye la comunidad.
skill: set_reminder()El viaje de una caricia
Acariciá a Buddy y seguí el evento mientras baja por el bus: de tu dedo, al sentido, al reflejo, al cerebro en la nube, y de vuelta a la cara. En verde lo que vive en el dispositivo; en naranja lo que ocurre en la nube.
El contrato del Brain
El dispositivo nunca le habla a “OpenAI” ni a “Anthropic” ni a “el hub”. Le habla a un Brain: una interfaz con un contrato fijo. Lo que hay detrás del contrato se puede cambiar sin que el resto del firmware se entere.
{ "event": "touch.pet", "personality": "…", "sensors": { luz, temp, … }, "user_input": "…" }
{ "utterance": "¡me encanta!", "emotion": "happy", "actions": [ … ] }
La pila, separada por manos
El proyecto se divide por quién lo edita, no por tecnología. Esa es la clave para construir entre muchos sin pisarse: el marco es estable, la diversión es data.
Packs de personalidad
Prompt, caras, sonidos y reflejos. Se editan desde la web y se recargan en caliente. Se comparten como cartuchos. Nunca se recompila.
Berry · reflejos
La máquina virtual de scripting. Evento → acción, subido y recargado desde la interfaz web sin reflashear.
Núcleo C++ · ESP-IDF
Pantalla, audio, red, el bus de eventos, el servidor web y los adaptadores de Brain. El “framework” propiamente dicho.
Buddy Zero: el marco, hoy, en un protoboard
Todo lo anterior ya corre sobre un ESP32 DevKit V1 con piezas sueltas. Cada componente es un módulo independiente que habla por el bus. Cuando lleguen las placas S3, el bus, Berry, el Brain y la web se mudan intactos; solo cambian los drivers.
bus
El bus de eventos. Compila y pasa sus tests en la laptop, sin hardware.
touch · rc522
Un cable pelado como pad de caricias; el lector RFID emite nfc.tag.
oled · led
Ojos paramétricos con emociones y texto; el LED respira según el humor.
brain_cloud
Adaptador a Claude sobre TLS, con la conexión reutilizada entre pedidos.
webui
WiFi, editor de reflejos y recarga en caliente servidos por el propio dispositivo.
berry_host
La VM de Berry, la API buddy.* y el reparto de eventos.