# Unitelabs Documentation > Use our tools to get your experiments automated. ## Documentation Sets - [UniteLabs Documentation](https://docs.unitelabs.io//llms-full.txt): This is the full documentation for the UniteLabs platform. ## Get Started - [Welcome to UniteLabs](https://docs.unitelabs.io/raw/get-started/welcome.md): Automation infrastructure for the laboratory. Connect lab instruments, build workflows, and integrate everything — programmatically. - [How it works](https://docs.unitelabs.io/raw/get-started/how-it-works.md): How the UniteLabs Platform connects lab instruments, builds automation, and manages data — end to end. - [Instrument Control](https://docs.unitelabs.io/raw/get-started/use-cases/low-level-instrument-control.md): Control individual lab instruments directly with Python — without vendor GUIs or proprietary software. - [Multi-device Control](https://docs.unitelabs.io/raw/get-started/use-cases/multi-device-control.md): Coordinate multiple lab instruments simultaneously from a single Python script. - [Workflow Orchestration](https://docs.unitelabs.io/raw/get-started/use-cases/workflow-orchestration.md): Define reproducible experiment workflows in code — versioned, testable, and deployable like any other software. - [Custom Apps and LIMS Integration](https://docs.unitelabs.io/raw/get-started/use-cases/custom-apps-lims.md): Connect your LIMS, Benchling, or custom lab application to UniteLabs via the REST API. - [Scale and Fleet Management](https://docs.unitelabs.io/raw/get-started/use-cases/scale-and-fleet.md): Deploy and manage automation across multiple workcells or lab sites from a single versioned codebase. - [Lab as Code](https://docs.unitelabs.io/raw/get-started/why-code.md): Why expressing your lab methods as Python code pays off as your workflows grow. - [GroundControl](https://docs.unitelabs.io/raw/get-started/setup/groundcontrol.md): Install and configure GroundControl — the edge application that connects your instruments to the UniteLabs platform. - [Network requirements](https://docs.unitelabs.io/raw/get-started/setup/network-requirements.md): Firewall rules, ports, and network configuration required for GroundControl and connectors. - [Multi-device Networking](https://docs.unitelabs.io/raw/get-started/setup/multiple-devices.md): How to connect multiple instruments to UniteLabs — across one machine, multiple machines, or multiple lab locations. - [Connect to Platform](https://docs.unitelabs.io/raw/get-started/setup/connect-to-platform.md): Server-initiated connection — this page explains what it enables and how to turn it on with a single setting. - [Headless install](https://docs.unitelabs.io/raw/get-started/setup/headless-install.md): Run connectors as standalone executables on servers, Raspberry Pi, and other headless Linux devices — no GUI required. - [Raspberry Pi](https://docs.unitelabs.io/raw/get-started/setup/raspberry-pi.md): Running multiple UniteLabs connectors on a Raspberry Pi — folder structure, systemd services, and common operations. - [Installation](https://docs.unitelabs.io/raw/get-started/setup/sdk-installation.md): A quick guide to installing SDK components. ## Integrate - [What is a connector?](https://docs.unitelabs.io/raw/integrate/what-is-a-connector.md): A connector is the software bridge between a physical lab instrument and the UniteLabs platform. Learn how connectors work and how they fit into your lab. - [Calling a Connector](https://docs.unitelabs.io/raw/integrate/control-with-code.md): Discover a connector's modules and actions, then run aspirate and dispense against an Agilent Bravo. - [Connector](https://docs.unitelabs.io/raw/integrate/concepts/connector.md): What a connector is, how it is identified, and how its capabilities are organized. - [Module](https://docs.unitelabs.io/raw/integrate/concepts/module.md): How a connector groups related actions into logical modules you can discover and call. - [Action](https://docs.unitelabs.io/raw/integrate/concepts/action.md): The callable primitive on a module. Every action has a type — Property, Sensor, or Control — that determines how you consume it. - [Subscription](https://docs.unitelabs.io/raw/integrate/concepts/subscription.md): How you consume Sensor-type actions (and streaming Controls) over time. - [Device](https://docs.unitelabs.io/raw/integrate/concepts/device.md): The physical instrument your connector controls — and its entry in the platform device registry. - [Via GroundControl](https://docs.unitelabs.io/raw/integrate/connect-a-device/via-groundcontrol.md): Add a device and install a connector through the GroundControl edge application. - [With an executable](https://docs.unitelabs.io/raw/integrate/connect-a-device/with-an-executable.md): Run a connector as a standalone executable and choose which command it starts with. - [From source](https://docs.unitelabs.io/raw/integrate/connect-a-device/from-source.md): Generate a configuration, run a connector from its source project, and configure logging. - [Build your own](https://docs.unitelabs.io/raw/integrate/connect-a-device/build-yourself.md): Build a connector for an unsupported instrument with the UniteLabs tooling. - [GroundControl](https://docs.unitelabs.io/raw/integrate/use-a-connector/groundcontrol.md): Interact with a connected instrument and verify its platform connection from GroundControl. - [Platform](https://docs.unitelabs.io/raw/integrate/use-a-connector/platform.md): How to view, inspect, and interact with connectors from the UniteLabs Platform UI. - [UniteLabs SDK & REST API](https://docs.unitelabs.io/raw/integrate/use-a-connector/python.md): Access connectors programmatically — discover services, explore their modules and actions, and subscribe to live data using the UniteLabs SDK or the REST API. ## Operate - [Operate](https://docs.unitelabs.io/raw/operate/overview.md): Model your physical lab setup in code — the foundation every automation script builds on, from labware through liquid handling. - [Your First Protocol](https://docs.unitelabs.io/raw/operate/your-first-protocol.md): Walk the full labware → deck → device → command → error chain in one runnable simulator script, and leave understanding why the order matters. - [Liquid Handling](https://docs.unitelabs.io/raw/operate/concepts/liquid-handling.md): The domain model for liquid handling in the SDK — aspirate/dispense as the core abstraction, and how vendor differences are flattened behind one API. - [Modules](https://docs.unitelabs.io/raw/operate/concepts/modules.md): Pipettes, grippers, and autoload as independent units of hardware capability, each with its own lifecycle. - [Deck](https://docs.unitelabs.io/raw/operate/concepts/deck.md): The coordinate frame and resource tree that place labware in 3D space, and the layout files that make a deck reproducible across runs. - [Labware](https://docs.unitelabs.io/raw/operate/concepts/labware.md): Understand what labware is and how it is modelled in UniteLabs. - [Liquids](https://docs.unitelabs.io/raw/operate/concepts/liquids.md): How to represent liquids in the SDK — predefined types, custom instances with physical metadata, traceable samples, and custom aliases — and when to use each. - [Liquid Classes](https://docs.unitelabs.io/raw/operate/concepts/liquid-classes.md): Why pipetting needs a parameter model, and how Hamilton and Bravo diverge in how they express it. - [Tips and Tip Tracking](https://docs.unitelabs.io/raw/operate/concepts/tips.md): How the SDK models tips as tracked, lifecycle-managed resources, and why independent-channel heads and monolithic 96-heads work differently. - [Simulation](https://docs.unitelabs.io/raw/operate/concepts/simulation.md): What the mock actually models — the validations it catches, the ones it doesn't, and why a protocol can pass the mock and still fail on hardware. - [Error Handling](https://docs.unitelabs.io/raw/operate/concepts/error-handling.md): Handle device failures, timeouts, and unexpected states safely in your lab automation scripts. - [Standard Labware](https://docs.unitelabs.io/raw/operate/guides/labware/standard-labware.md): Learn how to use the labware library by importing standard labware. - [Plates](https://docs.unitelabs.io/raw/operate/guides/labware/plates.md): Define custom microplates using the Plate base class and ANSI/SLAS standard dimensions. - [Tips and Tip Racks](https://docs.unitelabs.io/raw/operate/guides/labware/tips-and-racks.md): Define custom tip types and tip racks for Hamilton liquid handlers. - [Tubes and Tube Racks](https://docs.unitelabs.io/raw/operate/guides/labware/tubes-and-tube-racks.md): Define custom tubes and tube racks using the Tube and TubeRack base classes. - [Troughs](https://docs.unitelabs.io/raw/operate/guides/labware/troughs.md): Define custom reagent troughs using the Trough base class. - [Carriers and Adapters](https://docs.unitelabs.io/raw/operate/guides/labware/carriers-and-adapters.md): Define custom plate carriers, tip carriers, trough carriers, and plate adapters for the deck. - [Labware](https://docs.unitelabs.io/raw/operate/guides/labware.md): Use Standard Labware and define custom plates, tips, tubes, troughs, carriers, and adapters using the labware base classes. - [Building a Deck](https://docs.unitelabs.io/raw/operate/guides/deck/building-a-deck.md): Compose a deck from carriers and labware, configure track bounds, and place carriers at specific coordinates. - [Save/Load a Deck](https://docs.unitelabs.io/raw/operate/guides/deck/save-load-deck.md): Persist deck configurations to JSON, reload them across workflow runs, and bundle them alongside your workflow code. - [Basic Pipetting](https://docs.unitelabs.io/raw/operate/guides/pipetting/basic-pipetting.md): Aspirating and dispensing liquid with Hamilton and Agilent Bravo liquid handlers. - [Advanced Pipetting](https://docs.unitelabs.io/raw/operate/guides/pipetting/advanced-pipetting.md): Using parameter sets for precise, reusable pipetting operations on Hamilton and Bravo. - [Tip Handling](https://docs.unitelabs.io/raw/operate/guides/pipetting/tip-handling.md): Picking up, returning, and discarding tips on Hamilton and Agilent Bravo liquid handlers. - [Liquid Classes](https://docs.unitelabs.io/raw/operate/guides/pipetting/liquid-classes.md): Using predefined and custom liquid classes on Hamilton and Agilent Bravo liquid handlers. - [Labware Transport](https://docs.unitelabs.io/raw/operate/guides/pipetting/labware-transport.md): Moving labware during a run using different available grippers on Hamilton Star, Hamilton Vantage, and Bravo liquid handling stations. - [Simulation](https://docs.unitelabs.io/raw/operate/guides/simulation.md): Run protocols against a mock liquid handler — drop-in replacement for real hardware, with full liquid tracking and state validation. - [Positioning & Movement](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/positioning.md): From moving to specific positions to reading out the current position. - [Gripper Module](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/core-gripper.md): Moving labware with the integrated CO-RE gripper. - [iSWAP Module](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/iswap.md): Use the iSWAP module for plate handling. - [Using TADM](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/tadm.md): How to measure TADM curves and control liquid handling steps with them. - [Autoload Module](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/autoload.md): A guide on a liquid handler Autoload module. - [Waste Block](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/waste-block.md) - [Complex Mixing](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/complex-mixing.md): Perform highly customized mixing operations by chaining together aspirate and dispense steps. - [Teaching Gripper Paddle Positions](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/gripper-positions.md): How to teach the gripper paddle positions and configuring the gripper module. - [Training a Custom Deck Position With the iSWAP](https://docs.unitelabs.io/raw/operate/devices/hamilton-star/custom-deck-position.md): Define and use a custom deck position using the iSWAP module. - [Waste Configuration](https://docs.unitelabs.io/raw/operate/devices/hamilton-vantage/waste-configuration.md): Configure and use the Hamilton Vantage waste. - [Covers and Lights](https://docs.unitelabs.io/raw/operate/devices/hamilton-vantage/covers-and-lights.md): Control the covers and deck lights on the Hamilton Vantage. - [IDL Module](https://docs.unitelabs.io/raw/operate/devices/hamilton-vantage/idl.md): Use the IDL module for automated carrier loading and barcode scanning on the Hamilton Vantage. - [IPG Module](https://docs.unitelabs.io/raw/operate/devices/hamilton-vantage/ipg.md): Use the IPG module for plate handling on the Hamilton Vantage. - [XL Pipettes](https://docs.unitelabs.io/raw/operate/devices/hamilton-vantage/xl-channels.md): Use the XL (5ml) pipettes for high-volume pipetting on the Hamilton Vantage. - [Tip Handling](https://docs.unitelabs.io/raw/operate/devices/agilent-bravo/tip-handling.md): Picking up and dropping tips with the Agilent Bravo. - [Basic Pipetting](https://docs.unitelabs.io/raw/operate/devices/agilent-bravo/basic-pipetting.md): Aspirating and dispensing with the Agilent Bravo using liquid classes. - [Liquid Classes](https://docs.unitelabs.io/raw/operate/devices/agilent-bravo/liquid-classes.md): Using predefined and custom liquid classes with the Agilent Bravo. - [Gripper Module](https://docs.unitelabs.io/raw/operate/devices/agilent-bravo/using-the-gripper.md): Moving labware with the integrated gripper on the Agilent Bravo. - [Connect & Run a Method](https://docs.unitelabs.io/raw/operate/devices/tecan-fluentcontrol/connect-and-run.md): How to connect to the Tecan FluentControl connector and start a FluentControl method. - [Sending XML Commands](https://docs.unitelabs.io/raw/operate/devices/tecan-fluentcontrol/sending-xml-commands.md): Using the execution channel to send XML commands to FluentControl at runtime. - [Full Workflow Example](https://docs.unitelabs.io/raw/operate/devices/tecan-fluentcontrol/full-workflow-example.md): A complete end-to-end example connecting to FluentControl, running a named method, and sending XML commands at runtime. ## Connect - [Overview](https://docs.unitelabs.io/raw/connector-development/getting-started/overview.md): Everything you need to know about building and deploying device connectors. - [What's new](https://docs.unitelabs.io/raw/connector-development/getting-started/whats-new.md): The latest developments at UniteLabs. - [Installation](https://docs.unitelabs.io/raw/connector-development/getting-started/installation.md): A step-by-step guide to install and set up your development environment for creating connectors. - [Contributing](https://docs.unitelabs.io/raw/connector-development/getting-started/contributing.md): Learn how to contribute to the lab automation community. - [Walkthrough](https://docs.unitelabs.io/raw/connector-development/tutorial/walkthrough.md): Understanding the basics of the UniteLabs Connector Development Kit. - [SiLA Endpoints](https://docs.unitelabs.io/raw/connector-development/tutorial/sila-endpoints.md): UniteLabs CDK and the SiLA component library. - [Data Endpoints](https://docs.unitelabs.io/raw/connector-development/tutorial/data-endpoints.md): Extracting data from a device. - [Controls](https://docs.unitelabs.io/raw/connector-development/tutorial/controls.md): Triggering actions on a device. - [SiLA Data Types](https://docs.unitelabs.io/raw/connector-development/tutorial/data-types.md): Introduction to the basic data types in SiLA and their constraints. - [Feature](https://docs.unitelabs.io/raw/connector-development/tutorial/connector-structure.md): What is a feature and how to create one. - [Hardware Communication](https://docs.unitelabs.io/raw/connector-development/tutorial/hardware-communication.md): Getting Started with the UniteLabs Omnibus Library for Hardware Communication - [SiLA](https://docs.unitelabs.io/raw/connector-development/concepts/sila.md): How UniteLabs uses the SiLA 2 standard for instrument interoperability. - [Parallel Processing](https://docs.unitelabs.io/raw/connector-development/guides/parallel-processing.md): Configuring a Protocol to enable Parallel Communication Processing - [Configuration](https://docs.unitelabs.io/raw/connector-development/guides/configuration.md): How to write dynamic configurations for connectors. - [Logging](https://docs.unitelabs.io/raw/connector-development/guides/logging.md): How to emit logs from your connector code using the CDK and structlog. - [Deployment](https://docs.unitelabs.io/raw/connector-development/guides/deployment.md): How to deploy connectors for production. - [Security](https://docs.unitelabs.io/raw/connector-development/guides/security.md): How to secure your connectors. - [Subscriptions](https://docs.unitelabs.io/raw/connector-development/guides/subscriptions.md): Creating and managing continuously updating data streams, pipelines and filters. - [Error Handling](https://docs.unitelabs.io/raw/connector-development/guides/error-handling.md): Errors happen. This guide shows how to handle them gracefully in your SiLA 2 connector - so clients and users stay informed, not confused. - [Serial Autodetect](https://docs.unitelabs.io/raw/connector-development/guides/autodetect.md): Configuring a Protocol for long-term serial device connectivity. - [Serial Troubleshooting](https://docs.unitelabs.io/raw/connector-development/guides/serial-troubleshooting.md): Serial devices that violate their own rules and how to master them. - [Testing](https://docs.unitelabs.io/raw/connector-development/guides/testing.md): How to test your connector. - [References](https://docs.unitelabs.io/raw/connector-development/reference.md): API references for UniteLabs connectors and the Connector Development Kit. - [Connector Development (CDK)](https://docs.unitelabs.io/raw/connector-development.md): Everything you need to know about connectors, deployment, and the Connector Development Kit. ## Automate - [What is a workflow?](https://docs.unitelabs.io/raw/automate/what-is-a-workflow.md): Workflows are the core automation primitive in UniteLabs: reproducible, versioned processes that coordinate instruments, data, and scientific logic. - [Workflow template](https://docs.unitelabs.io/raw/automate/workflow-template.md): Clone a production-ready monorepo, run a workflow in simulation, and deploy any of the three reference workflows to the platform. - [Your First Workflow](https://docs.unitelabs.io/raw/automate/your-first-workflow.md): Clone the workflow template, run the hello-world example locally, and scaffold your own first workflow in under 15 minutes. - [Workflow](https://docs.unitelabs.io/raw/automate/concepts/workflow.md): The top-level executable process that coordinates phases, data flow, and physical state to achieve a specific scientific outcome. - [Phase](https://docs.unitelabs.io/raw/automate/concepts/phase.md): A logical grouping of steps that represents a meaningful state change for a sample and ends in a stable, checkpoint condition. - [Step](https://docs.unitelabs.io/raw/automate/concepts/step.md): The smallest scientifically atomic unit of intent — a single device action that either happened or did not. - [Runs](https://docs.unitelabs.io/raw/automate/concepts/runs.md): A run is a single execution of a workflow, tracked from start to finish with full state and audit history. - [Input](https://docs.unitelabs.io/raw/automate/concepts/input.md): Parameterize a workflow or phase with typed values provided at run time — from the UI, the API, or a human operator. - [Artifacts](https://docs.unitelabs.io/raw/automate/concepts/artifacts.md): Structured data and files produced by a workflow run — persisted and linked to the run record for traceability and downstream use. - [Logs](https://docs.unitelabs.io/raw/automate/concepts/logs.md): Structured execution logs emitted at every level of the workflow hierarchy — accessible per run, per phase, and per step. - [Human in the Loop](https://docs.unitelabs.io/raw/automate/concepts/human-in-the-loop.md): Pause a workflow run to request a human decision or physical action before continuing. - [Error Handling](https://docs.unitelabs.io/raw/automate/concepts/error-handling.md): How errors are classified, retried, and recovered at each level of the workflow hierarchy — from automatic step retries to operator-assisted recovery. - [Deploy a workflow](https://docs.unitelabs.io/raw/automate/guides/deploy-a-workflow.md): Bundle a workflow from a workflow-template repo and ship it to the UniteLabs platform with scripts/deploy.py. - [Run a workflow](https://docs.unitelabs.io/raw/automate/guides/run-a-workflow.md): Trigger a workflow run from the platform UI, the UniteLabs SDK, or the REST API. - [CI/CD for workflows](https://docs.unitelabs.io/raw/automate/guides/cicd-for-workflows.md): Automate workflow deploys to UniteLabs with three channels — DEV (manual), STG (push to main), PRD (per-workflow release tags) — on GitHub Actions or GitLab CI. - [HITL basics](https://docs.unitelabs.io/raw/automate/guides/basic-hitl.md): Pause a workflow run so an operator can take a physical action, then resume automatically. - [Typed operator inputs](https://docs.unitelabs.io/raw/automate/guides/typed-operator-inputs.md): Collect structured data from operators at runtime using a RunInput model — enums, booleans, numbers, and text fields rendered as a platform form. - [Error recovery](https://docs.unitelabs.io/raw/automate/guides/basic-error-handling.md): Clean up hardware state, retry transient failures, and resume after operator intervention. - [Advanced error handling](https://docs.unitelabs.io/raw/automate/guides/advanced-error-handling.md): Build a structured error taxonomy with typed error codes, user-facing messages, and automatic exception classification. - [Workflows REST API](https://docs.unitelabs.io/raw/automate/guides/workflows-api.md): Register, manage, and trigger workflows programmatically using the UniteLabs REST API. ## Observe - [Overview](https://docs.unitelabs.io/raw/observe/overview.md): How UniteLabs handles data storage, secrets, and connectivity to external systems. - [Object Storage](https://docs.unitelabs.io/raw/observe/concepts/storage.md): Store and retrieve files using UniteLabs S3-compatible object storage. - [Secrets](https://docs.unitelabs.io/raw/observe/concepts/secrets.md): Secure and manage credentials like API keys, tokens, and passwords for safe and reusable access in workflows. - [Data sources](https://docs.unitelabs.io/raw/observe/concepts/data-sources.md): Connect to and manage data sources in the UniteLabs Platform. - [File System Connector](https://docs.unitelabs.io/raw/observe/guides/filesystem-connector.md): A practical example of using the file system connector to read and write data in workflows. - [Building an ETL](https://docs.unitelabs.io/raw/observe/guides/building-an-etl.md): Extract, transform, and load data between lab instruments and external systems using UniteLabs.