Build recipes / A desk orb for Muse

Muse / open platformConcept — physical build pendingRecipe 0.1.0

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.

$49.94–$51.94parts estimate1-3 hr setupfirst build5senses + actions mapped
Open live checklist

Build proof

See the whole build before touching the board

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.

12-second 3D build tourNo real hardware is shown.
Interactive buildAvailable
Quick videoConcept animation
Finished-build photoNot built yet
Verified community uploads0 reviewed

No version-matched community build has been reviewed yet. Future uploads will retain exact board variant, firmware revision, substitutions, checks and failures.

See inside

Take the complete desk orb apart

Drag to turn it, pull the slider to explode it, and tap a part to learn what it does. Open the full 3D view

Loading 3D model

Senses and actions

What this body gives the agent

Capabilities are labeled at the integration boundary, so a speaker is not mistaken for working TTS.

input

Hear

Works in this build

The upper PWR button records a push-to-talk voice note through the dual microphones.

input

Touch

Works in this build

The round capacitive touchscreen exposes Muse settings and on-device controls.

output

Show

Works in this build

The 466 × 466 AMOLED shows Muse status, text replies and received color images.

output

Speak

Needs integration

Stock Muse replies are text. The speaker is present, but spoken replies require a separate TTS integration.

output

Control

Works in this build

Muse's optional home-network tunnel can reach local HTTP devices; enable it only on a network you trust.

Parts

Everything in this version

Prices were checked 2026-10-07. Hackshop opens seller links but never places an order.

1×

Waveshare ESP32-S3-Touch-AMOLED-1.75C (round)

Main board or device for this build.

Required · $40.00
Check source ↗
1×

USB-C data cable

Must 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.00
Check source ↗
1×

3.7 V Li-ion cell with MX1.25 connector

Optional, 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.00
Check source ↗
1×

USB-C power adapter (5 V / 2 A or more)

Optional. 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.00
Check source ↗
1×

Printed desk stand

Print it yourself, or upload the STL to a print service such as Craftcloud or JLC3DP; small parts usually cost a few dollars plus shipping.

Optional
Download ↗

New 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

From unopened board to first conversation

The commands and recovery path are generated from the same machine-readable plan your agent receives.

  1. 01

    Get the parts

    You need the board and any build-specific accessories before flashing or pairing.

    • Waveshare ESP32-S3-Touch-AMOLED-1.75C (round) x1 (required): Main board or device for this build. link
    • USB-C data cable x1 (required): Must 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. link
    • 3.7 V Li-ion cell with MX1.25 connector x1 (optional): Optional, 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 link
    • USB-C power adapter (5 V / 2 A or more) x1 (optional): Optional. Runs the gadget from a wall outlet instead of your computer. A phone charger that supplies 5 V / 2 A or more works. link
    • Printed desk stand x1 (optional): Print it yourself, or upload the STL to a print service such as Craftcloud or JLC3DP; small parts usually cost a few dollars plus shipping. link
  2. 02

    Get your Muse SDK token

    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.

  3. 03

    Flash the firmware

    The board needs the Muse ESP32 firmware configured with your SDK token.

    Read this first: flashing this board

    • Port: Native USB: it shows up as /dev/cu.usbmodem* on macOS or /dev/ttyACM* on Linux. On Linux, add yourself to the dialout (or uucp) group.

    Source: https://github.com/facebookincubator/muse-gadget-sdk/blob/b139b45064b4dcecf7bfe97e75bc7f99c10c28b6/esp32/AGENTS.md

    Let your agent do it

    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.

    Do it yourself

    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.sh
    git clone https://github.com/facebookincubator/muse-gadget-sdk
    cd muse-gadget-sdk/esp32
    tools/muse/board.sh build s3
    printf '\nCONFIG_GADGET_SDK_TOKEN="mgst_YOUR_TOKEN"\n' >> build-muse-waveshare-s3-175c/sdkconfig
    tools/muse/board.sh build s3
    ls /dev/cu.usbmodem* 2>/dev/null || ls /dev/ttyACM* 2>/dev/null
    tools/muse/board.sh flash s3 PORT
  4. 04

    Pair it with the Muse app

    Pairing 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.

  5. 05

    Print the stand

    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.

  6. 06

    Put it together

    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.

  7. 07

    Try it

    A first prompt proves the device is paired, reachable, and useful for the project.

    • (Hold to talk) What are you working on?
    • Show me the image you just found.

Acceptance checks

How we know the build actually works

A flash that exits successfully is not enough; the final checks happen on the real device.

1

command

Board identified

The connected ESP32-S3 appears and the exact 1.75C board label has been checked before flashing.

tools/muse/ports.py --list
2

serial log

Correct firmware boots

Startup includes “link.main: Muse Gadget starting” and identifies the Waveshare 1.75C profile.

tools/muse/monitor.py PORT 20
3

app readback

Account pairing completes

MuseGadget-XXXXXX is connected under Muse Settings > Devices and the device status is green.

4

real device

Voice reaches Muse

Holding and releasing the upper PWR button sends a voice note and a text reply appears on the display.

5

real device

Image reaches the display

An image sent by Muse renders in color on the round AMOLED.

6

visual

Stand and cable fit

The device sits without force or wobble; screen, buttons, microphones, speaker and USB cable remain clear.

7

real device

Reconnect survives reboot

After a power cycle, the board reconnects and another push-to-talk reply succeeds.

Before you build

Limits, recovery and terms

  • Hackshop has source-checked this recipe but has not physically built it yet.
  • The printable stand is based on published dimensions; physical fit and the selected cable overmold remain unverified.
  • No camera or movement is included in this build.
  • Each builder supplies a private Muse SDK token. Do not publish or sell token-bearing firmware or hardware.
  • Muse service access is personal, non-commercial and revocable under the current SDK terms.

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

What this recipe was checked against

SDK commit b139b45064b4 · ESP-IDF v6.0.1 · reviewed 2026-10-07

  1. Muse SDK instructions at reviewed commit ↗
  2. Muse ESP32 behavior and limitations ↗
  3. Waveshare board documentation ↗
  4. Waveshare board recovery FAQ ↗
  5. Waveshare seller page ↗
  6. Adafruit USB-C data cable ↗
  7. Muse SDK terms ↗