EN

BMO

Rol
Diseño y construcción
Tipo
Personal, en progreso
Enfoque
IA local y computación física

Un asistente de IA físico inspirado en BMO de Hora de Aventura: una cara en pantalla táctil, voz, un LLM local, control de la casa y una carcasa impresa en 3D. Construido desde cero para sacar la IA del navegador y llevarla a una habitación.

Háblale a su core

El core de BMO publica un estado y la cara decide cómo dibujarlo. Es el mismo modelo de expresiones que usa la UI real.

Cara de BMO, estado actual: IDLE

Publica un estado en el core de BMO

bmo/state"IDLE"

Dos máquinas

BMO Core

Raspberry Pi 5, siempre encendida

Core en Python, máquina de estados, UI y broker MQTT. Home Assistant viene después.

Servidor de IA

PC con RTX 4060, bajo demanda

Ollama, modelos más pesados y speech-to-text en la GPU.

Decisiones que lo definieron

El estado está separado de su representación.
El core publica "pensando"; la UI decide cómo se ve pensar.
El LLM propone, las herramientas ejecutan.
El modelo devuelve una intención estructurada. Nunca toca un dispositivo directamente.
Que no haya GPU es un estado, no un fallo.
Si el servidor de IA está apagado, BMO igual arranca, muestra su cara y lo dice.
El audio nunca toca el disco.
Vive en memoria durante un turno, viaja con TLS dentro de la red local y luego se descarta.

En qué va

Ciclo de voz
Activación → Whisper → core → Piper, con un efecto DSP de "voz de BMO"
Mensajería
MQTT con estado retenido, ACLs y TLS
Cara
Dibujada por código a 60 fps desde un JSON de expresiones
Decisiones
Cada una escrita como ADR, incluidas las rechazadas

El primer ciclo de voz midió entre 3,7 y 6,3 s de punta a punta en CPU. Lo siguiente es el camino por GPU.

Stack

  • Python
  • Raspberry Pi 5
  • MQTT
  • Docker
  • Ollama
  • Whisper
  • Piper
  • Home Assistant
  • pygame-ce