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 cores3Regenerate 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 ./wavThe 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 releaseExtend 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.