Build

Instruments supported

What you can put under OpenMHP today, and how much work each route is. Most bench instruments need no code at all; anything already driven by SiLA 2, PyLabRobot, MADSci, OPC UA or ROS 2 needs a few lines of bindings.

The short answer for a scientist: run npx @sinkush/openmhp setup, then tell your agent to "find the instruments on my network" and "onboard" the rest. The agent uses the routes on this page for you. Come here when you want to know what is possible before you start.

Routes, from least to most effort

RouteFitsEffortHow
Already speaks OpenMHPa device served by mhp serve on a bench PC, or a vendor device with MHP built innonemhp_lab op="scan" finds it; add its address
Community packagea model someone has already packagedset location and portmhp_lab op="registry", then add target="github:…"
Serial, no codeany instrument with text commands over USB or RS-232paste commands from the manualthe onboarding interview picks kind: serial; commands go in descriptor.yaml
Operated by handanything with no cable, or as a placeholderanswer the interviewthe interview picks kind: manual; the agent instructs the operator and records readings
Adapterinstruments driven by SiLA 2, PyLabRobot, MADSci, OPC UA, ROS 2a few lines of bindingssee the sections below and the adapters page
Native drivera vendor SDK or a binary protocola short Python classthe add an instrument page, route A

Through PyLabRobot

PyLabRobot is an open-source, hardware-agnostic library for liquid handlers and other lab automation devices. Every device it drives becomes an OpenMHP device through plr_device(machine): each public coroutine on the machine becomes an action with parameters read from its signature. Devices in PyLabRobot's catalogue at the time of writing include:

CategoryInstrumentsOn OpenMHP
Liquid handlersHamilton STAR, STARlet, Vantage; Opentrons OT-2 and Flex; Tecan EVOcommunity package for the Flex ships; others follow the same three-line driver.py
Plate readersBMG CLARIOstar; Agilent BioTek Cytation 5 (imaging)plr_device(reader); readings return as job results saved to the run folder
Heater-shakers, incubatorsInheco ThermoShake and heater-shakers; Hamilton HeaterShaker; Thermo Cytomat incubatorstemperature and speed become settings with limits you set
Centrifuges, sealers, peelersAgilent VSpin; Azenta A4S sealer; Brooks XPeel peelereach operation becomes an action; gate the ones that move with interlocks
Balances, pumps, tiltersMettler Toledo WXS205SDU; Masterflex peristaltic pumps; Hamilton tilt modulesreadings as signals, flow and angle as settings

Check PyLabRobot's current documentation for the exact list; it grows monthly. The simulated twin for any PyLabRobot device is its chatterbox backend, which the bundled Flex package uses.

Through SiLA 2

SiLA 2 is the lab-automation industry standard for instrument interfaces. Any instrument with a SiLA 2 server, whether from the vendor or from a driver catalogue, becomes an OpenMHP device through sila_device(host, port, …): properties become signals, one-parameter commands become settings, commands become actions, and observable commands stream progress. SiLA servers exist for instruments from Hamilton, Tecan, Beckman Coulter, Agilent, Eppendorf, Thermo Fisher and many smaller vendors, and for generic classes such as balances, pumps, readers and incubators through community and commercial driver libraries.

How to get one on OpenMHP: list the server's implemented features with the SiLA client, choose the properties and commands you want exposed, and write the binding map shown on the adapters page. Give every setting limits; SiLA does not carry them.

Through MADSci

MADSci, from Argonne National Laboratory, drives self-driving lab workcells through nodes that describe their own actions. The OpenMHP adapter needs no binding map: madsci_node(url) reads the node's actions and state. Node modules published by the MADSci and RPL projects include:

CategoryNodes
Plate handlingPrecise PF400 arm; Hudson SciClops plate crane; Universal Robots arms
Liquid handlingOpentrons OT-2; the Barty peristaltic dispenser
Readers and thermocyclersHidex Sense plate reader; Biometra thermocyclers
Sealing, peeling, storageAzenta A4S sealer; Brooks XPeel peeler; Liconic incubators and hotels
SensingCamera nodes

How to get one on OpenMHP: point the adapter at the node's URL and set approval levels for actions that move. A MADSci workcell manager can also act as an OpenMHP host by pointing at the directory.

Through OPC UA and Modbus

OPC UA is how process equipment and PLCs expose themselves: furnaces, environmental chambers, bioreactors, dosing systems, conveyors, and anything behind a Siemens, Beckhoff, Rockwell or Schneider controller. Sartorius bioreactor controllers, Eppendorf and Thermo chambers, and most industrial ovens ship with or can be given an OPC UA server. Modbus devices, including many temperature controllers and power supplies, use the same binding shape with two register callables.

How to get one on OpenMHP: browse the server's node tree, pick the variables to read and write and the methods to call, and write the map shown on the adapters page. PLC safety logic stays primary; OpenMHP limits stop the agent from asking for something unsafe.

Through ROS 2

ROS 2 is where research robotics lives. Arms from Universal Robots, Franka, KUKA, Kinova and Doosan have ROS 2 drivers; so do Robotiq grippers, mobile bases, and most cameras and force sensors. Topics become signals, published topics become settings, action servers become actions with progress from feedback, and a Trigger service becomes the emergency stop.

How to get one on OpenMHP: source your ROS 2 workspace on the bench PC, write the binding map, and put an example goal in the action's examples so agents build correct messages.

Native and serial, today

PackageInstrumentRoute
ika-c-mag-hs7IKA C-MAG HS 7 stirrer hotplateserial, NAMUR commands; simulated twin included
opentrons-flexOpentrons FlexPyLabRobot adapter; chatterbox twin
manual-benchtop-centrifugeany benchtop centrifugeoperator-run template
thermocycler-01, arm-01bundled simulatorsfor trying everything with nothing plugged in

Instruments that answer text commands over a cable, and therefore fit the no-code serial route, include IKA and Heidolph stirrers and hotplates, Julabo and Huber circulators, Mettler Toledo and Sartorius balances, Harvard Apparatus and New Era syringe pumps, Thorlabs stages and shutters, and many spectrometer and power-supply front ends. If the manual has a command table, the interview can use it.

Contribute a package

A package is a folder: DEVICE.md, descriptor.yaml, driver.py, ideally sim.py and a safety card. Open a pull request against the repository under packages/ and add it to registry.json. Every package someone contributes is one no one else has to write.