On this page 9 sections
Python device SDKs as OpenMHS drivers (direct Driver class)
Generated by MHS/registry/build_registry.py on 2026-10-20T00:00:00Z from 467 registry records and their task cards. A plan, not a conformance claim.
- bridge_status:
available - helper:
PythonObjectDriver - exemplar:
MHS/drivers/labs/tiagocoutinho__julabo
Launch
Every driver package starts the same way; per-repo configuration (environment id, model path, port, baud rate, VISA resource) lives in the package's driver.py, never in launch flags:
mhs serve <driver-dir>A package is done when python3 -m mhs.driver check <driver-dir> --backend fake exits 0 (evidence contract_checked; a fake never yields an MHS-Device level).
Registry coverage
- Repos: 467
- Decisions: bridge-runtime 18, direct-driver 212, reference 43, skip 194
- Waves: 0: 2, 1: 28, 2: 62, 3: 82, 5: 13, 6: 25, 9: 255
- Dispatchable now: 0
- Modes: hardware 211, simulated 92
Applicability
A Python package with an AST-parsed device class (score at least 9, at least three device API members) and device evidence: triage rule 10, PY_SDK_WITH_ENTRY. Exemplars: tiagocoutinho/julabo (instruments) and xArm-Developer/xArm-Python-SDK (robot SDKs).
Capability mapping
| native call | OpenMHS target | notes |
|---|---|---|
| Device(port=..., address=...) | lifecycle: the native backend factory in driver.py | construction and connection are never capabilities; addresses live in driver.py, not in launch flags |
| device.get_<quantity>() / device.<quantity> | @read: the measure class that fits (cap.measure.*), else cap.sensing.read.v1 | unit from the vendor documentation or the upstream code (UCUM); a read never changes the device revision |
| device.set_<parameter>(value) | @write: cap.device.configure.v1, or a write class that fits (cap.thermal.setpoint.v1, cap.imaging.illumination.v1) | every limit cites source and file:line, or is Limit.operator_required |
| device.move(...) / start() / acquire() | @action: the catalogue class that fits, else x-cap.<owner>.<name>.v1 with an inline schema | add a RESULT.json catalogue_requests entry for every x-cap id; declare long_running and cancellable for blocking calls |
| device.stop() / abort() / output_off() | @estop plus safe_state | the e-stop is mhs.safety.estop, not a capability |
| device.close() / disconnect() | lifecycle: driver teardown | never a capability (not self_test, not restore) |
Class ids come from python3 -m mhs.driver catalog search <words>. The deprecated classes cap.device.describe.v1, cap.world.state.v1, cap.world.snapshot.v1 and cap.world.restore.v1 are replaced by the protocol methods mhs.devices.get, mhs.resource.read, mhs.snapshot and mhs.restore.
Safety
The risk floor of a device is the highest catalogue risk_class of its classes (CAP-017); a driver may declare a higher risk, never a lower one. Hardware at R1 or above needs an @estop and a non-empty safe state. Importability says nothing about hazards. Heaters, motors, pumps, lasers and high-voltage outputs are common; cite every limit from the vendor documentation or the upstream code, or use Limit.operator_required.
Fidelity
A fake backend (a recording fake, or the upstream simulator when the repo ships one) yields contract_checked evidence only.
Pitfalls
Constructors often open ports or start threads: keep them in the hardware backend factory. Optional heavy imports belong in the backend module. Do not claim capabilities from class names alone; confirm each native call in the code.
First task cards
gh.tiagocoutinho/julabo: direct-driver, wave 0, rank 3,MHS/registry/tasks/labs/tiagocoutinho__julabo.jsongh.xarm-developer/xarm-python-sdk: direct-driver, wave 0, rank 4,MHS/registry/tasks/robots/xarm-developer__xarm-python-sdk.jsongh.martinhjelmare/leicacam: direct-driver, wave 1, rank 1,MHS/registry/tasks/labs/martinhjelmare__leicacam.jsongh.benpruitt/tecancavro: direct-driver, wave 1, rank 2,MHS/registry/tasks/labs/benpruitt__tecancavro.jsongh.pymeasure/pymeasure: direct-driver, wave 1, rank 5,MHS/registry/tasks/labs/pymeasure__pymeasure.json
Sources
- Task cards:
MHS/registry/tasks/<track>/<owner>__<repo>.json(schema/taskcard.schema.json). - Triage rules and the helper table:
MHS/registry/triage.py; curated decisions:MHS/registry/overrides/. - Driver API and gate:
MHS/sdk/docs/driver-authoring.md; exemplars:MHS/drivers/.
Packages
Top 24 of 467 by stars. Filter the full list.
| Package | Tier | Ring | Evidence | Stars |
|---|---|---|---|---|
| atsushisakai/pythonrobotics atsushisakai/pythonrobotics: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:periphera | Tier D | 3 | static scan | 30,651 |
| nvidia/warp nvidia/warp: physics engines for general (robotics track). OpenMHS plan: SDK bridge runtime, not a per-repo driver. Cata | Tier C | 3 | static scan | 7,179 |
| rlinf/rlinf rlinf/rlinf: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:peripheral). Language: Py | Tier D | 3 | static scan | 5,467 |
| nvidia-omniverse/physx nvidia-omniverse/physx: physics engines for general (robotics track). OpenMHS plan: SDK bridge runtime, not a per-repo d | Tier C | 3 | static scan | 4,784 |
| stack-of-tasks/pinocchio stack-of-tasks/pinocchio: physics engines for general (robotics track). OpenMHS plan: not integrated (override:recon). L | Tier D | 3 | static scan | 3,784 |
| leggedrobotics/rsl_rl leggedrobotics/rsl_rl: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:peripheral). La | Tier D | 3 | static scan | 3,051 |
| tonyzhaozh/aloha tonyzhaozh/aloha: device SDK for robot manipulation (robotics track). OpenMHS plan: direct-driver with PythonObjectDrive | Tier B | 3 | static scan | 2,343 |
| jsbsim-team/jsbsim jsbsim-team/jsbsim: physics engines for UAVs (robotics track). OpenMHS plan: not integrated (skip:peripheral). Language: | Tier D | 3 | static scan | 2,289 |
| interactivecomputergraphics/positionbaseddynamics interactivecomputergraphics/positionbaseddynamics: physics engines for general (robotics track). OpenMHS plan: not integ | Tier D | 3 | static scan | 2,286 |
| ompl/ompl ompl/ompl: control framework for robot arm manipulation (robotics track). OpenMHS plan: not integrated (skip:peripheral) | Tier D | 3 | static scan | 2,167 |
| shisatoyano/autonomousvehiclecontrolbeginnersguide shisatoyano/autonomousvehiclecontrolbeginnersguide: complete environment for mobile robots (robotics track). OpenMHS pla | Tier D | 3 | static scan | 1,660 |
| opntec/open-spectrometer-python opntec/open-spectrometer-python: device backend for optics (lab instrumentation track). OpenMHS plan: direct-driver with | Tier B | 1 | contract checked | 1,386 |
| kratosmultiphysics/kratos kratosmultiphysics/kratos: physics engines for materials (lab instrumentation track). OpenMHS plan: not integrated (skip | Tier D | 3 | static scan | 1,373 |
| loco-3d/crocoddyl loco-3d/crocoddyl: control framework for legged robots (robotics track). OpenMHS plan: not integrated (skip:peripheral). | Tier D | 3 | static scan | 1,317 |
| rl-tools/rl-tools rl-tools/rl-tools: policy/algorithm for general (robotics track). OpenMHS plan: not integrated (skip:peripheral). Langua | Tier D | 3 | static scan | 1,034 |
| ur-whitelab/chemcrow-public ur-whitelab/chemcrow-public: agent framework for chemistry (lab instrumentation track). OpenMHS plan: reference only (ho | Tier D | 3 | static scan | 957 |
| capgym/cap-x capgym/cap-x: complete environment for robot arm manipulation (robotics track). OpenMHS plan: reference only (host). Lan | Tier D | 3 | static scan | 845 |
| pymeasure/pymeasure pymeasure/pymeasure: repository for microscopy imaging; optics; electronic measurement and DAQ (lab instrumentation trac | Tier B | 1 | contract checked | 785 |
| zou-group/virtual-lab zou-group/virtual-lab: agent framework for biology (lab instrumentation track). OpenMHS plan: reference only (host). Lan | Tier D | 3 | static scan | 742 |
| facebookresearch/project_superdex facebookresearch/project_superdex: physics engines for robot arm manipulation (robotics track). OpenMHS plan: SDK bridge | Tier C | 3 | static scan | 720 |
| nominal-io/instro nominal-io/instro: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: direct-driver wi | Tier B | 1 | contract checked | 718 |
| robocurve/inspect-robots robocurve/inspect-robots: orchestration/scheduling for general (robotics track). OpenMHS plan: reference only (host). La | Tier D | 3 | static scan | 654 |
| henryhuyu/diffphysdrone henryhuyu/diffphysdrone: policy/algorithm for UAVs (robotics track). OpenMHS plan: not integrated (skip:peripheral). Lan | Tier D | 3 | static scan | 634 |
| ni/nidaqmx-python ni/nidaqmx-python: device backend for electronic measurement (lab instrumentation track). OpenMHS plan: direct-driver wi | Tier B | 1 | contract checked | 590 |