muse-gadget-sdk: Muse Gadget SDK: How Meta Turns a $20 Board Into a Body for AI

An ESP32 firmware stack, a Noise-based voice tunnel, and a Hatch pairing model reveal a different way to build AI hardware: not as a smart speaker, but as a distributed agent peripheral.

8 min read • View on GitHub • More from facebookincubator

A small ESP32 board sits on a white workbench beside a mic, speaker, display, and button cluster while a larger abstract control core hovers off to the side. A thin encrypted line connects the board to that distant core, showing that the board is the physical body and the intelligence lives elsewhere.
Muse Gadget SDK treats commodity hardware like a body for an AI agent: the board handles sensing, voice, and state, while the agent core stays remote.
Key Takeaways

The Strange Idea at the Center: AI Gets a Body

Muse Gadget SDK is not just another firmware drop. It is a way to give an AI agent a physical interface that can listen, speak, show state, and stay linked over time.

That changes the category. A smart speaker is a product. A Muse gadget is closer to a peripheral for an agent, with the board acting like the hands, ears, and display while the intelligence sits somewhere else.

FrameWhat the hardware isWhere intelligence livesWhat makes it distinct
Traditional smart speakerA closed applianceMostly hidden behind the productThe device is the product, not a peripheral
Home Assistant style deviceA local automation nodeMostly localThe device executes rules and automations itself
Muse Gadget SDKA signed body for MuseRemote in the Muse VMThe hardware is open, but the agent relationship is stateful and authenticated

What the Repo Actually Is

The repository splits cleanly into two SDKs. The ESP32 side is the main event, with firmware for boards, displays, audio, sensors, and voice interaction. The Linux side broadens the idea to Raspberry Pi class machines and local bridges.

The repo is less a pile of drivers than a layered system: hardware at the top, identity in the middle, and secure voice transport underneath.

The file structure reflects that split. Under ESP32, the core Muse code sits apart from board-specific definitions, while Noise handling, UI, and audio support live in dedicated components. The design reads like a small platform, not a demo app.

It's built by hackers, for hackers, just for fun. Side effects of tinkering may include bricked boards, voided warranties, brownouts, or bankruptcies. Proceed at your own risk!

Meta, Project Maintainer · facebookincubator/muse-gadget-sdk README

The Glue Layer Is the Real Product

The architectural move that matters is the glue pattern. Core Muse logic talks through an interface, while the board layer handles the ugly reality of Wi-Fi, BLE, audio init, and boot behavior.

That separation lets the same application behave very differently depending on the board. A device with audio becomes a voice peripheral. A board without it can still act as a display or state endpoint.

LayerRoleWhy it matters
Muse coreOwns link state and product behaviorKeeps the application consistent across boards
Glue interfaceBridges Muse to board servicesPrevents board details from leaking upward
Board implementationHandles radios, audio, sensors, powerLets each device adapt without rewriting the app

This is why the repo feels disciplined. It is not a pile of device hacks glued to a cloud API. It is a reusable embedded architecture with a narrow seam between product logic and hardware specifics.

A close-up shows a hand pressing a push-to-talk button on a gadget while a locked tunnel opens toward a remote VM. Three distinct streams pass through the tunnel: encrypted credentials, live voice pulses, and a transcript line, each separated but synchronized. The image explains how pairing, transport, and audio flow are distinct parts of the same session.
Hatch turns pairing into a stateful relationship, not a one-time connection. The device joins a specific VM, then voice and transcripts ride through the secure session.

Why Hatch Makes This Feel Like a Distributed System

Hatch is not just signup flow. It is a pairing model that binds the gadget to a specific Muse VM, which makes the relationship feel identity-driven and persistent.

That matters because the device is not talking to a generic endpoint. It is joining a named agent instance, then carrying its own tokenized relationship forward through future sessions.

The result is a gadget that behaves more like a remote limb than a one-off client. Once paired, it belongs to a specific agent context.

How Voice Actually Moves Through the System

The voice path is the most revealing part of the repo. Push-to-talk opens a live session, audio is streamed as 16 kHz mono PCM, transcripts arrive as NDJSON, and TTS comes back through the same secure relationship.

The transport choice is unusual. The code uses HTTP over Noise, which is a more opinionated stance than a plain WebSocket or generic HTTPS wrapper. The emphasis is on mutual authentication and a tight session model, not just moving bytes.

Power management is part of the same story. The device can move between FULL, DOZE, and REST states, which means radio behavior and responsiveness are treated as first-class product decisions, not afterthoughts.

One Codebase, Many Boards

The repo leans hard on abstraction. A single codebase can span very different hardware because the board definition carries the details that matter: audio init, display support, sensors, and device quirks.

That makes the SDK feel surprisingly polymorphic. The same app can become a voice gadget on one board and a screen-first endpoint on another.

Board traitIf presentIf absent
Audio initThe device can join the voice pipelineThe device can stay display-focused
Display supportMuse can show state and interactionThe device can still function as a minimal peripheral
Power-sensitive radio behaviorBattery life gets managed as part of the UXThe board can run with simpler expectations

The important point is not compatibility for its own sake. It is that hardware capabilities directly shape what kind of agent peripheral a board becomes.

The Comparison That Matters

Muse sits between three familiar models: local automation, consumer AI hardware, and classic smart-speaker ecosystems. It borrows pieces from each, but it is none of them.

ModelStrengthWeaknessMuse's difference
Home Assistant and ESPHomeLocal control and broad maker supportThe AI layer is usually not the centerMuse pushes the agent relationship to the front
Rabbit and Humane style hardwareIntegrated consumer experienceHardware risk is concentrated in one productMuse shifts hardware experimentation to builders
Smart-speaker ecosystemsSimple voice UXClosed platform boundariesMuse keeps the hardware side open while the agent remains proprietary

That positioning is clever. Meta does not have to ship the perfect gadget first. It can publish the software bridge and let builders explore the form factor around it.

What This Model Suggests

Muse Gadget SDK points toward a different future for AI hardware. Instead of one monolithic device, you get authenticated peripherals, local affordances, and agent endpoints that can wear many forms.

That is a strong idea. It also comes with a catch. The hardware is open, but the most valuable behavior still runs inside Meta’s ecosystem, under token rules and product boundaries that the builder does not control.

So the repo is both liberating and limiting. It opens the door to hardware experimentation, then reminds you that the agent behind the door is still someone else’s.