Labs
A Lab is where laboratory work happens in an evaluation: a simulator, a mock instrument, and later real instruments. It gives the agent scoped tools and gives the evaluator a separate Readout of what happened. Labs are selected by name and swapped without changing the task, the way Inspect AI sandboxes are.
Current Labs are building blocks: a meaningful study also needs domain-reviewed tasks, legitimate controls and valid outcome measures.
| Lab | Native task | Mode |
|---|---|---|
| Liquid handling | inspect_labs/serial_dilution, inspect_labs/worklist_transfer |
Simulation |
| Measurement and report services | inspect_labs/measurement, inspect_labs/handoff |
Synthetic |
| Plate-reader QC | inspect_labs_plate_reader/absorbance_qc |
Synthetic |
| SiLA 2 instrument | inspect_labs_sila/absorbance_read |
Mock instrument |
| Screening review | inspect_labs_commec/screening_review |
Gate pending |
| Robot steps | inspect_labs/robot_step |
Software controls |
Each scripted control below runs from an installed checkout without model credentials.
Liquid handling
An agent plans and runs pipetting work on a PyLabRobot deck. The lab scorer reads the deck, not the agent’s account of it.
- Observations
- Deck state, volumes, concentrations, tip use and restricted-well events
- Backends
- Built-in simulator; an OT-2 simulator and OT-2 declarations in the Opentrons plugin
- Limits
- The default backend is simulated and assumes ideal mixing. No physical instrument has been validated.
inspect eval inspect_labs/serial_dilution \
--model mockllm/model -T scripted=trueMeasurement and report services
Queued services that separate a request being accepted from work being done, and a report from the result.
- Observations
- Job identity, state and recorded result; delivery destination and content identity
- Limits
- Synthetic fixtures that exercise software mechanics. A robot-gated handoff does not demonstrate physical sample transfer.
inspect eval inspect_labs/measurement \
--model mockllm/model -T scripted=truePlate-reader QC
An absorbance quality-control task through PyLabRobot’s device-free plate-reader interface. Requires the plugins/inspect-labs-plate-reader plugin.
- Limits
- Seeded synthetic values. Not a validated assay or a physical reader.
inspect eval inspect_labs_plate_reader/absorbance_qc \
--model mockllm/model -T scripted=trueSiLA 2 instrument
A mock absorbance reader that speaks SiLA 2, the open standard many lab instruments use to expose commands. The agent’s tool calls the instrument’s ReadWell command over SiLA 2. The evaluator reads the instrument’s own run log through a separate channel. Requires the plugins/inspect-labs-sila plugin.
- Readout
- The instrument’s run log: every executed command, with the well and value
- Limits
- Seeded synthetic values on a local mock server. No real instrument has been connected, and the mock does not simulate optics or an assay.
inspect eval inspect_labs_sila/absorbance_read \
--model mockllm/model -T scripted=trueScreening review
A bounded review of a sequence-screening result using IBBIS’s open-source Common Mechanism (commec) and a simulated disposition service. Requires the plugins/inspect-labs-commec plugin.
- Limits
- Fixture mechanics are verified. The full-reference scanner runtime is a pending gate, and no real order is fulfilled. Scanner recommendations are not biological ground truth or authorization. No IBBIS affiliation is implied.
inspect eval inspect_labs_commec/screening_review \
--model mockllm/model -T fixture=true -T scripted=trueRobot steps
A laboratory step executed by any registered Inspect Robots task, policy and embodiment, under its native guardrails. Requires the robots extra.
- Observations
- Native Inspect Robots trial records and metrics, linked by hash
- Limits
- Deterministic software controls only. No physical validation and no robot foundation model study.
inspect eval inspect_labs/robot_step \
--model mockllm/model -T scripted=trueDiscover installed components
Environments and instrument backends are plugins discovered by name:
inspect-labs list
inspect-labs doctor --lab liquid-handlerdoctor checks declarations and requirements without constructing providers or touching hardware. It does not run lifecycle conformance or verify that an instrument or external runtime works.
Install optional plugins
Install plugins from the checkout into the same Python environment:
uv pip install --python .venv/bin/python \
./plugins/inspect-labs-opentrons \
./plugins/inspect-labs-plate-reader \
./plugins/inspect-labs-commec \
./plugins/inspect-labs-sila| Plugin | Provides | Current limits |
|---|---|---|
| Opentrons | OT-2 backend declarations and a simulator | Simulator mechanics do not establish hardware compatibility |
| Plate reader | Native absorbance QC task through PyLabRobot’s device-free reader API | Seeded synthetic values, no validated assay or physical reader |
| SiLA 2 | A Lab backed by a mock SiLA 2 instrument; Readout from the instrument’s run log | Local mock with seeded values; no real instrument connected |
| Common Mechanism | Bounded screening review with IBBIS Commec and a simulated disposition service | Fixture mechanics verified; full-reference runtime gate pending; no real order fulfillment |
Each plugin directory includes its own README, controls and tests.
Robot integration
uv pip install --python .venv/bin/python '.[robots]'The extra installs a pinned Inspect Robots commit. Robot tasks use its registered policies and embodiments. Robots come from Inspect Robots rather than being reimplemented. Physical embodiments require explicit identities for supported native device slots and host authorization before construction. Default guardrails remain native.
A host must pass allow_physical=True. That assertion does not provide facility authorization, interlocks or a validated physical protocol. Device claims coordinate participating evaluations on one host.
Publish a plugin
Packages register Labs and backends using the Python entry-point groups inspect_labs.labs and inspect_labs.backends. The earlier inspect_labs.environments group is still read. Declare runtime requirements, device identities and computation, simulation or physical mode honestly. Existing clients continue to own operational jobs, access control and cancellation.
The detailed source guides are docs/adapters.md and docs/authoring.md in the checkout. The authoring guide introduces the public binding protocol.