A tiny, Tamagotchi-style AI companion, built with an off-the-shelf display and Meta's open-source Muse Gadget SDK.
I wanted a little AI companion that I could carry around, rather than another app on my phone. So I started with Meta's Muse Gadgets website, browsed its suggested hardware, and picked a round Waveshare display. It looks a bit like a futuristic Tamagotchi, with a touch screen, microphones, and room for a battery.
The fun part: you don't have to design a circuit board or write the entire application yourself. Meta has published the gadget firmware and setup instructions. The less-fun part: this is still a developer project. You'll need a computer, a USB data cable, and a firmware-flashing step.
This guide works for any Muse-compatible board from Meta's hardware list. The steps are general; wherever a step depends on your specific hardware, I've added an "On my build" note with the exact details for the Waveshare ESP32-S3-Touch-AMOLED-1.75C I used. If you're on a different board, follow the generic steps and swap in your own hardware's specifics.
Go to gadgets.muse.ai and scroll to Project Ideas. Meta lists several ways to build a physical interface for Muse. They aren't all the same kind of product: some are small displays, others are e-ink panels, voice devices, or Raspberry Pi projects.
A few examples from the site:
The important distinction: the Muse Gadgets website is a starting point, not a store selling a prebuilt Muse charm. You buy the hardware from the relevant manufacturer or seller, and install the Muse SDK firmware yourself. Hardware support and features vary by model.
Pick a board from Meta's Project Ideas list and buy it from the manufacturer or an authorized seller. Write down the exact model name and suffix (letters at the end matter), because similar-looking boards often use different firmware.
Regardless of which one you choose, you'll also need:
If your package doesn't include a battery or strap, check the contents of the variant you ordered before you start assembling.
This is the round touchscreen in a brushed-aluminum case. Specs:
The 1.75C is not the 1.75 (16 MB flash, different board) and not the 1.85C LCD. The suffix letter is the difference.
If your board shipped with the battery detached (most do), this is the first hands-on step. The exact steps depend on your enclosure, but the sequence is almost always the same:
Mine came with the battery detached. The specifics:
Open gadgets.muse.ai/settings/sdk-tokens. Sign in, review the Gadget SDK Terms, and create a new token from Account → SDK tokens. A gadget needs a token to pair with your Muse account.
Treat this like a password. Don't post it in a Reel, screenshot, GitHub commit, or public AI chat. The firmware setup will ask you to put it into the SDK configuration locally. If you expose or revoke it, you'll need to update the gadget's configuration and may need to pair again.
Connect the device to your computer with a USB data cable. Installing Muse means writing new firmware to the board, which replaces the factory software. If you want to be able to restore the factory firmware later, back it up first using your manufacturer's recovery resources.
Open Claude Code (or any coding agent that can read a repo and run commands locally) and give it a prompt like this. Swap in your own board model wherever you see [YOUR BOARD]:
github.com/facebookincubator/muse-gadget-sdk, so find the right directory and board profile for my hardware model and use that. Confirm which USB serial device is attached before flashing, and ask me before anything destructive (don't erase the full flash or modify eFuses without checking).
For my build, [YOUR BOARD] was Waveshare ESP32-S3-Touch-AMOLED-1.75C (466x466 AMOLED, 32 MB flash, 8 MB PSRAM), and the agent correctly picked the s3 / waveshare-s3-175c profile. If you're on a different board, don't paste my model name, use your own, and let the agent find the right profile from the Muse site or the repo.
That's it. The agent reads the official docs, figures out the toolchain, backs up what it can, and asks before flashing. When flashing finishes, the display should show the Muse interface or a pairing-ready state. If something looks wrong, have the agent read the serial log before trying anything else.
After firmware installation:
MuseGadget-XXXXXX. The last characters distinguish one gadget from another.On a board with a full Muse display, you may see the gadget's name or a colored status indication while pairing. The exact UI can change between firmware revisions.
You are now using Muse through a piece of hardware you assembled and flashed yourself, not running the entire AI model locally on the device.
The pairing/talk button is the top button on the enclosure. A brief press confirms pairing; the same button later works as push-to-talk once setup is done.
With the gadget connected, use its push-to-talk button to send a request. The board has microphones, a speaker, touch controls, and an on-screen Muse interface. Try a simple prompt like, "Give me a fun fact," or "What's on my schedule today?" if your account and connected services support that information.
The on-screen avatar, settings, images, and audio behavior depend on your firmware version. Meta also documents a way to update the display's avatar, which is a fun follow-up project once basic pairing is working.
That's the manufacturer's factory firmware, not a sign that the hardware is wrong. You still need to flash the Muse firmware. On the Waveshare 1.75C, the demo is a loop of Waveshare branding.
Don't pick a similar-sounding board as a substitute. If your exact model isn't in the browser flasher, use the SDK/repo route and the exact board profile matching your hardware. On the Waveshare 1.75C, that's s3 / waveshare-s3-175c — not s3n and not the 1.85C LCD.
First try a known USB-C data cable, another USB port, and tools/muse/ports.py --list from the repository. macOS ESP32 devices often show up under /dev/cu.usbmodem*.
Check you're actually running ESP-IDF v6.0.1, not a newer or older release, and make sure its export.sh was sourced in the active shell. If you're using an agent, ask it to confirm the toolchain version before rebuilding.
Check the selected board, flash size, and the serial log before trying anything else. Reflash only after you've confirmed the exact board profile matches your hardware. On the Waveshare 1.75C, the only correct profile is s3 / waveshare-s3-175c.
Check Developer mode and Bluetooth permissions. Reopen the device's setup window with a short button press; if you need a clean pairing setup, Meta documents holding the setup button for approximately five seconds to forget the pairing and Wi-Fi settings.
Use a compatible 2.4 GHz network and check your credentials. Avoid guest networks or public networks that require a captive portal or block device-to-service connections.
Create and provision a valid SDK token, then pair again as directed by Meta. Keep tokens out of public screenshots, code, and videos.
If you want a polished, ready-to-use AI accessory, this probably isn't the easiest route. You are buying a development board and installing experimental firmware. But if you enjoy little hardware projects and the idea of a portable AI companion, it's a fun way to bring an AI assistant off your phone and onto a physical device.
My suggestion: start with the hardware Meta has already documented before trying to port Muse to an entirely different board. And if you're using the Waveshare 1.75C, double-check that model suffix before flashing anything.
Useful for anyone, regardless of board:
Last checked: October 25, 2026. Hardware, firmware, website interfaces, availability, and SDK requirements can change. This is an independent DIY guide, not an official Meta or Waveshare tutorial. Use compatible equipment and follow manufacturer safety instructions.
Half the fun is handing a round, blinking little gadget to someone and watching them figure out it's an AI. If you build one, tag @akad_technology so I can see it.