Bridge family · pylabrobot

OpenMHS family: pylabrobot

PyLabRobot liquid handlers through PyLabRobotDriver (profile plr-liquid-handler-v1)

Recipe published24 packageshardwaresimulated
On this page 9 sections
  1. Launch
  2. Registry coverage
  3. Applicability
  4. Capability mapping
  5. Safety
  6. Fidelity
  7. Pitfalls
  8. First task cards
  9. Sources

PyLabRobot liquid handlers through PyLabRobotDriver (profile plr-liquid-handler-v1)

Generated by MHS/registry/build_registry.py on 2026-10-20T00:00:00Z from 24 registry records and their task cards. A plan, not a conformance claim.

  • bridge_status: available
  • helper: PyLabRobotDriver
  • exemplar: MHS/drivers/labs/oelemento__star-sim

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:

text
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: 24
  • Decisions: bridge-runtime 1, family-config 2, reference 11, skip 10
  • Waves: 2: 1, 5: 1, 9: 22
  • Dispatchable now: 0
  • Modes: hardware 2, simulated 3

Applicability

An upstream whose control interface is a PyLabRobot LiquidHandler front end, used directly or held by an upstream object (a digital twin's env.lh). The package sets one plr_profile = PlrProfile(...) and no methods; every capability is generated. Exemplar: oelemento/star-sim (simulated STARlet twin). Other PyLabRobot machines (plate readers, incubators, spectrophotometers, scanners) use a direct Driver or PythonObjectDriver; a class that only borrows PyLabRobot method names, a firmware protocol or a remote service without a PyLabRobot front end uses a direct Driver (DEVIATION FROM THE CARD). A card whose entry symbols do not include the class the package drives needs a maintainer override first (G7.NOT_AN_ENTRY_SYMBOL). Single-step aspirate/dispense and the cap.fluid.transfer.v1 / cap.fluid.mix.v1 / cap.fluid.level.v1 classes are not bound by this profile (see the helper guide).

Capability mapping

native callOpenMHS targetnotes
the upstream object or LiquidHandler(backend=..., deck=...)lifecycle: the backend factory (fake.py; native.py for hardware)plr_profile.handler is the attribute path to the LiquidHandler, cited at handler_ref
setup()lifecycle: plr_profile.setup, run when the driver openson hardware it initializes the instrument (it moves)
stop() / teardown()lifecycle: plr_profile.closePyLabRobot Machine.stop is teardown, never the e-stop
pick_up_tips, aspirate, dispense, discard_tipsx-cap.<owner>.transfer.v1 (kind transfer, R2)fresh tips from tip tracking; one well per channel, one column per call; no cleanup motion after a failure
the same with repeated aspirate/dispensex-cap.<owner>.mix.v1 (kind mix, R2)cycles_limit is sourced or Limit.operator_required; a per-operation volume_limit cites its own line
a step error other than a bookkeeping errorunknown MHS.OUTCOME.UNKNOWN with the completed stepsit may have reached the device; new effects are fenced until a confirmed stop and an operator reset
well.tracker.get_used_volume()x-cap.<owner>.tracked_volumes.v1 (kind tracked_volumes, read, R0)PyLabRobot bookkeeping, never a liquid-level measurement
deck resources by namePlrLabware(name, kind, ref), kind plate or tip_rackonly names a pinned line states; the input enums are this allowlist
a native stop the source showsplr_profile.stop = PlrStop(native, ref, description)never a teardown; R2 hardware also needs estop_physical_ref; without a stop the package is blocked

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. Pipetting and gantry motion are R2 (MHS-004 hazard table); the composite operations carry R2 in every mode. A hardware backend without plr_profile.stop is refused before its factory runs and gate G3 refuses the package: stop with blocked rather than invent a stop or use stop()/teardown. A PlrStop description says what it does not stop (a firmware halt may let the running sequence complete) and must be safe to repeat: the server retries it in the background until it confirms. The bridge sends no PyLabRobot step after an e-stop, cancellation or session close; a step in progress continues. After a failure or an e-stop the tips stay mounted and v1 has no operation that clears them: an operator clears the head (a simulated twin restarts). The loader refuses an unreviewed model-written R2/R3 hardware backend.

Fidelity

A package fake composes mhs.testing.pylabrobot (tip and volume bookkeeping only: no motion, timing, liquid classes or physics); its capacities and starting liquid are placeholders. Evidence stays contract_checked; a fake gate never establishes an MHS-Device level or PyLabRobot behaviour.

Pitfalls

PyLabRobot tip tracking is off unless the upstream switches it on: fresh-tip selection needs the cited set_tip_tracking(True) line. Vendored PyLabRobot copies differ by version. Deck layouts often live in scripts or operator code; only labware a pinned line names can be declared. Upstream protocols often discard tips in a finally block; the helper deliberately does not. The gate reads every profile reference as code (ast, one line, operation spans of at most 40 lines). The gate's conformance suite repeats one payload, so give every operation an alternate fixture. A deck of more than about ten plate names exceeds the 2048-byte tool budget (G8.TOOL_SIZE).

First task cards

  • gh.oelemento/star-sim: family-config, wave 2, rank 149, MHS/registry/tasks/labs/oelemento__star-sim.json
  • gh.aicell-lab/hamilton-control: family-config, wave 5, rank 47, MHS/registry/tasks/labs/aicell-lab__hamilton-control.json
  • gh.pylabrobot/pylabrobot: bridge-runtime, wave 9, rank 20, MHS/registry/tasks/labs/pylabrobot__pylabrobot.json
  • gh.bioprotocols/labop: reference, wave 9, rank 459, MHS/registry/tasks/labs/bioprotocols__labop.json
  • gh.maraxen/praxis: reference, wave 9, rank 684, MHS/registry/tasks/labs/maraxen__praxis.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/.
  • PyLabRobot helper guide.
  • star-sim exemplar driver, fake, tests and result/evidence scope.

Packages

Top 24 of 24 by stars. Filter the full list.

PackageTierRingEvidenceStars
pylabrobot/pylabrobot
pylabrobot/pylabrobot: pipetting and multi device SDK for wet-lab automation and chemistry (lab instrumentation track).
Tier A3agent read563
bioprotocols/labop
bioprotocols/labop: protocol implementation/bridge; orchestration/scheduling (lab instrumentation track). OpenMHS plan:
Tier D3static scan51
pioneer-research-labs/ngs_library_prep
pioneer-research-labs/ngs_library_prep: orchestration/scheduling for liquid handling (lab instrumentation track). OpenMH
Tier D3static scan12
maraxen/praxis
maraxen/praxis: orchestration/scheduling for liquid handling (lab instrumentation track). OpenMHS plan: reference only (
Tier D3static scan4
pylabrobot/slas_2026_demos
pylabrobot/slas_2026_demos: orchestration/scheduling for liquid handling (lab instrumentation track). OpenMHS plan: not
Tier D3static scan2
stefangolas/pylabrobot_llm_example
stefangolas/pylabrobot_llm_example: agent framework for liquid handling (lab instrumentation track). OpenMHS plan: not i
Tier D3static scan2
di-omics/plr-lab-robot
di-omics/plr-lab-robot: complete environment for robot arm manipulation (lab instrumentation track). OpenMHS plan: not i
Tier D3static scan1
vcjdeboer/nanodrop-pylabrobot-demo
vcjdeboer/nanodrop-pylabrobot-demo: device backend for optics (lab instrumentation track). OpenMHS plan: not integrated
Tier D3static scan1
aicell-lab/hamilton-control
aicell-lab/hamilton-control: device backend for liquid handling (lab instrumentation track). OpenMHS plan: family-config
Tier B3static scan0
anupama29k/protocol-simulation
anupama29k/protocol-simulation: complete environment for biology (lab instrumentation track). OpenMHS plan: not integrat
Tier D3static scan0
anupama29k/robotic-assays
anupama29k/robotic-assays: orchestration/scheduling for biology (lab instrumentation track). OpenMHS plan: reference onl
Tier D3static scan0
brooklynvar/llm_protocol_validation
brooklynvar/llm_protocol_validation: agent framework for liquid handling (lab instrumentation track). OpenMHS plan: refe
Tier D3static scan0
cheshire-labs/cheshire-drivers
cheshire-labs/cheshire-drivers: multi device simulation SDK for wet-lab automation and chemistry (lab instrumentation tr
Tier D3static scan0
chory-lab/plr-cookbook
chory-lab/plr-cookbook: auxiliary tooling for liquid handling (lab instrumentation track). OpenMHS plan: not integrated
Tier D3static scan0
di-omics/autonomous-lab
di-omics/autonomous-lab: orchestration/scheduling for general (lab instrumentation track). OpenMHS plan: reference only
Tier D3static scan0
di-omics/bay-hack
di-omics/bay-hack: complete environment for liquid handling (lab instrumentation track). OpenMHS plan: reference only (p
Tier D3static scan0
di-omics/plr-mcp
di-omics/plr-mcp: protocol implementation/bridge for liquid handling (lab instrumentation track). OpenMHS plan: referenc
Tier D3static scan0
elijahchang929/opentrons-to-pylabrobot
elijahchang929/opentrons-to-pylabrobot: auxiliary tooling for liquid handling (lab instrumentation track). OpenMHS plan:
Tier D3static scan0
hansonlee2017/hamilton_star_visualizer
hansonlee2017/hamilton_star_visualizer: auxiliary tooling for liquid handling (lab instrumentation track). OpenMHS plan:
Tier D3static scan0
ivoryos-ai/ivoryos-pylabrobot-integration
ivoryos-ai/ivoryos-pylabrobot-integration: orchestration/scheduling for liquid handling (lab instrumentation track). Ope
Tier D3static scan0
m9h/biopunk-jubilee
m9h/biopunk-jubilee: auxiliary tooling for biology (lab instrumentation track). OpenMHS plan: not integrated (skip:not-d
Tier D3static scan0
oelemento/star-sim
oelemento/star-sim: device backend for liquid handling (lab instrumentation track). OpenMHS plan: family-config with PyL
Tier A1contract checked0
vcjdeboer/v1b1-skills
vcjdeboer/v1b1-skills: auxiliary tooling for general (lab instrumentation track). OpenMHS plan: not integrated (skip:too
Tier D3static scan0
zym666zym666/pylabrobotandllm
zym666zym666/pylabrobotandllm: orchestration/scheduling for liquid handling (lab instrumentation track). OpenMHS plan: r
Tier D3static scan0