Operate
Before any instrument can receive a command, the SDK needs a precise model of your physical setup. An aspirate() call needs to know exactly where well A1 is in 3D space. A gripper move needs the precise dimensions of the plate it will pick up. That model is what this section teaches you to build.
The dependency is strict and the order matters:
Labware definitions → Deck layout → Device connection → Instrument commands
what exists where it is who can act what happens
New here? Start with Your First Protocol. It walks the entire chain in one runnable simulator script, so every concept and guide below has a concrete example to anchor against.
The Automate section explains the workflow engine layer: how workflows, phases, steps, and human-in-the-loop work from a platform perspective. Operate is the physical layer those abstractions run on top of.
Concepts
Liquid Handling
The domain: aspirate and dispense as primitives, and how vendor differences are flattened behind one API.
Modules
Pipettes, grippers, and autoload as independent units of hardware capability, each with its own lifecycle.
Labware
Plates, tips, tubes, and carriers modelled as Python objects with positions, dimensions, and liquid state.
Liquids
Three ways to represent a liquid — predefined types, traceable samples, and user-defined custom liquids.
Liquid Classes
Parameters that tune one pipetting cycle to the fluid being moved — flow rates, timing, volume correction.
Tips
Lifecycle-managed pipette tips, tracked inventory, and the Hamilton-channel vs. Bravo-96-head difference.
Guides
UniteLabs SDK & REST API
Access connectors programmatically — discover services, explore their modules and actions, and subscribe to live data using the UniteLabs SDK or the REST API.
Your First Protocol
Walk the full labware → deck → device → command → error chain in one runnable simulator script, and leave understanding why the order matters.