Development

Open the hood. Make her yours.

Sagwa is built on the Muse Gadgets SDK and ESP-IDF v6.0.1. You can modify the firmware, sensors, interface, sounds or animation package.

Build from source

Build and flash for CoreS3
. $IDF_PATH/export.sh
cd muse-gadget-sdk/esp32
tools/muse/board.sh build cores3
tools/muse/board.sh flash cores3

Regenerate animations and sounds

Asset pipeline
python3 sagwa/tools/pack_clips.py
python3 sagwa/tools/make_sfx.py

# Listen to each generated take
python3 sagwa/tools/make_sfx.py --wav ./wav

The packer trims the videos, converts them to 12 fps, aligns the boundaries to hub poses and writes baseline JPEG data into sagwa_clips.bin.

Where to change everything

Repository
sagwa/
├── flash.py, flash.sh
├── sagwa/
│   ├── clips/             # 22 source clips
│   ├── hubs/              # shared poses
│   ├── sounds/            # original recordings
│   └── tools/             # packaging, SFX and release
├── muse-gadget-sdk/esp32/
│   ├── main/              # app, Wi-Fi, OTA
│   └── components/muse/   # Sagwa, sensors and UI
└── .github/workflows/     # build, signing and release

Extend the system

New commands

Register them with link.register and handle them in main/app.c.

New responses

The classifier is in sagwa_notify.c; it includes tests that run on the host.

New local features

See sensors.read as an example of JSON‑RPC telemetry.

Open the repository and its tests