Hello, hardware: a hello world for MHS
Contents

README

markdown

Hello, hardware: a hello world for MHS

Software has print("hello world"). Hardware needs one too. This is a proposal for an MHS hello world that anyone can run from Claude: your own RGB LED, for an hour, on a wall of 14,256 of them in an Adom workcell. A live camera watches the wall and puts a red box around your LED. You ask Claude for a colour, a rainbow or a fade, and you see it happen on real hardware, behind a safety layer you can poke at.

Download the video (2 min 12 s)

This is a mockup. The workcell images are 3D renders and the LED wall is not built yet. The Claude Desktop part of the video is a real, unedited session: real Claude, real tool calls, talking to a small stand-in server that simulates the LED wall, its sensors and its safety layer (source in mock/). It is not Anthropic's MHS software.

Why one LED per person

A fleet of 100 devices gets used up quickly once the public shows up. An LED wall turns one workcell into 14,256 independent devices. Each visitor books one LED for an hour, so one cell serves thousands of people a day, and each of them still controls real hardware they can see on a live feed.

The workcell

The LED wall in an Adom workcell

  • Nine LED tiles on one LrgLrg scaffold (576 × 576 mm), 120 × 120 LEDs at a 4 mm pitch.
  • An overhead camera on the workcell's top frame, looking straight down at the wall.
  • A physical e-stop on the frame, like every cell in the lab.

Overhead camera view with a red box around one LED

Close-up of the user's LED at rgb(220, 0, 0)

The tile

Tiles standing on large machine pins in the scaffold

Size 160 × 160 mm, a 3 × 3 grid covers 480 × 480 mm of the scaffold
LEDs 2 × 2 mm addressable RGB, 4 mm pitch, 40 × 40 grid minus 4 cells at each corner pin = 1,584 per tile
Mounting four Adom large machine pins, 16 mm in from each corner, so pins sit 128 mm apart on the scaffold's 32 mm grid (adjacent tiles' pins are exactly one pitch apart)
Electronics microcontroller strip on the back face only, so the front is pure LED canvas and the grid reads as one picture across tile seams
Sensors one temperature sensor per tile, sitting in the gap between the four centre LEDs: nine sensors in a 3 × 3 grid

The LEDs in the renders are drawn as simple cubes on a fixed grid; this is a mechanical mockup, not a laid-out board. Engineering work on the tile lives on adom/led-grid-wall.

The safety layer

MHS is described publicly as a standard that makes devices discoverable and enforces device-level safety limits, including an emergency stop. A single LED makes those ideas visible and harmless to try:

Four safety demos on one LED

Safety demo What the user sees
Parameter limit The user caps every channel at 220. Claude asks for 255; the command is rejected before it reaches the LED and the rejection shows in the safety log.
E-stop One button cuts power to the LED and latches. Claude can press it; only a human can reset it.
Heat interlock (external sensor 1) Nine temperature sensors around the panel. Any sensor over 50 °C trips the e-stop.
Camera interlock (external sensor 2) The live feed measures brightness inside the red box. Above the trip level the user sets, the e-stop fires: a feedback loop from a sensor that is not on the device.

The agent may only tighten limits. Loosening a limit or resetting the e-stop is a human-only action on the dashboard.

On real hardware, "cut power to one LED" would be a firmware-level blackout of that pixel and a latched flag. A physical e-stop on the cell cuts the tile's 5 V rail. Either way the user sees the same thing: the LED goes dark and stays dark until a person resets it.

Trying it: the prompt

A user opens Claude Desktop and types something like:

i want to test out MHS. i heard that anthropic lets me do a hello world example where i get my own led light that i can control from MHS and you can send it a rainbow of colors to control it, and i get a live video feed of the led and the sensor data for it in case the ai has to estop it

In the recorded session Claude claimed an LED (row 84, column 27, on tile 7), checked the sensors, opened the live dashboard in Claude Desktop's built-in browser and started a rainbow:

Claude Desktop with the dashboard in the in-app browser

Then, one turn at a time:

  1. "send 255 so i can see the MHS safety layer stop you": the safety layer rejected the command; the LED never changed.
  2. "set it to 220 red, then tighten the camera brightness trip to 80%": the camera read 85%, so the e-stop tripped as soon as the limit took effect.
  3. Human reset on the dashboard.
  4. "run the rainbow at brightness 150 for 2 minutes and watch the heat sensors": a simulated fault warmed tile 7 past 50 °C and the heat interlock tripped the e-stop. Claude reported the timeline, said it should have hit the e-stop itself sooner, and recommended not resetting until someone checked the tile.

Claude's report after the heat interlock tripped

The dashboard

Live dashboard

Dashboard after the heat interlock tripped

Live camera feed of the whole panel with the red box, plus a live zoom: a 7.5 mm window of the same feed, cropped in the browser, centred on your LED with slivers of its neighbours, so you don't have to squint for one pixel among 14,256. Also the nine temperatures overlaid where the sensors sit, the LED's RGB values against the cap, the e-stop and the human-only reset, the camera brightness meter with its trip line, and the safety log of every command.

Run the stand-in yourself

mock/ is a single Node file with no dependencies: an MCP server over stdio plus the dashboard on http://127.0.0.1:4790. Put the mock/ folder anywhere, set the absolute path to server.js in .mcp.json, open the folder in Claude Code (CLI or the Code tab in Claude Desktop) and ask for your LED. .claude/launch.json lists the dashboard for the in-app browser.

Tools: claim_led, open_dashboard, set_led, play_sequence, get_status, set_safety_limits (tighten only), trigger_estop.

What it would take

  • Build and fab nine tiles and the camera mount for one workcell.
  • Wire the safety layer to real hardware: per-channel cap in firmware, the e-stop latch, nine temperature sensors, the camera brightness probe.
  • Put a queue in front of it: book an LED, get a text when it is yours, live feed while you drive it.

Adom runs a cloud lab of workcells in Fort Worth, Texas, where hardware goes from the box to live on the internet in hours.