Firmware architecture

A cat built as a living system.

Sensors, behavior, animation and sound operate as separate subsystems on ESP-IDF and FreeRTOS. Muse adds messaging and voice over an encrypted connection.

From stimulus to reaction

SensesLuz · proximidad
IMU · tacto · RTC
DecisionMoods
and planner
ExpressionClip graph
+ audio engine
PresenceLCD 320 × 240
+ speaker

Muse Home Link connects over BLE or Wi‑Fi with encrypted Noise sessions for messages, replies and images. Everyday behavior remains on the device.

Animation without crossfades

Each clip is an edge between two hub poses. Because it shares its first and last drawings with neighboring clips, Sagwa can chain actions without alpha blending or full frames in RAM.

SGWC

24-byte header, 22-clip table, frame table and 240 × 208 baseline JPEG.

12 fps

The TJpgDec decoder in the ESP32-S3 ROM runs on core 0.

< 60 KB

RGB565 lines stream to LVGL buffers without storing a full frame in DRAM.

Package structure
SGWC header → clip table[22] → frame table → JPEG data

width=240  height=208  fps=12  version=1

16 MB flash map

PartitionOffsetSizeUsage
nvs0x01100048 KBCredentials, BLE bonds and statistics
otadata0x01D0008 KBOTA selection state
ota_00x0200004 MBMain application
ota_10x4200004 MBNext update
sagwa0x8300007.81 MB22-animation package

Muse Home Link

Encrypted sessions, explicit control

Pairing is confirmed physically on the gadget. The SDK token is stored in NVS; revoke it and pair again if you change an existing token.

Muse replies arrive as text and appear on screen. Sagwa’s audio and body language are selected according to the message type.

Go deeperBuild and modify the firmware
Go to development