Hear
Works in this buildThe upper PWR button records a push-to-talk voice note through the dual microphones.
Build recipes / A desk orb for Muse
Hold the top button to talk, then read Muse's reply or view an image on a round AMOLED display in a printable desk stand.
Build proof
This clip explains the intended interaction. It is a concept animation, not footage of a verified physical build. The interactive model below is generated from published board dimensions.
No version-matched community build has been reviewed yet. Future uploads will retain exact board variant, firmware revision, substitutions, checks and failures.
See inside
Drag to turn it, pull the slider to explode it, and tap a part to learn what it does. Open the full 3D view
Senses and actions
Capabilities are labeled at the integration boundary, so a speaker is not mistaken for working TTS.
The upper PWR button records a push-to-talk voice note through the dual microphones.
The round capacitive touchscreen exposes Muse settings and on-device controls.
The 466 × 466 AMOLED shows Muse status, text replies and received color images.
Stock Muse replies are text. The speaker is present, but spoken replies require a separate TTS integration.
Muse's optional home-network tunnel can reach local HTTP devices; enable it only on a network you trust.
Parts
Prices were checked 2026-10-07. Hackshop opens seller links but never places an order.
Main board or device for this build.
Required · $40.00Must carry data, not just charge. Most flashing problems are charge-only cables. This Adafruit cable is USB-C on both ends with all data pins connected ($9.95 on 2026-10-05). If your computer has USB-A ports, the Seeed USB-C to USB-A cable works too.
Required · $10.00Optional, for cordless use. Buy the battery SKU or check the Waveshare wiki for the cell size before ordering one separately. Battery size: https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm
Optional · $8.00Optional. Runs the gadget from a wall outlet instead of your computer. A phone charger that supplies 5 V / 2 A or more works.
Optional · $10.00Print it yourself, or upload the STL to a print service such as Craftcloud or JLC3DP; small parts usually cost a few dollars plus shipping.
OptionalNew board plus the listed data cable. Reuse a known-good data cable to spend less. Printing, shipping and tax are not included.
How to build it
The commands and recovery path are generated from the same machine-readable plan your agent receives.
You need the board and any build-specific accessories before flashing or pairing.
Muse gadgets pair with your account by using a private SDK token.
Create a token at gadgets.muse.ai > Account > SDK tokens (https://gadgets.muse.ai/settings/sdk-tokens). It starts with mgst_. For this ESP32 build, set CONFIG_GADGET_SDK_TOKEN="mgst_YOUR_TOKEN" in build-muse-waveshare-s3-175c/sdkconfig after the board build command has created that file, then run the build command again. idf.py -B build-muse-waveshare-s3-175c -DIDF_TARGET=esp32s3 -DSDKCONFIG=build-muse-waveshare-s3-175c/sdkconfig -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;devices/sdkconfig.muse;devices/sdkconfig.muse-waveshare-s3-175c" menuconfig > ESP32 Device SDK > Muse Gadgets SDK token is the interactive alternative. Never commit the real token or paste it anywhere public.
The board needs the Muse ESP32 firmware configured with your SDK token.
Source: https://github.com/facebookincubator/muse-gadget-sdk/blob/b139b45064b4dcecf7bfe97e75bc7f99c10c28b6/esp32/AGENTS.md
Give your coding agent the build brief at https://www.hackshop.dev/build/waveshare-esp32-s3-touch-amoled-1-75c/build.md. Tell it to keep the token private, use mgst_YOUR_TOKEN as the placeholder, and find the serial port before flashing. It should find the port with ls /dev/cu.usbmodem* 2>/dev/null || ls /dev/ttyACM* 2>/dev/null; on Windows, use Device Manager to find the COM port, then run commands in the ESP-IDF shell.
Install ESP-IDF v6.0.1 and only the esp32s3 target for this board. Muse's ESP32 README verifies macOS and Linux. Windows is not documented by the Muse SDK; if you use it, install ESP-IDF v6.0.1 with Espressif's Windows installer and run commands in the ESP-IDF shell. Clone the Muse Gadget SDK, run tools/muse/board.sh build s3 once to create build-muse-waveshare-s3-175c/sdkconfig, set CONFIG_GADGET_SDK_TOKEN="mgst_YOUR_TOKEN" in that file, run tools/muse/board.sh build s3 again, then flash. If flashing cannot connect, close every serial monitor, hold BOOT, disconnect and reconnect USB power while still holding BOOT, then release BOOT and check the port again.
git clone -b v6.0.1 --recursive https://github.com/espressif/esp-idf.git ~/esp/esp-idf-v6~/esp/esp-idf-v6/install.sh esp32s3. ~/esp/esp-idf-v6/export.shgit clone https://github.com/facebookincubator/muse-gadget-sdkcd muse-gadget-sdk/esp32tools/muse/board.sh build s3printf '\nCONFIG_GADGET_SDK_TOKEN="mgst_YOUR_TOKEN"\n' >> build-muse-waveshare-s3-175c/sdkconfigtools/muse/board.sh build s3ls /dev/cu.usbmodem* 2>/dev/null || ls /dev/ttyACM* 2>/dev/nulltools/muse/board.sh flash s3 PORTPairing links the freshly flashed board to your Muse account.
In the Muse app, turn on Settings > Devices > Developer mode, then Settings > Devices > Add Device (+). Pick MuseGadget-XXXXXX and press the top button when the screen or edge status breathes blue. Green means connected. Status meanings: orange = ready for setup, blue breathing = press the button, blue = joining Wi-Fi and connecting, green = connected, yellow blinking = reconnecting, purple = unpaired, red blinking = error. To reset pairing, open Settings > MUSE > Reset pairing on the device and tap again to confirm.
The printable files keep the gadget visible, stable, and easy to reach.
Print the stand from the STL, or send the STEP/STL to a print service. Test fit before leaving the device unattended.
A physical agent body needs to sit safely, keep the cable clear and leave controls reachable.
Put the board in the printed desk stand. Route the cable through the slot or open edge, power it, and check that the buttons and display are reachable.
A first prompt proves the device is paired, reachable, and useful for the project.
Acceptance checks
A flash that exits successfully is not enough; the final checks happen on the real device.
command
The connected ESP32-S3 appears and the exact 1.75C board label has been checked before flashing.
tools/muse/ports.py --listserial log
Startup includes “link.main: Muse Gadget starting” and identifies the Waveshare 1.75C profile.
tools/muse/monitor.py PORT 20app readback
MuseGadget-XXXXXX is connected under Muse Settings > Devices and the device status is green.
real device
Holding and releasing the upper PWR button sends a voice note and a text reply appears on the display.
real device
An image sent by Muse renders in color on the round AMOLED.
visual
The device sits without force or wobble; screen, buttons, microphones, speaker and USB cable remain clear.
real device
After a power cycle, the board reconnects and another push-to-talk reply succeeds.
Before you build
If flashing fails: If flashing cannot connect, close every serial monitor, hold BOOT, disconnect and reconnect USB power while still holding BOOT, then release BOOT and check the port again.
Read the current Muse SDK terms ↗Source trail
SDK commit b139b45064b4 · ESP-IDF v6.0.1 · reviewed 2026-10-07