Anthropic has opened a research preview of the Model Hardware Standard (MHS), a shared specification that lets AI agents discover and operate physical devices. The problem it targets is plumbing. A lab bench or factory cell is assembled from vendors that never planned to interoperate, so every instrument ships its own interface and specialists hand-write bespoke translators between each pair. According to Anthropic team, the setup normally takes weeks to months, and that MHS cuts it to hours or minutes.
The Integration Tax
Each instrument ships its own programming interface, so specialists hand-write bespoke translators between every pair. Even once wired together, there is no common way for devices to hand state to an agent or be operated safely by one. Anthropic says setup typically runs weeks to months; MHS reduces it to hours or minutes.
How it works
MHS standardizes the driver — the layer between an OS and a device. It exposes a small primitive set: read (get temperature), write (set temperature), plus discovery, so devices and agents find each other across a network without a translator in between.
It also carries knowledge code alone does not encode — the weight of a robot arm, for instance. Driver tags let a user write that in natural language, or have an agent interview them about the setup. The driver compiles those tags into a reference file: what a device measures, what can be adjusted, which safety limits are enforced.
Control runs through three mechanisms: the Model Context Protocol, a CLI, and code files. MHS is model-agnostic — any agent harness can reach it via standard protocols.
‘;
}
return h;
}
var st={i:0,linked:false,temp:null,busy:false,tags:0,path:0,loop:0,shown:false};
var COPY=[
function(){return {e:"Step 01 / the problem",h:"Every instrument speaks its own language",
p:"A lab or factory rig is assembled from vendors that never planned to interoperate. Each device ships its own interface, so specialists hand-write glue code between every pair. Anthropic says that setup normally runs weeks to months; MHS aims to cut it to hours or minutes.",
f:"
Toggle the diagram. Before MHS, five instruments need bespoke translators and still cannot share state with an agent. After, they discover each other on one bus.",
c:[{t:"Before MHS",on:!st.linked,f:function(){st.linked=false;render()}},
{t:"After MHS",on:st.linked,f:function(){st.linked=true;render()}}]}},
function(){return {e:"Step 02 / the driver",h:"Two primitives, and a limit the agent cannot cross",
p:"MHS standardises the driver — the software between an operating system and a device. It exposes a small primitive set: read (get temperature) and write (set temperature), plus discovery so devices and agents find each other across a network without a translator in between.",
f:"
Try a write. Safety limits live in the driver, not the prompt, so an out-of-range command is refused before anything moves.",
c:[{t:"read()",on:false,f:function(){st.busy=true;flash("read temp → "+(st.temp==null?"unset":st.temp+"°C"),true);render()}},
{t:"write 37°C",on:false,f:function(){st.temp=37;st.busy=true;flash("write setpoint → 37°C accepted",true);render()}},
{t:"write 120°C",on:false,f:function(){st.busy=false;flash("write setpoint → 120°C REFUSED, above 45°C limit",false);render()}}]}},
function(){return {e:"Step 03 / tags",h:"The things that were only ever in a paper manual",
p:"An agent also needs facts that code alone does not carry — the weight of a robot arm, for instance, which decides how it can be moved safely. MHS driver tags let a user write those in plain language, or have an agent interview them about the rig. The driver compiles the tags into a reference file the agent reads.",
f:"
Add tags one at a time. The reference file describes what a device measures, what can be adjusted, and which limits are enforced.",
c:[{t:"Add a tag",on:false,f:function(){st.tags=Math.min(4,st.tags+1);flash("tag written → reference file "+st.tags+"/4",st.tags===4);render()}},
{t:"Reset",on:false,f:function(){st.tags=0;render()}}]}},
function(){return {e:"Step 04 / control",h:"Three ways in, one line of code out",
p:"Once the agent knows a device, it needs to drive it. MHS exposes three mechanisms that work together: the Model Context Protocol, a command line interface, and code files. Together they let one line of code orchestrate across several instruments — and MHS is model-agnostic, so any agent harness can reach it.",
f:"
Pick a path. Code files matter most for long-running work: the agent chains driver commands so devices execute without it reasoning at every step.",
c:[{t:"MCP",on:st.path===0,f:function(){st.path=0;render()}},
{t:"CLI",on:st.path===1,f:function(){st.path=1;render()}},
{t:"Code files",on:st.path===2,f:function(){st.path=2;render()}}]}},
function(){return {e:"Step 05 / the loop",h:"Genentech let Claude tune its own pipetting",
p:"Automating the BCA protein assay meant coordinating a liquid handler, a robotic arm and a plate reader. Claude ran trial transfers of dyed liquid, read absorbance, scored itself against an expert’s plate using RMSE, and adjusted the flow rate. It converged on roughly 140 µL/s for water and 10 µL/s for viscous BSA.",
f:"
Advance the loop. Claude also recovered from tip-pickup and fluid-detection errors on its own — but it could not reason about bubble physics until researchers told it the failure was physical.",
c:[{t:"Advance loop",on:false,f:function(){st.loop=(st.loop+1)%4;flash("iteration "+(st.loop+1)+" — RMSE "+LOOP[st.loop].r,st.loop===3);render()}},
{t:"Reset",on:false,f:function(){st.loop=0;render()}}]}},
function(){return {e:"Step 06 / results",h:"What the preview partners actually measured",
p:"QuEra’s hand-built relock script worked about 58% of the time at ~150 s per attempt. Given the same problem through MHS, a four-role agent loop ran overnight and produced a deterministic script that recovered the lock 695 times out of 700. Carnegie Mellon went from raw equipment to a finished dose-response curve, including one autonomous rerun, in eight hours.",
f:"
Grey bar is before, orange is after. Bar lengths are scaled for comparison; the labels carry the real figures.",
c:[{t:"Reveal results",on:st.shown,f:function(){st.shown=true;flash("partner results loaded",true);render()}},
{t:"Reset",on:false,f:function(){st.shown=false;render()}}]}}
];
var msg={t:"Bus idle. Pick a step to begin.",ok:null};
function flash(t,ok){msg={t:t,ok:ok}}
function render(){
var rail=document.getElementById(‘rail’),h=””;
for(var i=0;i
‘+
‘‘+TABS[i].n+’‘+TABS[i].t+’‘;
}
rail.innerHTML=h;
var viz=document.getElementById(‘viz’);
if(st.i===0)viz.innerHTML=devicesSVG(st.linked);
else if(st.i===1)viz.innerHTML=primSVG(st);
else if(st.i===2)viz.innerHTML=tagSVG(st.tags);
else if(st.i===3)viz.innerHTML=pathSVG(st.path);
else if(st.i===4)viz.innerHTML=loopSVG(st.loop)+’
iteration ‘+(st.loop+1)+’ of 4 — ‘+LOOP[st.loop].note+’
‘;
else viz.innerHTML=resHTML(st.shown);
var d=COPY[st.i](),c=””;
c+=’
‘+d.e+’
‘+d.h+’
‘+d.p+’
‘;
c+=’
‘;
for(var j=0;j‘+d.c[j].t+’‘;
c+=’
‘;
c+=’
mhs> ‘+msg.t+’
‘;
c+=’
‘+d.f+’
‘;
document.getElementById(‘copy’).innerHTML=c;
document.getElementById(‘stat’).innerHTML=st.i===0?’Bus idle’:’Step ‘+TABS[st.i].n+’ active’;
var btns=document.querySelectorAll(‘#copy .btn’);
for(var b=0;b