hackshop-mcp 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -34
- package/catalog.json +1584 -25
- package/dist/build-plan/index.d.ts +10 -0
- package/dist/build-plan/index.js +550 -0
- package/dist/build-plan/index.js.map +1 -0
- package/dist/build-plan/types.d.ts +153 -0
- package/dist/build-plan/types.js +2 -0
- package/dist/build-plan/types.js.map +1 -0
- package/dist/catalog/schema.d.ts +523 -7
- package/dist/catalog/schema.js +49 -0
- package/dist/catalog/schema.js.map +1 -1
- package/dist/core/assess.d.ts +36 -0
- package/dist/core/assess.js +100 -0
- package/dist/core/assess.js.map +1 -0
- package/dist/core/errors.d.ts +2 -0
- package/dist/core/errors.js +70 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/links.d.ts +3 -0
- package/dist/core/links.js +19 -0
- package/dist/core/links.js.map +1 -0
- package/dist/core/plan-gadget.d.ts +85 -0
- package/dist/core/plan-gadget.js +619 -0
- package/dist/core/plan-gadget.js.map +1 -0
- package/dist/core/resources.d.ts +37 -0
- package/dist/core/resources.js +143 -0
- package/dist/core/resources.js.map +1 -0
- package/dist/core/safety.d.ts +7 -0
- package/dist/core/safety.js +28 -0
- package/dist/core/safety.js.map +1 -0
- package/dist/core/tools.d.ts +247 -0
- package/dist/core/tools.js +164 -0
- package/dist/core/tools.js.map +1 -0
- package/dist/core/types.d.ts +163 -0
- package/dist/core/types.js +17 -0
- package/dist/core/types.js.map +1 -0
- package/dist/platforms/index.d.ts +26 -0
- package/dist/platforms/index.js +52 -0
- package/dist/platforms/index.js.map +1 -0
- package/dist/platforms/load.d.ts +4 -0
- package/dist/platforms/load.js +78 -0
- package/dist/platforms/load.js.map +1 -0
- package/dist/platforms/schema.d.ts +587 -0
- package/dist/platforms/schema.js +64 -0
- package/dist/platforms/schema.js.map +1 -0
- package/dist/sampling.d.ts +5 -0
- package/dist/sampling.js +44 -21
- package/dist/sampling.js.map +1 -1
- package/dist/server.d.ts +14 -1
- package/dist/server.js +164 -40
- package/dist/server.js.map +1 -1
- package/dist/site-url.d.ts +1 -0
- package/dist/site-url.js +4 -0
- package/dist/site-url.js.map +1 -0
- package/dist/telemetry.d.ts +29 -0
- package/dist/telemetry.js +100 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools/assess_hackability.d.ts +2 -29
- package/dist/tools/assess_hackability.js +11 -43
- package/dist/tools/assess_hackability.js.map +1 -1
- package/dist/tools/get_build_plan.d.ts +6 -0
- package/dist/tools/get_build_plan.js +16 -0
- package/dist/tools/get_build_plan.js.map +1 -0
- package/dist/tools/plan_gadget.d.ts +4 -0
- package/dist/tools/plan_gadget.js +14 -0
- package/dist/tools/plan_gadget.js.map +1 -0
- package/dist/tools/propose_hardware.d.ts +5 -0
- package/dist/tools/propose_hardware.js +57 -8
- package/dist/tools/propose_hardware.js.map +1 -1
- package/dist/tools/simulate_assembly.d.ts +315 -0
- package/dist/tools/simulate_assembly.js +145 -0
- package/dist/tools/simulate_assembly.js.map +1 -0
- package/package.json +4 -1
- package/platforms.json +779 -0
- package/tags.md +1 -0
package/platforms.json
ADDED
|
@@ -0,0 +1,779 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "muse-esp32",
|
|
4
|
+
"name": "Muse Gadgets: ESP32 Device SDK",
|
|
5
|
+
"vendor": "Meta",
|
|
6
|
+
"kind": "agent-gadget",
|
|
7
|
+
"launched": "2026-10-02",
|
|
8
|
+
"homepage": "https://gadgets.muse.ai/",
|
|
9
|
+
"sdk_repo": "https://github.com/facebookincubator/muse-gadget-sdk",
|
|
10
|
+
"sdk_path": "esp32",
|
|
11
|
+
"docs_url": "https://github.com/facebookincubator/muse-gadget-sdk/tree/main/esp32",
|
|
12
|
+
"license": "Apache-2.0 (third-party exceptions listed in the repo README; the Jollybot avatar is not covered)",
|
|
13
|
+
"summary": "Open-source ESP32 firmware that turns an off-the-shelf board into a device for Muse, Meta's personal AI agent. The board pairs to the Muse app over BLE, joins Wi-Fi and holds an encrypted session to your Muse VM.",
|
|
14
|
+
"toolchain": "ESP-IDF v6.0.1 only (other versions unsupported); macOS or Linux host.",
|
|
15
|
+
"requires": [
|
|
16
|
+
"A Muse account and the Muse app (iOS/Android) with Settings > Devices > Developer mode on",
|
|
17
|
+
"An SDK token (mgst_...) from gadgets.muse.ai > Account > SDK tokens",
|
|
18
|
+
"One of the supported boards below"
|
|
19
|
+
],
|
|
20
|
+
"setup_steps": [
|
|
21
|
+
"Get an SDK token at https://gadgets.muse.ai/settings/sdk-tokens (never commit it or paste it into a public repo).",
|
|
22
|
+
"Install ESP-IDF v6.0.1: git clone -b v6.0.1 --recursive https://github.com/espressif/esp-idf.git ~/esp/esp-idf-v6 && ~/esp/esp-idf-v6/install.sh esp32c5,esp32s3,esp32c6,esp32 && . ~/esp/esp-idf-v6/export.sh",
|
|
23
|
+
"git clone https://github.com/facebookincubator/muse-gadget-sdk && cd muse-gadget-sdk/esp32",
|
|
24
|
+
"Set the token: idf.py menuconfig > ESP32 Device SDK > Muse Gadgets SDK token (or CONFIG_GADGET_SDK_TOKEN in the build's sdkconfig).",
|
|
25
|
+
"Build and flash with the board's command below, then idf.py -p PORT flash monitor. If flashing can't connect: hold BOOT, tap RESET, release BOOT.",
|
|
26
|
+
"In the Muse app, turn on Settings > Devices > Developer mode, then Settings > Devices > Add Device (+). Pick MuseGadget-XXXXXX and press the board's button (BOOT on dev kits) when the light breathes blue. Green = connected."
|
|
27
|
+
],
|
|
28
|
+
"agent_quickstart": "curl -fsSL https://dev.meta.ai/install.sh | sh && git clone https://github.com/facebookincubator/muse-gadget-sdk && cd muse-gadget-sdk/esp32 && muse --disable-sandbox # then: \"Build this firmware for my <board> and flash it.\" Any coding agent that reads AGENTS.md can do the same.",
|
|
29
|
+
"tiers": [
|
|
30
|
+
{
|
|
31
|
+
"id": "full-ui",
|
|
32
|
+
"label": "Full UI",
|
|
33
|
+
"description": "LVGL animated avatar, push-to-talk and on-device settings; over-the-air updates on."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "status",
|
|
37
|
+
"label": "Status",
|
|
38
|
+
"description": "Status on a light, LED ring, e-paper or simple screen; over-the-air updates off."
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"caveats": [
|
|
42
|
+
"Boards without PSRAM (classic ESP32, ESP32-C6) run without the home-network tunnel; Muse can still reach and control them.",
|
|
43
|
+
"The home-network tunnel lets Muse reach devices on your LAN that expose a local HTTP API. Treat it like giving the agent a foothold on your network.",
|
|
44
|
+
"Pairing has no manufacturer verification and can't prevent an active man-in-the-middle attack.",
|
|
45
|
+
"Builds are signed with the included development key and never enable Secure Boot. Enable NVS encryption (CONFIG_HOMEHUB_NVS_ENCRYPTION).",
|
|
46
|
+
"Custom ESP32 commands are not a documented API yet: the command set (display.draw_url, sensors.read, camera.capture, ...) is hardcoded in main/app.c."
|
|
47
|
+
],
|
|
48
|
+
"terms": {
|
|
49
|
+
"url": "https://gadgets.muse.ai/sdk-terms",
|
|
50
|
+
"summary": "Personal, non-commercial use with your own Muse account. A token can be linked to at most 50 devices. You may not put it in any device you sell, advertise, or list publicly or in a marketplace or app store; other distribution needs Meta's written permission. Provided as-is; Meta can change, withdraw or revoke access at any time.",
|
|
51
|
+
"personal_noncommercial_only": true,
|
|
52
|
+
"max_devices_per_token": 50,
|
|
53
|
+
"selling_allowed": false,
|
|
54
|
+
"revocable": true
|
|
55
|
+
},
|
|
56
|
+
"community_url": "https://discord.gg/3bhjCkZdd6",
|
|
57
|
+
"boards": [
|
|
58
|
+
{
|
|
59
|
+
"device_id": "espressif-esp32-c5-devkitc-1",
|
|
60
|
+
"support": "official",
|
|
61
|
+
"tier": "status",
|
|
62
|
+
"kind": "light",
|
|
63
|
+
"build": "idf.py build",
|
|
64
|
+
"features": {
|
|
65
|
+
"home_tunnel": true,
|
|
66
|
+
"images": "none",
|
|
67
|
+
"push_to_talk": "none",
|
|
68
|
+
"audio": "none",
|
|
69
|
+
"touch": false,
|
|
70
|
+
"camera": false,
|
|
71
|
+
"air_sensors": false,
|
|
72
|
+
"ota": false,
|
|
73
|
+
"battery": "no",
|
|
74
|
+
"round_display": false,
|
|
75
|
+
"display_in": null
|
|
76
|
+
},
|
|
77
|
+
"note": "Status light and button. Muse's recommended starting point. The direct `idf.py build` command is correct; `tools/board.sh devkit build` also works.",
|
|
78
|
+
"parts": [
|
|
79
|
+
{
|
|
80
|
+
"name": "USB-C data cable",
|
|
81
|
+
"qty": 1,
|
|
82
|
+
"required": true,
|
|
83
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
84
|
+
"search": "USB-C data cable",
|
|
85
|
+
"est_price_usd": 8
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"try_saying": [
|
|
89
|
+
"What devices on my home network can you reach?",
|
|
90
|
+
"Blink the gadget's light when my build finishes."
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"device_id": "ideaspark-esp32-1-9-lcd",
|
|
95
|
+
"support": "official",
|
|
96
|
+
"tier": "status",
|
|
97
|
+
"kind": "status-screen",
|
|
98
|
+
"build": "tools/board.sh ideaspark build",
|
|
99
|
+
"features": {
|
|
100
|
+
"home_tunnel": false,
|
|
101
|
+
"images": "color",
|
|
102
|
+
"push_to_talk": "none",
|
|
103
|
+
"audio": "none",
|
|
104
|
+
"touch": false,
|
|
105
|
+
"camera": false,
|
|
106
|
+
"air_sensors": false,
|
|
107
|
+
"ota": false,
|
|
108
|
+
"battery": "no",
|
|
109
|
+
"round_display": false,
|
|
110
|
+
"display_in": 1.9
|
|
111
|
+
},
|
|
112
|
+
"note": "No PSRAM, so no home-network tunnel; draws images straight to the screen.",
|
|
113
|
+
"parts": [
|
|
114
|
+
{
|
|
115
|
+
"name": "USB-C data cable",
|
|
116
|
+
"qty": 1,
|
|
117
|
+
"required": true,
|
|
118
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
119
|
+
"search": "USB-C data cable",
|
|
120
|
+
"est_price_usd": 8
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"try_saying": [
|
|
124
|
+
"Show a picture of a sunset on my gadget.",
|
|
125
|
+
"Put today's top three tasks on the gadget's screen."
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"device_id": "seeed-sensecap-indicator",
|
|
130
|
+
"support": "official",
|
|
131
|
+
"tier": "status",
|
|
132
|
+
"kind": "status-screen",
|
|
133
|
+
"build": "tools/board.sh sensecap-indicator build",
|
|
134
|
+
"features": {
|
|
135
|
+
"home_tunnel": true,
|
|
136
|
+
"images": "color",
|
|
137
|
+
"push_to_talk": "none",
|
|
138
|
+
"audio": "none",
|
|
139
|
+
"touch": true,
|
|
140
|
+
"camera": false,
|
|
141
|
+
"air_sensors": true,
|
|
142
|
+
"ota": false,
|
|
143
|
+
"battery": "no",
|
|
144
|
+
"round_display": false,
|
|
145
|
+
"display_in": 3.95
|
|
146
|
+
},
|
|
147
|
+
"note": "Air sensors only on D1S/D1Pro (temp/humidity via the bundled Grove AHT20).",
|
|
148
|
+
"parts": [
|
|
149
|
+
{
|
|
150
|
+
"name": "USB-C data cable",
|
|
151
|
+
"qty": 1,
|
|
152
|
+
"required": true,
|
|
153
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
154
|
+
"search": "USB-C data cable",
|
|
155
|
+
"est_price_usd": 8
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "Pick the D1S or D1Pro variant for air sensors",
|
|
159
|
+
"qty": 0,
|
|
160
|
+
"required": false,
|
|
161
|
+
"note": "The base D1 has no CO2/tVOC sensors; Muse can only read sensors the variant has.",
|
|
162
|
+
"buy_url": "https://www.seeedstudio.com/SenseCAP-Indicator-D1Pro-p-5644.html"
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"try_saying": [
|
|
166
|
+
"What's the CO2 level in my office right now?",
|
|
167
|
+
"Show my calendar for today on the Indicator."
|
|
168
|
+
]
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"device_id": "seeed-reterminal-e1001",
|
|
172
|
+
"support": "official",
|
|
173
|
+
"tier": "status",
|
|
174
|
+
"kind": "e-paper",
|
|
175
|
+
"build": "tools/board.sh reterminal-e1001 build",
|
|
176
|
+
"features": {
|
|
177
|
+
"home_tunnel": true,
|
|
178
|
+
"images": "black-and-white",
|
|
179
|
+
"push_to_talk": "none",
|
|
180
|
+
"audio": "none",
|
|
181
|
+
"touch": false,
|
|
182
|
+
"camera": false,
|
|
183
|
+
"air_sensors": false,
|
|
184
|
+
"ota": false,
|
|
185
|
+
"battery": "yes",
|
|
186
|
+
"round_display": false,
|
|
187
|
+
"display_in": 7.5
|
|
188
|
+
},
|
|
189
|
+
"note": "Status text and black-and-white images on 7.5\" e-paper.",
|
|
190
|
+
"parts": [
|
|
191
|
+
{
|
|
192
|
+
"name": "USB-C data cable",
|
|
193
|
+
"qty": 1,
|
|
194
|
+
"required": true,
|
|
195
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
196
|
+
"search": "USB-C data cable",
|
|
197
|
+
"est_price_usd": 8
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"try_saying": [
|
|
201
|
+
"Put this week's family calendar on the e-paper board.",
|
|
202
|
+
"Show a black-and-white photo of the kids on the board."
|
|
203
|
+
]
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"device_id": "home-assistant-voice-pe",
|
|
207
|
+
"support": "official",
|
|
208
|
+
"tier": "status",
|
|
209
|
+
"kind": "light",
|
|
210
|
+
"build": "tools/board.sh home-assistant-voice build",
|
|
211
|
+
"features": {
|
|
212
|
+
"home_tunnel": true,
|
|
213
|
+
"images": "none",
|
|
214
|
+
"push_to_talk": "voice",
|
|
215
|
+
"audio": "speaker-mic",
|
|
216
|
+
"touch": false,
|
|
217
|
+
"camera": false,
|
|
218
|
+
"air_sensors": false,
|
|
219
|
+
"ota": false,
|
|
220
|
+
"battery": "no",
|
|
221
|
+
"round_display": false,
|
|
222
|
+
"display_in": null
|
|
223
|
+
},
|
|
224
|
+
"note": "Status on the LED ring, push-to-talk, dial as volume.",
|
|
225
|
+
"parts": [
|
|
226
|
+
{
|
|
227
|
+
"name": "USB-C power supply (5 V / 2 A)",
|
|
228
|
+
"qty": 1,
|
|
229
|
+
"required": true,
|
|
230
|
+
"note": "The Voice PE is USB-C powered; a phone charger that supplies 5 V / 2 A works.",
|
|
231
|
+
"search": "USB-C power adapter 5V 2A",
|
|
232
|
+
"est_price_usd": 10
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "USB-C data cable",
|
|
236
|
+
"qty": 1,
|
|
237
|
+
"required": true,
|
|
238
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
239
|
+
"search": "USB-C data cable",
|
|
240
|
+
"est_price_usd": 8
|
|
241
|
+
}
|
|
242
|
+
],
|
|
243
|
+
"try_saying": [
|
|
244
|
+
"(Press the button) What's on my calendar tomorrow?",
|
|
245
|
+
"(Press the button) Turn the volume down."
|
|
246
|
+
]
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"device_id": "waveshare-esp32-s3-touch-amoled-1-75c",
|
|
250
|
+
"support": "official",
|
|
251
|
+
"tier": "full-ui",
|
|
252
|
+
"kind": "ui",
|
|
253
|
+
"build": "tools/muse/board.sh build s3",
|
|
254
|
+
"features": {
|
|
255
|
+
"home_tunnel": true,
|
|
256
|
+
"images": "color",
|
|
257
|
+
"push_to_talk": "voice",
|
|
258
|
+
"audio": "speaker-mic",
|
|
259
|
+
"touch": true,
|
|
260
|
+
"camera": false,
|
|
261
|
+
"air_sensors": false,
|
|
262
|
+
"ota": true,
|
|
263
|
+
"battery": "optional",
|
|
264
|
+
"round_display": true,
|
|
265
|
+
"display_in": 1.75
|
|
266
|
+
},
|
|
267
|
+
"note": "Round AMOLED avatar; best desk object.",
|
|
268
|
+
"parts": [
|
|
269
|
+
{
|
|
270
|
+
"name": "USB-C data cable",
|
|
271
|
+
"qty": 1,
|
|
272
|
+
"required": true,
|
|
273
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
274
|
+
"search": "USB-C data cable",
|
|
275
|
+
"est_price_usd": 8
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"name": "3.7 V Li-ion cell with MX1.25 connector",
|
|
279
|
+
"qty": 1,
|
|
280
|
+
"required": false,
|
|
281
|
+
"note": "Optional, for cordless use. Buy the battery SKU or check the Waveshare wiki for the cell size before ordering one separately.",
|
|
282
|
+
"buy_url": "https://www.waveshare.com/esp32-s3-touch-amoled-1.75c.htm",
|
|
283
|
+
"est_price_usd": 8
|
|
284
|
+
}
|
|
285
|
+
],
|
|
286
|
+
"try_saying": [
|
|
287
|
+
"(Hold to talk) What are you working on?",
|
|
288
|
+
"Show me the image you just found."
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"device_id": "aipi-lite",
|
|
293
|
+
"support": "official",
|
|
294
|
+
"tier": "full-ui",
|
|
295
|
+
"kind": "ui",
|
|
296
|
+
"build": "tools/muse/board.sh build aipi",
|
|
297
|
+
"features": {
|
|
298
|
+
"home_tunnel": true,
|
|
299
|
+
"images": "color",
|
|
300
|
+
"push_to_talk": "voice",
|
|
301
|
+
"audio": "speaker-mic",
|
|
302
|
+
"touch": false,
|
|
303
|
+
"camera": false,
|
|
304
|
+
"air_sensors": false,
|
|
305
|
+
"ota": true,
|
|
306
|
+
"battery": "yes",
|
|
307
|
+
"round_display": false,
|
|
308
|
+
"display_in": null
|
|
309
|
+
},
|
|
310
|
+
"note": "Palm-size voice buddy with a snap-on battery and a two-button menu.",
|
|
311
|
+
"parts": [
|
|
312
|
+
{
|
|
313
|
+
"name": "USB-C data cable",
|
|
314
|
+
"qty": 1,
|
|
315
|
+
"required": true,
|
|
316
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
317
|
+
"search": "USB-C data cable",
|
|
318
|
+
"est_price_usd": 8
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"try_saying": [
|
|
322
|
+
"(Hold to talk) Remind me to call the dentist at 3.",
|
|
323
|
+
"Show me today's weather icon."
|
|
324
|
+
]
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"device_id": "waveshare-esp32-c6-touch-amoled-1-8",
|
|
328
|
+
"support": "official",
|
|
329
|
+
"tier": "full-ui",
|
|
330
|
+
"kind": "ui",
|
|
331
|
+
"build": "tools/muse/board.sh build c6",
|
|
332
|
+
"features": {
|
|
333
|
+
"home_tunnel": false,
|
|
334
|
+
"images": "none",
|
|
335
|
+
"push_to_talk": "text",
|
|
336
|
+
"audio": "speaker-mic",
|
|
337
|
+
"touch": true,
|
|
338
|
+
"camera": false,
|
|
339
|
+
"air_sensors": false,
|
|
340
|
+
"ota": true,
|
|
341
|
+
"battery": "optional",
|
|
342
|
+
"round_display": false,
|
|
343
|
+
"display_in": 1.8
|
|
344
|
+
},
|
|
345
|
+
"note": "No PSRAM: voice notes go over the control session and replies come back as scrolling text.",
|
|
346
|
+
"parts": [
|
|
347
|
+
{
|
|
348
|
+
"name": "USB-C data cable",
|
|
349
|
+
"qty": 1,
|
|
350
|
+
"required": true,
|
|
351
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
352
|
+
"search": "USB-C data cable",
|
|
353
|
+
"est_price_usd": 8
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"name": "3.7 V Li-ion cell with MX1.25 connector",
|
|
357
|
+
"qty": 1,
|
|
358
|
+
"required": false,
|
|
359
|
+
"note": "Optional. Waveshare recommends a thin cell around 3.85 x 24 x 28 mm; check the wiki before buying.",
|
|
360
|
+
"buy_url": "https://docs.waveshare.com/ESP32-C6-Touch-AMOLED-1.8",
|
|
361
|
+
"est_price_usd": 8
|
|
362
|
+
}
|
|
363
|
+
],
|
|
364
|
+
"try_saying": [
|
|
365
|
+
"(Hold to talk) Summarize my unread email.",
|
|
366
|
+
"What's the status of the task you're running?"
|
|
367
|
+
]
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"device_id": "seeed-sensecap-watcher",
|
|
371
|
+
"support": "official",
|
|
372
|
+
"tier": "full-ui",
|
|
373
|
+
"kind": "ui",
|
|
374
|
+
"build": "tools/muse/board.sh build watcher",
|
|
375
|
+
"features": {
|
|
376
|
+
"home_tunnel": true,
|
|
377
|
+
"images": "color",
|
|
378
|
+
"push_to_talk": "voice",
|
|
379
|
+
"audio": "speaker-mic",
|
|
380
|
+
"touch": true,
|
|
381
|
+
"camera": true,
|
|
382
|
+
"air_sensors": false,
|
|
383
|
+
"ota": true,
|
|
384
|
+
"battery": "yes",
|
|
385
|
+
"round_display": true,
|
|
386
|
+
"display_in": 1.45
|
|
387
|
+
},
|
|
388
|
+
"note": "camera.capture returns a JPEG (CONFIG_MUSE_WATCHER_CAMERA=y).",
|
|
389
|
+
"parts": [
|
|
390
|
+
{
|
|
391
|
+
"name": "USB-C data cable",
|
|
392
|
+
"qty": 1,
|
|
393
|
+
"required": true,
|
|
394
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
395
|
+
"search": "USB-C data cable",
|
|
396
|
+
"est_price_usd": 8
|
|
397
|
+
}
|
|
398
|
+
],
|
|
399
|
+
"try_saying": [
|
|
400
|
+
"Take a picture of my 3D printer and tell me if the print failed.",
|
|
401
|
+
"Is anyone at my desk right now?"
|
|
402
|
+
]
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"device_id": "m5stack-sticks3",
|
|
406
|
+
"support": "official",
|
|
407
|
+
"tier": "full-ui",
|
|
408
|
+
"kind": "ui",
|
|
409
|
+
"build": "tools/muse/board.sh build sticks3",
|
|
410
|
+
"features": {
|
|
411
|
+
"home_tunnel": true,
|
|
412
|
+
"images": "color",
|
|
413
|
+
"push_to_talk": "voice",
|
|
414
|
+
"audio": "speaker-mic",
|
|
415
|
+
"touch": false,
|
|
416
|
+
"camera": false,
|
|
417
|
+
"air_sensors": false,
|
|
418
|
+
"ota": true,
|
|
419
|
+
"battery": "yes",
|
|
420
|
+
"round_display": false,
|
|
421
|
+
"display_in": 1.14
|
|
422
|
+
},
|
|
423
|
+
"note": "Pocket stick with speaker, mic, IMU and battery; the best push-to-talk remote.",
|
|
424
|
+
"parts": [
|
|
425
|
+
{
|
|
426
|
+
"name": "USB-C data cable",
|
|
427
|
+
"qty": 1,
|
|
428
|
+
"required": true,
|
|
429
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
430
|
+
"search": "USB-C data cable",
|
|
431
|
+
"est_price_usd": 8
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
"try_saying": [
|
|
435
|
+
"(Hold to talk) Add milk to the grocery list.",
|
|
436
|
+
"Show me the picture you made."
|
|
437
|
+
]
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"device_id": "m5stack-stickc-plus2",
|
|
441
|
+
"support": "official",
|
|
442
|
+
"tier": "full-ui",
|
|
443
|
+
"kind": "ui",
|
|
444
|
+
"build": "tools/muse/board.sh build plus2",
|
|
445
|
+
"features": {
|
|
446
|
+
"home_tunnel": true,
|
|
447
|
+
"images": "color",
|
|
448
|
+
"push_to_talk": "voice",
|
|
449
|
+
"audio": "buzzer-mic",
|
|
450
|
+
"touch": false,
|
|
451
|
+
"camera": false,
|
|
452
|
+
"air_sensors": false,
|
|
453
|
+
"ota": true,
|
|
454
|
+
"battery": "yes",
|
|
455
|
+
"round_display": false,
|
|
456
|
+
"display_in": 1.14
|
|
457
|
+
},
|
|
458
|
+
"eol": true,
|
|
459
|
+
"note": "End of life at M5Stack; buzzer only, so no spoken replies.",
|
|
460
|
+
"parts": [
|
|
461
|
+
{
|
|
462
|
+
"name": "USB-C data cable",
|
|
463
|
+
"qty": 1,
|
|
464
|
+
"required": true,
|
|
465
|
+
"note": "Must carry data, not just charge. Most flashing problems are charge-only cables.",
|
|
466
|
+
"search": "USB-C data cable",
|
|
467
|
+
"est_price_usd": 8
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
"try_saying": [
|
|
471
|
+
"(Hold to talk) Add milk to the grocery list.",
|
|
472
|
+
"Show me the picture you made."
|
|
473
|
+
]
|
|
474
|
+
}
|
|
475
|
+
],
|
|
476
|
+
"sources": [
|
|
477
|
+
"https://gadgets.muse.ai/",
|
|
478
|
+
"https://github.com/facebookincubator/muse-gadget-sdk/blob/main/esp32/README.md",
|
|
479
|
+
"https://github.com/facebookincubator/muse-gadget-sdk/blob/main/esp32/devices/README.md",
|
|
480
|
+
"https://github.com/facebookincubator/muse-gadget-sdk/blob/main/esp32/AGENTS.md",
|
|
481
|
+
"https://gadgets.muse.ai/sdk-terms",
|
|
482
|
+
"https://www.engadget.com/2276312/meta-muse-gadgets-open-source-smart-home-link/"
|
|
483
|
+
],
|
|
484
|
+
"last_verified": "2026-10-02"
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
"id": "muse-linux",
|
|
488
|
+
"name": "Muse Gadgets: Linux Device SDK",
|
|
489
|
+
"vendor": "Meta",
|
|
490
|
+
"kind": "agent-gadget",
|
|
491
|
+
"launched": "2026-10-02",
|
|
492
|
+
"homepage": "https://gadgets.muse.ai/",
|
|
493
|
+
"sdk_repo": "https://github.com/facebookincubator/muse-gadget-sdk",
|
|
494
|
+
"sdk_path": "linux",
|
|
495
|
+
"docs_url": "https://github.com/facebookincubator/muse-gadget-sdk/tree/main/linux",
|
|
496
|
+
"license": "Apache-2.0",
|
|
497
|
+
"summary": "A Python service (musegadget) that turns a Linux box with Bluetooth LE into a Muse gadget. Muse gets shell, file and health commands on the machine and can push messages back to you.",
|
|
498
|
+
"toolchain": "Python 3.9+, BlueZ, python3-dbus and python3-gi; Raspberry Pi OS Bullseye+, Debian 11+ or Ubuntu 22.04+ (32- or 64-bit); sudo.",
|
|
499
|
+
"requires": [
|
|
500
|
+
"A Muse account and the Muse app with Settings > Devices > Developer mode on",
|
|
501
|
+
"An SDK token (mgst_...) from gadgets.muse.ai",
|
|
502
|
+
"A Linux machine with Bluetooth LE on your network"
|
|
503
|
+
],
|
|
504
|
+
"setup_steps": [
|
|
505
|
+
"curl -fsSL https://raw.githubusercontent.com/facebookincubator/muse-gadget-sdk/main/linux/install.sh -o install.sh",
|
|
506
|
+
"Read it first: less install.sh",
|
|
507
|
+
"bash install.sh --sdk-token mgst_... (installs to /opt/musegadget and starts the musegadget systemd service)",
|
|
508
|
+
"In the Muse app, turn on Settings > Devices > Developer mode, then Settings > Devices > Add Device (+). Pick MuseGadget-XXXXXX within 10 minutes of install. Green = connected; re-pair later with sudo musegadget pair.",
|
|
509
|
+
"Optional: push messages to Muse from scripts with musegadget send-user-msg \"...\""
|
|
510
|
+
],
|
|
511
|
+
"agent_quickstart": "Ask Muse (or any coding agent on the box) things like: \"Install Home Assistant on my Pi and tell me how to open it.\"",
|
|
512
|
+
"commands": [
|
|
513
|
+
"system.run",
|
|
514
|
+
"file.read",
|
|
515
|
+
"file.write",
|
|
516
|
+
"device.health"
|
|
517
|
+
],
|
|
518
|
+
"extending": "Add a spec to COMMAND_SPECS in linux/src/musegadget/executor.py (description, required/optional params with type + description, optional timeout_ms), handle it in Executor.run returning ok(payload) or error(message), then restart the service.",
|
|
519
|
+
"tiers": [
|
|
520
|
+
{
|
|
521
|
+
"id": "linux",
|
|
522
|
+
"label": "Linux",
|
|
523
|
+
"description": "Shell, file and health commands; scripts can message you through Muse."
|
|
524
|
+
}
|
|
525
|
+
],
|
|
526
|
+
"caveats": [
|
|
527
|
+
"Commands run as the install user with exactly that account's permissions. If it can sudo, so can Muse. Use a dedicated low-privilege user (--run-as USER) unless you need more.",
|
|
528
|
+
"Messages from the device are capped at 256 KB; command output is cut at 96 KB per stream.",
|
|
529
|
+
"Muse labels it a community device; it is not a supported Meta product."
|
|
530
|
+
],
|
|
531
|
+
"terms": {
|
|
532
|
+
"url": "https://gadgets.muse.ai/sdk-terms",
|
|
533
|
+
"summary": "Same token terms as the ESP32 SDK: personal and non-commercial, at most 50 devices per token, no selling or public listing, revocable at any time.",
|
|
534
|
+
"personal_noncommercial_only": true,
|
|
535
|
+
"max_devices_per_token": 50,
|
|
536
|
+
"selling_allowed": false,
|
|
537
|
+
"revocable": true
|
|
538
|
+
},
|
|
539
|
+
"community_url": "https://discord.gg/3bhjCkZdd6",
|
|
540
|
+
"boards": [
|
|
541
|
+
{
|
|
542
|
+
"device_id": "raspberry-pi-5",
|
|
543
|
+
"support": "official",
|
|
544
|
+
"tier": "linux",
|
|
545
|
+
"kind": "linux",
|
|
546
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
547
|
+
"features": {
|
|
548
|
+
"ble_builtin": true,
|
|
549
|
+
"compute": "standard"
|
|
550
|
+
},
|
|
551
|
+
"note": "Featured on gadgets.muse.ai.",
|
|
552
|
+
"parts": [
|
|
553
|
+
{
|
|
554
|
+
"name": "Official 27 W USB-C power supply",
|
|
555
|
+
"qty": 1,
|
|
556
|
+
"required": true,
|
|
557
|
+
"note": "The Pi 5 needs 5 V / 5 A for full USB power.",
|
|
558
|
+
"buy_url": "https://www.raspberrypi.com/products/27w-power-supply/",
|
|
559
|
+
"est_price_usd": 12
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"name": "microSD card, 32 GB or larger",
|
|
563
|
+
"qty": 1,
|
|
564
|
+
"required": true,
|
|
565
|
+
"note": "Flash Raspberry Pi OS (Bookworm) with Raspberry Pi Imager.",
|
|
566
|
+
"search": "microSD 32GB A2",
|
|
567
|
+
"est_price_usd": 10
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
"name": "Case with active cooler",
|
|
571
|
+
"qty": 1,
|
|
572
|
+
"required": false,
|
|
573
|
+
"note": "Recommended if it will also run Home Assistant.",
|
|
574
|
+
"search": "Raspberry Pi 5 case active cooler",
|
|
575
|
+
"est_price_usd": 12
|
|
576
|
+
}
|
|
577
|
+
],
|
|
578
|
+
"try_saying": [
|
|
579
|
+
"Install Home Assistant on my Pi and tell me how to open it.",
|
|
580
|
+
"How much disk space is left on the Pi?"
|
|
581
|
+
]
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"device_id": "raspberry-pi-4b",
|
|
585
|
+
"support": "official",
|
|
586
|
+
"tier": "linux",
|
|
587
|
+
"kind": "linux",
|
|
588
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
589
|
+
"features": {
|
|
590
|
+
"ble_builtin": true,
|
|
591
|
+
"compute": "standard"
|
|
592
|
+
},
|
|
593
|
+
"note": "Listed in the Linux SDK README.",
|
|
594
|
+
"parts": [
|
|
595
|
+
{
|
|
596
|
+
"name": "USB-C power supply (5.1 V / 3 A)",
|
|
597
|
+
"qty": 1,
|
|
598
|
+
"required": true,
|
|
599
|
+
"note": "The official 15.3 W supply avoids undervoltage warnings.",
|
|
600
|
+
"buy_url": "https://www.raspberrypi.com/products/type-c-power-supply/",
|
|
601
|
+
"est_price_usd": 10
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"name": "microSD card, 16 GB or larger",
|
|
605
|
+
"qty": 1,
|
|
606
|
+
"required": true,
|
|
607
|
+
"note": "Flash Raspberry Pi OS with Raspberry Pi Imager.",
|
|
608
|
+
"search": "microSD 32GB A1",
|
|
609
|
+
"est_price_usd": 10
|
|
610
|
+
}
|
|
611
|
+
],
|
|
612
|
+
"try_saying": [
|
|
613
|
+
"Install Home Assistant on my Pi and tell me how to open it.",
|
|
614
|
+
"Check the Pi's temperature and uptime."
|
|
615
|
+
]
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"device_id": "raspberry-pi-zero-2w",
|
|
619
|
+
"support": "official",
|
|
620
|
+
"tier": "linux",
|
|
621
|
+
"kind": "linux",
|
|
622
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
623
|
+
"features": {
|
|
624
|
+
"ble_builtin": true,
|
|
625
|
+
"compute": "light"
|
|
626
|
+
},
|
|
627
|
+
"note": "Listed in the Linux SDK README; slow but enough for shell and file commands.",
|
|
628
|
+
"parts": [
|
|
629
|
+
{
|
|
630
|
+
"name": "Micro-USB power supply (5 V / 2.5 A)",
|
|
631
|
+
"qty": 1,
|
|
632
|
+
"required": true,
|
|
633
|
+
"note": "Use the PWR port, not the USB data port.",
|
|
634
|
+
"search": "Raspberry Pi micro USB power supply 2.5A",
|
|
635
|
+
"est_price_usd": 8
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "microSD card, 16 GB or larger",
|
|
639
|
+
"qty": 1,
|
|
640
|
+
"required": true,
|
|
641
|
+
"note": "Flash Raspberry Pi OS Lite (64-bit) with Raspberry Pi Imager.",
|
|
642
|
+
"search": "microSD 32GB A1",
|
|
643
|
+
"est_price_usd": 10
|
|
644
|
+
}
|
|
645
|
+
],
|
|
646
|
+
"try_saying": [
|
|
647
|
+
"Check the Pi's temperature and uptime.",
|
|
648
|
+
"Message me if the garage sensor script stops."
|
|
649
|
+
]
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
"device_id": "dell-wyse-5070",
|
|
653
|
+
"support": "possible",
|
|
654
|
+
"tier": "linux",
|
|
655
|
+
"kind": "linux",
|
|
656
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
657
|
+
"features": {
|
|
658
|
+
"ble_builtin": false,
|
|
659
|
+
"compute": "desktop"
|
|
660
|
+
},
|
|
661
|
+
"note": "Not on Meta's list. Meets the stated requirements on Debian/Ubuntu if it has Bluetooth LE; most units need a USB BLE adapter.",
|
|
662
|
+
"parts": [
|
|
663
|
+
{
|
|
664
|
+
"name": "USB Bluetooth LE adapter",
|
|
665
|
+
"qty": 1,
|
|
666
|
+
"required": true,
|
|
667
|
+
"note": "Most units have no Bluetooth; the Muse Linux SDK needs BLE to pair.",
|
|
668
|
+
"search": "USB Bluetooth 5.0 adapter Linux",
|
|
669
|
+
"est_price_usd": 12
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
"name": "USB stick for the Debian/Ubuntu installer",
|
|
673
|
+
"qty": 1,
|
|
674
|
+
"required": true,
|
|
675
|
+
"note": "8 GB or larger.",
|
|
676
|
+
"search": "USB flash drive 16GB",
|
|
677
|
+
"est_price_usd": 6
|
|
678
|
+
}
|
|
679
|
+
],
|
|
680
|
+
"try_saying": [
|
|
681
|
+
"Set up a nightly backup of my photos folder on this box.",
|
|
682
|
+
"How much disk space is left?"
|
|
683
|
+
]
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
"device_id": "hp-t620-plus",
|
|
687
|
+
"support": "possible",
|
|
688
|
+
"tier": "linux",
|
|
689
|
+
"kind": "linux",
|
|
690
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
691
|
+
"features": {
|
|
692
|
+
"ble_builtin": false,
|
|
693
|
+
"compute": "desktop"
|
|
694
|
+
},
|
|
695
|
+
"note": "Not on Meta's list. Add a USB Bluetooth LE adapter.",
|
|
696
|
+
"parts": [
|
|
697
|
+
{
|
|
698
|
+
"name": "USB Bluetooth LE adapter",
|
|
699
|
+
"qty": 1,
|
|
700
|
+
"required": true,
|
|
701
|
+
"note": "The Muse Linux SDK needs BLE to pair.",
|
|
702
|
+
"search": "USB Bluetooth 5.0 adapter Linux",
|
|
703
|
+
"est_price_usd": 12
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"name": "USB stick for the Debian/Ubuntu installer",
|
|
707
|
+
"qty": 1,
|
|
708
|
+
"required": true,
|
|
709
|
+
"note": "8 GB or larger.",
|
|
710
|
+
"search": "USB flash drive 16GB",
|
|
711
|
+
"est_price_usd": 6
|
|
712
|
+
}
|
|
713
|
+
],
|
|
714
|
+
"try_saying": [
|
|
715
|
+
"Set up a nightly backup of my photos folder on this box.",
|
|
716
|
+
"How much disk space is left?"
|
|
717
|
+
]
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"device_id": "intel-nuc",
|
|
721
|
+
"support": "possible",
|
|
722
|
+
"tier": "linux",
|
|
723
|
+
"kind": "linux",
|
|
724
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
725
|
+
"features": {
|
|
726
|
+
"ble_builtin": null,
|
|
727
|
+
"compute": "desktop"
|
|
728
|
+
},
|
|
729
|
+
"note": "Not on Meta's list. Many NUCs ship with Bluetooth; check yours.",
|
|
730
|
+
"parts": [
|
|
731
|
+
{
|
|
732
|
+
"name": "USB Bluetooth LE adapter (only if yours has none)",
|
|
733
|
+
"qty": 1,
|
|
734
|
+
"required": false,
|
|
735
|
+
"note": "Many NUCs have Bluetooth built in; check with bluetoothctl list.",
|
|
736
|
+
"search": "USB Bluetooth 5.0 adapter Linux",
|
|
737
|
+
"est_price_usd": 12
|
|
738
|
+
}
|
|
739
|
+
],
|
|
740
|
+
"try_saying": [
|
|
741
|
+
"Install Home Assistant in Docker and tell me how to open it.",
|
|
742
|
+
"How much disk space is left?"
|
|
743
|
+
]
|
|
744
|
+
},
|
|
745
|
+
{
|
|
746
|
+
"device_id": "lenovo-thinkcentre-tiny",
|
|
747
|
+
"support": "possible",
|
|
748
|
+
"tier": "linux",
|
|
749
|
+
"kind": "linux",
|
|
750
|
+
"build": "bash install.sh --sdk-token mgst_...",
|
|
751
|
+
"features": {
|
|
752
|
+
"ble_builtin": null,
|
|
753
|
+
"compute": "desktop"
|
|
754
|
+
},
|
|
755
|
+
"note": "Not on Meta's list. Bluetooth depends on the Wi-Fi card fitted; add a USB BLE adapter if missing.",
|
|
756
|
+
"parts": [
|
|
757
|
+
{
|
|
758
|
+
"name": "USB Bluetooth LE adapter (only if yours has none)",
|
|
759
|
+
"qty": 1,
|
|
760
|
+
"required": false,
|
|
761
|
+
"note": "Bluetooth depends on the Wi-Fi card fitted.",
|
|
762
|
+
"search": "USB Bluetooth 5.0 adapter Linux",
|
|
763
|
+
"est_price_usd": 12
|
|
764
|
+
}
|
|
765
|
+
],
|
|
766
|
+
"try_saying": [
|
|
767
|
+
"Install Home Assistant in Docker and tell me how to open it.",
|
|
768
|
+
"How much disk space is left?"
|
|
769
|
+
]
|
|
770
|
+
}
|
|
771
|
+
],
|
|
772
|
+
"sources": [
|
|
773
|
+
"https://github.com/facebookincubator/muse-gadget-sdk/blob/main/linux/README.md",
|
|
774
|
+
"https://github.com/facebookincubator/muse-gadget-sdk/blob/main/linux/AGENTS.md",
|
|
775
|
+
"https://gadgets.muse.ai/sdk-terms"
|
|
776
|
+
],
|
|
777
|
+
"last_verified": "2026-10-02"
|
|
778
|
+
}
|
|
779
|
+
]
|