[{"data":1,"prerenderedAt":960},["ShallowReactive",2],{"navigation":3,"\u002Fget-started\u002Fsetup\u002Fget-access":779,"\u002Fget-started\u002Fsetup\u002Fget-access-surround":955},[4,84,159,389,453,555,592,671],{"title":5,"path":6,"stem":7,"children":8,"page":42},"Get Started","\u002Fget-started\u002F","01.get-started",[9,13,17,43,47],{"title":10,"path":11,"stem":12},"Welcome to UniteLabs","\u002Fget-started\u002Fwelcome\u002F","01.get-started\u002F00.welcome",{"title":14,"path":15,"stem":16},"How it works","\u002Fget-started\u002Fhow-it-works\u002F","01.get-started\u002F01.how-it-works",{"title":18,"path":19,"stem":20,"children":21,"page":42},"Use Cases","\u002Fget-started\u002Fuse-cases\u002F","01.get-started\u002F02.use-cases",[22,26,30,34,38],{"title":23,"path":24,"stem":25},"Instrument Control","\u002Fget-started\u002Fuse-cases\u002Flow-level-instrument-control\u002F","01.get-started\u002F02.use-cases\u002F10.low-level-instrument-control",{"title":27,"path":28,"stem":29},"Multi-device Control","\u002Fget-started\u002Fuse-cases\u002Fmulti-device-control\u002F","01.get-started\u002F02.use-cases\u002F20.multi-device-control",{"title":31,"path":32,"stem":33},"Workflow Orchestration","\u002Fget-started\u002Fuse-cases\u002Fworkflow-orchestration\u002F","01.get-started\u002F02.use-cases\u002F30.workflow-orchestration",{"title":35,"path":36,"stem":37},"Custom Apps and LIMS Integration","\u002Fget-started\u002Fuse-cases\u002Fcustom-apps-lims\u002F","01.get-started\u002F02.use-cases\u002F40.custom-apps-lims",{"title":39,"path":40,"stem":41},"Scale and Fleet Management","\u002Fget-started\u002Fuse-cases\u002Fscale-and-fleet\u002F","01.get-started\u002F02.use-cases\u002F50.scale-and-fleet",false,{"title":44,"path":45,"stem":46},"Lab as Code","\u002Fget-started\u002Fwhy-code\u002F","01.get-started\u002F03.why-code",{"title":48,"path":49,"stem":50,"children":51,"page":42},"Setup","\u002Fget-started\u002Fsetup\u002F","01.get-started\u002F20.setup",[52,56,60,64,68,72,76,80],{"title":53,"path":54,"stem":55},"Get access","\u002Fget-started\u002Fsetup\u002Fget-access\u002F","01.get-started\u002F20.setup\u002F00.get-access",{"title":57,"path":58,"stem":59},"GroundControl","\u002Fget-started\u002Fsetup\u002Fgroundcontrol\u002F","01.get-started\u002F20.setup\u002F10.groundcontrol",{"title":61,"path":62,"stem":63},"Network requirements","\u002Fget-started\u002Fsetup\u002Fnetwork-requirements\u002F","01.get-started\u002F20.setup\u002F20.network-requirements",{"title":65,"path":66,"stem":67},"Multi-device Networking","\u002Fget-started\u002Fsetup\u002Fmultiple-devices\u002F","01.get-started\u002F20.setup\u002F30.multiple-devices",{"title":69,"path":70,"stem":71},"Connect to Platform","\u002Fget-started\u002Fsetup\u002Fconnect-to-platform\u002F","01.get-started\u002F20.setup\u002F40.connect-to-platform",{"title":73,"path":74,"stem":75},"Headless install","\u002Fget-started\u002Fsetup\u002Fheadless-install\u002F","01.get-started\u002F20.setup\u002F50.headless-install",{"title":77,"path":78,"stem":79},"Raspberry Pi","\u002Fget-started\u002Fsetup\u002Fraspberry-pi\u002F","01.get-started\u002F20.setup\u002F55.raspberry-pi",{"title":81,"path":82,"stem":83},"Installation","\u002Fget-started\u002Fsetup\u002Fsdk-installation\u002F","01.get-started\u002F20.setup\u002F60.sdk-installation",{"title":85,"path":86,"stem":87,"children":88,"page":42},"Integrate","\u002Fintegrate\u002F","02.integrate",[89,93,97,122,143],{"title":90,"path":91,"stem":92},"What is a connector?","\u002Fintegrate\u002Fwhat-is-a-connector\u002F","02.integrate\u002F00.what-is-a-connector",{"title":94,"path":95,"stem":96},"Calling a Connector","\u002Fintegrate\u002Fcontrol-with-code\u002F","02.integrate\u002F05.control-with-code",{"title":98,"path":99,"stem":100,"children":101,"page":42},"Concepts","\u002Fintegrate\u002Fconcepts\u002F","02.integrate\u002F10.concepts",[102,106,110,114,118],{"title":103,"path":104,"stem":105},"Connector","\u002Fintegrate\u002Fconcepts\u002Fconnector\u002F","02.integrate\u002F10.concepts\u002F10.connector",{"title":107,"path":108,"stem":109},"Module","\u002Fintegrate\u002Fconcepts\u002Fmodule\u002F","02.integrate\u002F10.concepts\u002F20.module",{"title":111,"path":112,"stem":113},"Action","\u002Fintegrate\u002Fconcepts\u002Faction\u002F","02.integrate\u002F10.concepts\u002F30.action",{"title":115,"path":116,"stem":117},"Subscription","\u002Fintegrate\u002Fconcepts\u002Fsubscription\u002F","02.integrate\u002F10.concepts\u002F40.subscription",{"title":119,"path":120,"stem":121},"Device","\u002Fintegrate\u002Fconcepts\u002Fdevice\u002F","02.integrate\u002F10.concepts\u002F50.device",{"title":123,"path":124,"stem":125,"children":126,"page":42},"Connect a device","\u002Fintegrate\u002Fconnect-a-device\u002F","02.integrate\u002F20.connect-a-device",[127,131,135,139],{"title":128,"path":129,"stem":130},"Via GroundControl","\u002Fintegrate\u002Fconnect-a-device\u002Fvia-groundcontrol\u002F","02.integrate\u002F20.connect-a-device\u002F10.via-groundcontrol",{"title":132,"path":133,"stem":134},"With an executable","\u002Fintegrate\u002Fconnect-a-device\u002Fwith-an-executable\u002F","02.integrate\u002F20.connect-a-device\u002F20.with-an-executable",{"title":136,"path":137,"stem":138},"From source","\u002Fintegrate\u002Fconnect-a-device\u002Ffrom-source\u002F","02.integrate\u002F20.connect-a-device\u002F30.from-source",{"title":140,"path":141,"stem":142},"Build your own","\u002Fintegrate\u002Fconnect-a-device\u002Fbuild-yourself\u002F","02.integrate\u002F20.connect-a-device\u002F40.build-yourself",{"title":144,"path":145,"stem":146,"children":147,"page":42},"Use a connector","\u002Fintegrate\u002Fuse-a-connector\u002F","02.integrate\u002F30.use-a-connector",[148,151,155],{"title":57,"path":149,"stem":150},"\u002Fintegrate\u002Fuse-a-connector\u002Fgroundcontrol\u002F","02.integrate\u002F30.use-a-connector\u002F10.groundcontrol",{"title":152,"path":153,"stem":154},"Platform","\u002Fintegrate\u002Fuse-a-connector\u002Fplatform\u002F","02.integrate\u002F30.use-a-connector\u002F20.platform",{"title":156,"path":157,"stem":158},"UniteLabs SDK & REST API","\u002Fintegrate\u002Fuse-a-connector\u002Fpython\u002F","02.integrate\u002F30.use-a-connector\u002F30.python",{"title":160,"path":161,"stem":162,"children":163,"page":42},"Operate","\u002Foperate\u002F","03.operate",[164,167,171,211,284],{"title":160,"path":165,"stem":166},"\u002Foperate\u002Foverview\u002F","03.operate\u002F00.overview",{"title":168,"path":169,"stem":170},"Your First Protocol","\u002Foperate\u002Fyour-first-protocol\u002F","03.operate\u002F05.your-first-protocol",{"title":98,"path":172,"stem":173,"children":174,"page":42},"\u002Foperate\u002Fconcepts\u002F","03.operate\u002F10.concepts",[175,179,183,187,191,195,199,203,207],{"title":176,"path":177,"stem":178},"Liquid Handling","\u002Foperate\u002Fconcepts\u002Fliquid-handling\u002F","03.operate\u002F10.concepts\u002F10.liquid-handling",{"title":180,"path":181,"stem":182},"Modules","\u002Foperate\u002Fconcepts\u002Fmodules\u002F","03.operate\u002F10.concepts\u002F20.modules",{"title":184,"path":185,"stem":186},"Deck","\u002Foperate\u002Fconcepts\u002Fdeck\u002F","03.operate\u002F10.concepts\u002F30.deck",{"title":188,"path":189,"stem":190},"Labware","\u002Foperate\u002Fconcepts\u002Flabware\u002F","03.operate\u002F10.concepts\u002F40.labware",{"title":192,"path":193,"stem":194},"Liquids","\u002Foperate\u002Fconcepts\u002Fliquids\u002F","03.operate\u002F10.concepts\u002F50.liquids",{"title":196,"path":197,"stem":198},"Liquid Classes","\u002Foperate\u002Fconcepts\u002Fliquid-classes\u002F","03.operate\u002F10.concepts\u002F60.liquid-classes",{"title":200,"path":201,"stem":202},"Tips and Tip Tracking","\u002Foperate\u002Fconcepts\u002Ftips\u002F","03.operate\u002F10.concepts\u002F70.tips",{"title":204,"path":205,"stem":206},"Simulation","\u002Foperate\u002Fconcepts\u002Fsimulation\u002F","03.operate\u002F10.concepts\u002F80.simulation",{"title":208,"path":209,"stem":210},"Error Handling","\u002Foperate\u002Fconcepts\u002Ferror-handling\u002F","03.operate\u002F10.concepts\u002F90.error-handling",{"title":212,"path":213,"stem":214,"children":215,"page":42},"Guides","\u002Foperate\u002Fguides\u002F","03.operate\u002F20.guides",[216,245,257,281],{"title":188,"path":217,"stem":218,"children":219},"\u002Foperate\u002Fguides\u002Flabware\u002F","03.operate\u002F20.guides\u002F10.labware\u002Findex",[220,221,225,229,233,237,241],{"title":188,"path":217,"stem":218},{"title":222,"path":223,"stem":224},"Standard Labware","\u002Foperate\u002Fguides\u002Flabware\u002Fstandard-labware\u002F","03.operate\u002F20.guides\u002F10.labware\u002F05.standard-labware",{"title":226,"path":227,"stem":228},"Plates","\u002Foperate\u002Fguides\u002Flabware\u002Fplates\u002F","03.operate\u002F20.guides\u002F10.labware\u002F10.plates",{"title":230,"path":231,"stem":232},"Tips and Tip Racks","\u002Foperate\u002Fguides\u002Flabware\u002Ftips-and-racks\u002F","03.operate\u002F20.guides\u002F10.labware\u002F20.tips-and-racks",{"title":234,"path":235,"stem":236},"Tubes and Tube Racks","\u002Foperate\u002Fguides\u002Flabware\u002Ftubes-and-tube-racks\u002F","03.operate\u002F20.guides\u002F10.labware\u002F30.tubes-and-tube-racks",{"title":238,"path":239,"stem":240},"Troughs","\u002Foperate\u002Fguides\u002Flabware\u002Ftroughs\u002F","03.operate\u002F20.guides\u002F10.labware\u002F35.troughs",{"title":242,"path":243,"stem":244},"Carriers and Adapters","\u002Foperate\u002Fguides\u002Flabware\u002Fcarriers-and-adapters\u002F","03.operate\u002F20.guides\u002F10.labware\u002F40.carriers-and-adapters",{"title":184,"path":246,"stem":247,"children":248,"page":42},"\u002Foperate\u002Fguides\u002Fdeck\u002F","03.operate\u002F20.guides\u002F20.deck",[249,253],{"title":250,"path":251,"stem":252},"Building a Deck","\u002Foperate\u002Fguides\u002Fdeck\u002Fbuilding-a-deck\u002F","03.operate\u002F20.guides\u002F20.deck\u002F10.building-a-deck",{"title":254,"path":255,"stem":256},"Save\u002FLoad a Deck","\u002Foperate\u002Fguides\u002Fdeck\u002Fsave-load-deck\u002F","03.operate\u002F20.guides\u002F20.deck\u002F20.save-load-deck",{"title":258,"path":259,"stem":260,"children":261,"page":42},"Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002F","03.operate\u002F20.guides\u002F30.pipetting",[262,266,270,274,277],{"title":263,"path":264,"stem":265},"Basic Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002Fbasic-pipetting\u002F","03.operate\u002F20.guides\u002F30.pipetting\u002F10.basic-pipetting",{"title":267,"path":268,"stem":269},"Advanced Pipetting","\u002Foperate\u002Fguides\u002Fpipetting\u002Fadvanced-pipetting\u002F","03.operate\u002F20.guides\u002F30.pipetting\u002F20.advanced-pipetting",{"title":271,"path":272,"stem":273},"Tip Handling","\u002Foperate\u002Fguides\u002Fpipetting\u002Ftip-handling\u002F","03.operate\u002F20.guides\u002F30.pipetting\u002F30.tip-handling",{"title":196,"path":275,"stem":276},"\u002Foperate\u002Fguides\u002Fpipetting\u002Fliquid-classes\u002F","03.operate\u002F20.guides\u002F30.pipetting\u002F40.liquid-classes",{"title":278,"path":279,"stem":280},"Labware Transport","\u002Foperate\u002Fguides\u002Fpipetting\u002Flabware-transport\u002F","03.operate\u002F20.guides\u002F30.pipetting\u002F50.labware-transport",{"title":204,"path":282,"stem":283},"\u002Foperate\u002Fguides\u002Fsimulation\u002F","03.operate\u002F20.guides\u002F40.simulation",{"title":285,"path":286,"stem":287,"children":288,"page":42},"Liquid Handler Guides","\u002Foperate\u002Fdevices\u002F","03.operate\u002F30.devices",[289,330,355,372],{"title":290,"path":291,"stem":292,"children":293,"page":42},"Hamilton STAR","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002F","03.operate\u002F30.devices\u002F10.hamilton-star",[294,298,302,306,310,314,318,322,326],{"title":295,"path":296,"stem":297},"Positioning & Movement","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fpositioning\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F10.positioning",{"title":299,"path":300,"stem":301},"Gripper Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcore-gripper\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F20.core-gripper",{"title":303,"path":304,"stem":305},"iSWAP Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fiswap\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F30.iswap",{"title":307,"path":308,"stem":309},"Using TADM","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Ftadm\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F40.tadm",{"title":311,"path":312,"stem":313},"Autoload Module","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fautoload\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F50.autoload",{"title":315,"path":316,"stem":317},"Waste Block","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fwaste-block\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F60.waste-block",{"title":319,"path":320,"stem":321},"Complex Mixing","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcomplex-mixing\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F66.complex-mixing",{"title":323,"path":324,"stem":325},"Teaching Gripper Paddle Positions","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fgripper-positions\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F70.gripper-positions",{"title":327,"path":328,"stem":329},"Training a Custom Deck Position With the iSWAP","\u002Foperate\u002Fdevices\u002Fhamilton-star\u002Fcustom-deck-position\u002F","03.operate\u002F30.devices\u002F10.hamilton-star\u002F75.custom-deck-position",{"title":331,"path":332,"stem":333,"children":334,"page":42},"Hamilton Vantage","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002F","03.operate\u002F30.devices\u002F20.hamilton-vantage",[335,339,343,347,351],{"title":336,"path":337,"stem":338},"Waste Configuration","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fwaste-configuration\u002F","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F05.waste-configuration",{"title":340,"path":341,"stem":342},"Covers and Lights","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fcovers-and-lights\u002F","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F10.covers-and-lights",{"title":344,"path":345,"stem":346},"IDL Module","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fidl\u002F","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F20.idl",{"title":348,"path":349,"stem":350},"IPG Module","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fipg\u002F","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F30.ipg",{"title":352,"path":353,"stem":354},"XL Pipettes","\u002Foperate\u002Fdevices\u002Fhamilton-vantage\u002Fxl-channels\u002F","03.operate\u002F30.devices\u002F20.hamilton-vantage\u002F40.xl-channels",{"title":356,"path":357,"stem":358,"children":359,"page":42},"Agilent Bravo","\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002F","03.operate\u002F30.devices\u002F30.agilent-bravo",[360,363,366,369],{"title":271,"path":361,"stem":362},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Ftip-handling\u002F","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F10.tip-handling",{"title":263,"path":364,"stem":365},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fbasic-pipetting\u002F","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F20.basic-pipetting",{"title":196,"path":367,"stem":368},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fliquid-classes\u002F","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F25.liquid-classes",{"title":299,"path":370,"stem":371},"\u002Foperate\u002Fdevices\u002Fagilent-bravo\u002Fusing-the-gripper\u002F","03.operate\u002F30.devices\u002F30.agilent-bravo\u002F30.using-the-gripper",{"title":373,"path":374,"stem":375,"children":376,"page":42},"Tecan FluentControl","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002F","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol",[377,381,385],{"title":378,"path":379,"stem":380},"Connect & Run a Method","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Fconnect-and-run\u002F","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F10.connect-and-run",{"title":382,"path":383,"stem":384},"Sending XML Commands","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Fsending-xml-commands\u002F","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F20.sending-xml-commands",{"title":386,"path":387,"stem":388},"Full Workflow Example","\u002Foperate\u002Fdevices\u002Ftecan-fluentcontrol\u002Ffull-workflow-example\u002F","03.operate\u002F30.devices\u002F40.tecan-fluentcontrol\u002F30.full-workflow-example",{"title":390,"path":391,"stem":392,"children":393,"page":42},"Device Guides","\u002Fdevice-guides\u002F","06.device-guides",[394,397,410,427,440],{"title":390,"path":395,"stem":396},"\u002Fdevice-guides\u002Foverview\u002F","06.device-guides\u002F00.overview",{"title":398,"path":399,"stem":400,"children":401,"page":42},"Incubation","\u002Fdevice-guides\u002Fincubation\u002F","06.device-guides\u002F20.incubation",[402,406],{"title":403,"path":404,"stem":405},"Inheco ODTC","\u002Fdevice-guides\u002Fincubation\u002Finheco-odtc\u002F","06.device-guides\u002F20.incubation\u002F10.inheco-odtc",{"title":407,"path":408,"stem":409},"Inheco SCILA","\u002Fdevice-guides\u002Fincubation\u002Finheco-scila\u002F","06.device-guides\u002F20.incubation\u002F20.inheco-scila",{"title":411,"path":412,"stem":413,"children":414,"page":42},"Heater-Shakers","\u002Fdevice-guides\u002Fheater-shakers\u002F","06.device-guides\u002F30.heater-shakers",[415,419,423],{"title":416,"path":417,"stem":418},"Inheco Thermoshake","\u002Fdevice-guides\u002Fheater-shakers\u002Finheco-thermoshake\u002F","06.device-guides\u002F30.heater-shakers\u002F10.inheco-thermoshake",{"title":420,"path":421,"stem":422},"QInstruments Bioshake","\u002Fdevice-guides\u002Fheater-shakers\u002Fqinstruments-bioshake\u002F","06.device-guides\u002F30.heater-shakers\u002F20.qinstruments-bioshake",{"title":424,"path":425,"stem":426},"QInstruments ColdPlate","\u002Fdevice-guides\u002Fheater-shakers\u002Fqinstruments-coldplate\u002F","06.device-guides\u002F30.heater-shakers\u002F30.qinstruments-coldplate",{"title":428,"path":429,"stem":430,"children":431,"page":42},"Readers","\u002Fdevice-guides\u002Freaders\u002F","06.device-guides\u002F40.readers",[432,436],{"title":433,"path":434,"stem":435},"Biotek Gen5","\u002Fdevice-guides\u002Freaders\u002Fbiotek-gen5\u002F","06.device-guides\u002F40.readers\u002F10.biotek-gen5",{"title":437,"path":438,"stem":439},"Biotek Synergy H1","\u002Fdevice-guides\u002Freaders\u002Fbiotek-synergy-h1\u002F","06.device-guides\u002F40.readers\u002F20.biotek-synergy-H1",{"title":441,"path":442,"stem":443,"children":444,"page":42},"Tilt & Turn","\u002Fdevice-guides\u002Ftilt-and-turn\u002F","06.device-guides\u002F50.tilt-and-turn",[445,449],{"title":446,"path":447,"stem":448},"TurnStation","\u002Fdevice-guides\u002Ftilt-and-turn\u002Fqinstruments-turnstation\u002F","06.device-guides\u002F50.tilt-and-turn\u002F10.qinstruments-turnstation",{"title":450,"path":451,"stem":452},"TiltStation","\u002Fdevice-guides\u002Ftilt-and-turn\u002Fqinstruments-tiltstation\u002F","06.device-guides\u002F50.tilt-and-turn\u002F20.qinstruments-tiltstation",{"title":454,"path":455,"stem":456,"children":457,"page":42},"Automate","\u002Fautomate\u002F","07.automate",[458,462,466,470,519],{"title":459,"path":460,"stem":461},"What is a workflow?","\u002Fautomate\u002Fwhat-is-a-workflow\u002F","07.automate\u002F00.what-is-a-workflow",{"title":463,"path":464,"stem":465},"Workflow template","\u002Fautomate\u002Fworkflow-template\u002F","07.automate\u002F05.workflow-template",{"title":467,"path":468,"stem":469},"Your First Workflow","\u002Fautomate\u002Fyour-first-workflow\u002F","07.automate\u002F08.your-first-workflow",{"title":98,"pages":471,"path":481,"stem":482,"children":483,"page":42},[472,473,474,475,476,477,478,479,480],"workflow","phase","step","runs","input","artifacts","logs","human-in-the-loop","error-handling","\u002Fautomate\u002Fconcepts\u002F","07.automate\u002F10.concepts",[484,488,492,496,500,504,508,512,516],{"title":485,"path":486,"stem":487},"Workflow","\u002Fautomate\u002Fconcepts\u002Fworkflow\u002F","07.automate\u002F10.concepts\u002F10.workflow",{"title":489,"path":490,"stem":491},"Phase","\u002Fautomate\u002Fconcepts\u002Fphase\u002F","07.automate\u002F10.concepts\u002F20.phase",{"title":493,"path":494,"stem":495},"Step","\u002Fautomate\u002Fconcepts\u002Fstep\u002F","07.automate\u002F10.concepts\u002F30.step",{"title":497,"path":498,"stem":499},"Runs","\u002Fautomate\u002Fconcepts\u002Fruns\u002F","07.automate\u002F10.concepts\u002F40.runs",{"title":501,"path":502,"stem":503},"Input","\u002Fautomate\u002Fconcepts\u002Finput\u002F","07.automate\u002F10.concepts\u002F50.input",{"title":505,"path":506,"stem":507},"Artifacts","\u002Fautomate\u002Fconcepts\u002Fartifacts\u002F","07.automate\u002F10.concepts\u002F60.artifacts",{"title":509,"path":510,"stem":511},"Logs","\u002Fautomate\u002Fconcepts\u002Flogs\u002F","07.automate\u002F10.concepts\u002F70.logs",{"title":513,"path":514,"stem":515},"Human in the Loop","\u002Fautomate\u002Fconcepts\u002Fhuman-in-the-loop\u002F","07.automate\u002F10.concepts\u002F80.human-in-the-loop",{"title":208,"path":517,"stem":518},"\u002Fautomate\u002Fconcepts\u002Ferror-handling\u002F","07.automate\u002F10.concepts\u002F90.error-handling",{"title":212,"path":520,"stem":521,"children":522,"page":42},"\u002Fautomate\u002Fguides\u002F","07.automate\u002F25.guides",[523,527,531,535,539,543,547,551],{"title":524,"path":525,"stem":526},"Deploy a workflow","\u002Fautomate\u002Fguides\u002Fdeploy-a-workflow\u002F","07.automate\u002F25.guides\u002F30.deploy-a-workflow",{"title":528,"path":529,"stem":530},"Run a workflow","\u002Fautomate\u002Fguides\u002Frun-a-workflow\u002F","07.automate\u002F25.guides\u002F35.run-a-workflow",{"title":532,"path":533,"stem":534},"CI\u002FCD for workflows","\u002Fautomate\u002Fguides\u002Fcicd-for-workflows\u002F","07.automate\u002F25.guides\u002F40.cicd-for-workflows",{"title":536,"path":537,"stem":538},"HITL basics","\u002Fautomate\u002Fguides\u002Fbasic-hitl\u002F","07.automate\u002F25.guides\u002F50.basic-hitl",{"title":540,"path":541,"stem":542},"Typed operator inputs","\u002Fautomate\u002Fguides\u002Ftyped-operator-inputs\u002F","07.automate\u002F25.guides\u002F55.typed-operator-inputs",{"title":544,"path":545,"stem":546},"Error recovery","\u002Fautomate\u002Fguides\u002Fbasic-error-handling\u002F","07.automate\u002F25.guides\u002F60.basic-error-handling",{"title":548,"path":549,"stem":550},"Advanced error handling","\u002Fautomate\u002Fguides\u002Fadvanced-error-handling\u002F","07.automate\u002F25.guides\u002F70.advanced-error-handling",{"title":552,"path":553,"stem":554},"Workflows REST API","\u002Fautomate\u002Fguides\u002Fworkflows-api\u002F","07.automate\u002F25.guides\u002F80.workflows-api",{"title":556,"path":557,"stem":558,"children":559,"page":42},"Observe","\u002Fobserve\u002F","08.observe",[560,564,580],{"title":561,"path":562,"stem":563},"Overview","\u002Fobserve\u002Foverview\u002F","08.observe\u002F10.overview",{"title":98,"path":565,"stem":566,"children":567,"page":42},"\u002Fobserve\u002Fconcepts\u002F","08.observe\u002F20.concepts",[568,572,576],{"title":569,"path":570,"stem":571},"Object Storage","\u002Fobserve\u002Fconcepts\u002Fstorage\u002F","08.observe\u002F20.concepts\u002F10.storage",{"title":573,"path":574,"stem":575},"Secrets","\u002Fobserve\u002Fconcepts\u002Fsecrets\u002F","08.observe\u002F20.concepts\u002F20.secrets",{"title":577,"path":578,"stem":579},"Data sources","\u002Fobserve\u002Fconcepts\u002Fdata-sources\u002F","08.observe\u002F20.concepts\u002F30.data-sources",{"title":212,"path":581,"stem":582,"children":583,"page":42},"\u002Fobserve\u002Fguides\u002F","08.observe\u002F30.guides",[584,588],{"title":585,"path":586,"stem":587},"File System Connector","\u002Fobserve\u002Fguides\u002Ffilesystem-connector\u002F","08.observe\u002F30.guides\u002F10.filesystem-connector",{"title":589,"path":590,"stem":591},"Building an ETL","\u002Fobserve\u002Fguides\u002Fbuilding-an-etl\u002F","08.observe\u002F30.guides\u002F20.building-an-etl",{"title":593,"path":594,"stem":595,"children":596,"page":42},"Technical Reference","\u002Ftechnical-reference\u002F","10.technical-reference",[597,601,605,617,628,639,649,660],{"title":598,"path":599,"stem":600},"Introduction","\u002Ftechnical-reference\u002Fplatform-blueprint\u002F","10.technical-reference\u002F00.platform-blueprint",{"title":602,"path":603,"stem":604},"REST API","\u002Ftechnical-reference\u002Frest-api\u002F","10.technical-reference\u002F01.rest-api",{"title":57,"path":606,"stem":607,"children":608,"page":42},"\u002Ftechnical-reference\u002Fgroundcontrol\u002F","10.technical-reference\u002F10.groundcontrol",[609,613],{"title":610,"path":611,"stem":612},"Install & Setup","\u002Ftechnical-reference\u002Fgroundcontrol\u002Finstall\u002F","10.technical-reference\u002F10.groundcontrol\u002F10.install",{"title":614,"path":615,"stem":616},"Changelog","\u002Ftechnical-reference\u002Fgroundcontrol\u002Fchangelog\u002F","10.technical-reference\u002F10.groundcontrol\u002F20.changelog",{"title":618,"path":619,"stem":620,"children":621,"page":42},"UniteLabs SDK","\u002Ftechnical-reference\u002Fpython-sdk\u002F","10.technical-reference\u002F20.python-sdk",[622,625],{"title":610,"path":623,"stem":624},"\u002Ftechnical-reference\u002Fpython-sdk\u002Finstall\u002F","10.technical-reference\u002F20.python-sdk\u002F10.install",{"title":614,"path":626,"stem":627},"\u002Ftechnical-reference\u002Fpython-sdk\u002Fchangelog\u002F","10.technical-reference\u002F20.python-sdk\u002F20.changelog",{"title":629,"path":630,"stem":631,"children":632,"page":42},"Liquid Handling SDK","\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002F","10.technical-reference\u002F30.python-liquid-handling-sdk",[633,636],{"title":610,"path":634,"stem":635},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Finstall\u002F","10.technical-reference\u002F30.python-liquid-handling-sdk\u002F10.install",{"title":614,"path":637,"stem":638},"\u002Ftechnical-reference\u002Fpython-liquid-handling-sdk\u002Fchangelog\u002F","10.technical-reference\u002F30.python-liquid-handling-sdk\u002F20.changelog",{"title":188,"path":640,"stem":641,"children":642,"page":42},"\u002Ftechnical-reference\u002Flabware\u002F","10.technical-reference\u002F40.labware",[643,646],{"title":610,"path":644,"stem":645},"\u002Ftechnical-reference\u002Flabware\u002Finstall\u002F","10.technical-reference\u002F40.labware\u002F10.install",{"title":614,"path":647,"stem":648},"\u002Ftechnical-reference\u002Flabware\u002Fchangelog\u002F","10.technical-reference\u002F40.labware\u002F20.changelog",{"title":650,"path":651,"stem":652,"children":653,"page":42},"Python Omnibus","\u002Ftechnical-reference\u002Fpython-omnibus\u002F","10.technical-reference\u002F50.python-omnibus",[654,657],{"title":610,"path":655,"stem":656},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Finstall\u002F","10.technical-reference\u002F50.python-omnibus\u002F10.install",{"title":614,"path":658,"stem":659},"\u002Ftechnical-reference\u002Fpython-omnibus\u002Fchangelog\u002F","10.technical-reference\u002F50.python-omnibus\u002F20.changelog",{"title":661,"path":662,"stem":663,"children":664,"page":42},"Python CDK","\u002Ftechnical-reference\u002Fpython-cdk\u002F","10.technical-reference\u002F60.python-cdk",[665,668],{"title":610,"path":666,"stem":667},"\u002Ftechnical-reference\u002Fpython-cdk\u002Finstall\u002F","10.technical-reference\u002F60.python-cdk\u002F10.install",{"title":614,"path":669,"stem":670},"\u002Ftechnical-reference\u002Fpython-cdk\u002Fchangelog\u002F","10.technical-reference\u002F60.python-cdk\u002F20.changelog",{"title":672,"path":673,"stem":674,"children":675},"Connector Development (CDK)","\u002Fconnector-development\u002F","20.connector-development",[676,678,697,730,738,773],{"title":672,"path":673,"stem":677},"20.connector-development\u002Findex",{"title":679,"path":680,"stem":681,"children":682,"page":42},"Getting Started","\u002Fconnector-development\u002Fgetting-started\u002F","20.connector-development\u002F10.getting-started",[683,686,690,693],{"title":561,"path":684,"stem":685},"\u002Fconnector-development\u002Fgetting-started\u002Foverview\u002F","20.connector-development\u002F10.getting-started\u002F10.overview",{"title":687,"path":688,"stem":689},"What's new","\u002Fconnector-development\u002Fgetting-started\u002Fwhats-new\u002F","20.connector-development\u002F10.getting-started\u002F20.whats-new",{"title":81,"path":691,"stem":692},"\u002Fconnector-development\u002Fgetting-started\u002Finstallation\u002F","20.connector-development\u002F10.getting-started\u002F30.installation",{"title":694,"path":695,"stem":696},"Contributing","\u002Fconnector-development\u002Fgetting-started\u002Fcontributing\u002F","20.connector-development\u002F10.getting-started\u002F40.contributing",{"title":698,"path":699,"stem":700,"children":701,"page":42},"Tutorial","\u002Fconnector-development\u002Ftutorial\u002F","20.connector-development\u002F20.tutorial",[702,706,710,714,718,722,726],{"title":703,"path":704,"stem":705},"Walkthrough","\u002Fconnector-development\u002Ftutorial\u002Fwalkthrough\u002F","20.connector-development\u002F20.tutorial\u002F00.walkthrough",{"title":707,"path":708,"stem":709},"SiLA Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fsila-endpoints\u002F","20.connector-development\u002F20.tutorial\u002F10.sila-endpoints",{"title":711,"path":712,"stem":713},"Data Endpoints","\u002Fconnector-development\u002Ftutorial\u002Fdata-endpoints\u002F","20.connector-development\u002F20.tutorial\u002F20.data-endpoints",{"title":715,"path":716,"stem":717},"Controls","\u002Fconnector-development\u002Ftutorial\u002Fcontrols\u002F","20.connector-development\u002F20.tutorial\u002F30.controls",{"title":719,"path":720,"stem":721},"SiLA Data Types","\u002Fconnector-development\u002Ftutorial\u002Fdata-types\u002F","20.connector-development\u002F20.tutorial\u002F40.data-types",{"title":723,"path":724,"stem":725},"Feature","\u002Fconnector-development\u002Ftutorial\u002Fconnector-structure\u002F","20.connector-development\u002F20.tutorial\u002F70.connector-structure",{"title":727,"path":728,"stem":729},"Hardware Communication","\u002Fconnector-development\u002Ftutorial\u002Fhardware-communication\u002F","20.connector-development\u002F20.tutorial\u002F90.hardware-communication",{"title":98,"path":731,"stem":732,"children":733,"page":42},"\u002Fconnector-development\u002Fconcepts\u002F","20.connector-development\u002F30.concepts",[734],{"title":735,"path":736,"stem":737},"SiLA","\u002Fconnector-development\u002Fconcepts\u002Fsila\u002F","20.connector-development\u002F30.concepts\u002Fsila",{"title":212,"path":739,"stem":740,"children":741,"page":42},"\u002Fconnector-development\u002Fguides\u002F","20.connector-development\u002F40.guides",[742,746,750,754,758,762,765,769],{"title":743,"path":744,"stem":745},"Configuration","\u002Fconnector-development\u002Fguides\u002Fconfiguration\u002F","20.connector-development\u002F40.guides\u002F20.configuration",{"title":747,"path":748,"stem":749},"Logging","\u002Fconnector-development\u002Fguides\u002Flogging\u002F","20.connector-development\u002F40.guides\u002F21.logging",{"title":751,"path":752,"stem":753},"Deployment","\u002Fconnector-development\u002Fguides\u002Fdeployment\u002F","20.connector-development\u002F40.guides\u002F30.deployment",{"title":755,"path":756,"stem":757},"Security","\u002Fconnector-development\u002Fguides\u002Fsecurity\u002F","20.connector-development\u002F40.guides\u002F40.security",{"title":759,"path":760,"stem":761},"Subscriptions","\u002Fconnector-development\u002Fguides\u002Fsubscriptions\u002F","20.connector-development\u002F40.guides\u002F45.subscriptions",{"title":208,"path":763,"stem":764},"\u002Fconnector-development\u002Fguides\u002Ferror-handling\u002F","20.connector-development\u002F40.guides\u002F50.error-handling",{"title":766,"path":767,"stem":768},"Serial Troubleshooting","\u002Fconnector-development\u002Fguides\u002Fserial-troubleshooting\u002F","20.connector-development\u002F40.guides\u002F70.serial-troubleshooting",{"title":770,"path":771,"stem":772},"Testing","\u002Fconnector-development\u002Fguides\u002Ftesting\u002F","20.connector-development\u002F40.guides\u002F80.testing",{"title":774,"path":775,"stem":776,"children":777},"References","\u002Fconnector-development\u002Freference\u002F","20.connector-development\u002F50.reference\u002Findex",[778],{"title":774,"path":775,"stem":776},{"id":780,"title":53,"body":781,"description":947,"extension":948,"links":949,"meta":950,"navigation":951,"path":952,"seo":953,"stem":55,"__hash__":954},"docs\u002F01.get-started\u002F20.setup\u002F00.get-access.md",{"type":782,"value":783,"toc":941},"minimark",[784,793,796,896,901,928,935],[785,786,787,788,792],"p",{},"Your instruments, workflows, and data live in a workspace that belongs to your organization alone. UniteLabs calls it a ",[789,790,791],"strong",{},"tenant",", sets it up for you, and hands over five things. There is no self-service signup yet: everything on this list comes from your UniteLabs contact.",[785,794,795],{},"Most tenants run in the UniteLabs cloud. The platform can also run on your organization's own infrastructure, in your cloud or on your own servers. Ask your UniteLabs contact about hosting options.",[797,798,799,812],"table",{},[800,801,802],"thead",{},[803,804,805,809],"tr",{},[806,807,808],"th",{},"What you receive",[806,810,811],{},"Where it goes",[813,814,815,832,842,862,879],"tbody",{},[803,816,817,824],{},[818,819,820,823],"td",{},[789,821,822],{},"Tenant details",", the ID and the web address",[818,825,826,827,831],{},"Signing in: the web interface and ",[828,829,830],"a",{"href":58},"GroundControl's settings"," ask for the tenant ID to find your workspace.",[803,833,834,839],{},[818,835,836],{},[789,837,838],{},"A user account",[818,840,841],{},"Signing in to GroundControl and to the web interface.",[803,843,844,850],{},[818,845,846,849],{},[789,847,848],{},"API client credentials",", a client ID and secret",[818,851,852,853,857,858,861],{},"The ",[854,855,856],"code",{},".env"," file of your project, so your own code can authenticate against your tenant. First needed in ",[828,859,860],{"href":82},"SDK installation",".",[803,863,864,869],{},[818,865,866],{},[789,867,868],{},"A download password",[818,870,852,871,861],{},[828,872,878],{"href":873,"rel":874,"target":877},"https:\u002F\u002Funitelabs.io\u002Fdownloads",[875,876],"nofollow","noopener","_blank","GroundControl download page",[803,880,881,887],{},[818,882,883,886],{},[789,884,885],{},"Registry credentials",", a username and password",[818,888,889,890,893,894,861],{},"Your ",[854,891,892],{},"~\u002F.netrc"," file (uv, pip) or the Poetry config, so the UniteLabs Python packages install from the private registry. Also covered in ",[828,895,860],{"href":82},[897,898,900],"h2",{"id":899},"what-you-need-on-your-side","What you need on your side",[902,903,904,914,920],"ul",{},[905,906,907,910,911,861],"li",{},[789,908,909],{},"A lab computer"," wired to your instruments over serial, TCP, or USB. GroundControl runs here. A regular machine with macOS, Windows, or Linux works; for computers without a display there is a ",[828,912,913],{"href":74},"headless install",[905,915,916,919],{},[789,917,918],{},"A development machine"," where you write code, with Python 3.10 or newer. Workflows need Python 3.12 or newer.",[905,921,922,925,926,861],{},[789,923,924],{},"An outbound network path",": the lab computer connects out to your tenant over one encrypted connection; nothing from outside needs to reach into the lab network. Details in ",[828,927,61],{"href":62},[785,929,930,931,861],{},"Not set up with UniteLabs yet, or missing one of the five? Your UniteLabs contact is the fastest route, otherwise write to ",[828,932,934],{"href":933},"mailto:info@unitelabs.io","info@unitelabs.io",[785,936,937,938,861],{},"Once everything is at hand, start with ",[828,939,940],{"href":58},"Install GroundControl",{"title":942,"searchDepth":943,"depth":944,"links":945},"",1,2,[946],{"id":899,"depth":944,"text":900},"The tenant and the five credentials UniteLabs hands over, where each one goes, and what you need on your side before setting up.","md",null,{},true,"\u002Fget-started\u002Fsetup\u002Fget-access",{"title":53,"description":947},"J3QzDElXTagjxqGKK9ZH-ou2XsbJl7MgjOgprF3qoS0",[956,958],{"title":44,"path":45,"stem":46,"description":957,"children":-1},"Why expressing your lab methods as Python code pays off as your workflows grow.",{"title":57,"path":58,"stem":59,"description":959,"children":-1},"Install and configure GroundControl — the edge application that connects your instruments to the UniteLabs platform.",1786456082153]