BEARS machines
Goal
Provide machine-selection and capability guidance for PUDA workflows, then load the correct machine reference before generating commands.
Critical Rule
If you are unsure which machine should be used for a command, ask the user before proceeding.
Do not assume.
Machine Capabilities and When to Use
First Machine ()
Use for liquid handling and deck operations.
Capabilities:
- Pipetting workflows: aspirate, dispense, attach tip, drop tip
- Deck and labware workflows: load deck, position-dependent operations
- Sequenced robotic handling steps in wet-lab protocols
Use this machine when:
- The task is about moving liquids between wells/labware
- The user mentions tip usage, aspiration/dispensing, or deck slots/labware setup
Before command generation:
- Refer to: first-machine
- Run
puda machine commands first
to understand available commands
- Follow constraints and sequencing in
references/first-machine.md
Biologic Machine ()
Use for electrochemical testing and characterization.
Capabilities:
- OCV (Open Circuit Voltage)
- CA (Chronoamperometry)
- PEIS / GEIS (Impedance spectroscopy)
- CV (Cyclic Voltammetry)
- MPP variants (MPP, MPP_Cycles, MPP_Tracking)
Use this machine when:
- The task is an electrochemical measurement or battery/cell characterization
- The user asks for OCV, CA, EIS, CV, or MPP tests
Before command generation:
- Refer to: biologic-machine
- Run
puda machine commands biologic
to understand available commands
- Follow constraints in
references/biologic-machine.md
Balance Machine
Use for gravimetric mass measurement via an Arduino-based USB load-cell balance on Linux.
Capabilities:
- Continuous calibrated mass readings from a load-cell over USB serial ( or )
- Background reader thread streaming readings at ~4 Hz; no polling required
- Tare command to zero the balance before a dispense step
- Freshness check ( flag) to detect stale/disconnected readings
- NATS telemetry publishing via the edge service
- Custom calibration CSV support
Use this machine when:
- The workflow requires weighing a container before or after a liquid transfer
- The user asks for gravimetric calibration, transfer error calculation, or balance feedback
- The task involves viscosity or transfer accuracy experiments needing mass data
Before use:
- Refer to: balance-machine
- Ask the user for the Linux serial port (, etc.) — do not assume
- Ensure the edge service is running (
uv run --package balance-edge python edge/balance.py
)
Opentrons Machine ()
Use for automated liquid handling and full protocol generation on the Opentrons OT-2 robot.
Capabilities:
- Full protocol code generation via
Protocol.to_python_code()
— produces valid runnable OT-2 Python
- Pipetting workflows: , , (with auto-chunking for large volumes)
- Tip management: ,
- Deck and labware setup: ,
- Flow control: , , , ,
- Protocol utilities: , ,
- CSV-driven loops: + for data-driven protocols
- Custom labware support: AMDM mass balance vials (30 mL, 50 mL) loaded inline
- All gen2 pipette types: p10, p20, p300, p1000 (single and multi-channel)
- External camera image capture: — triggers the external camera mounted above the deck to capture and save a still image of the wellplate
Use this machine when:
- The user references an Opentrons OT-2 robot
- The task involves generating a complete OT-2 protocol or individual liquid handling commands
- The user mentions Opentrons labware (tip racks, well plates, reservoirs, NEST, Corning, mass balance vials)
- The workflow requires data-driven dispensing from a CSV file
- The workflow requires capturing a camera image of the wellplate after dispensing steps
Before command generation:
- Refer to: opentrons-machine
- Run
puda machine commands opentrons
to understand available commands
- Follow all command types, params, sequencing rules, and labware constraints in
references/opentrons-machine.md
Selection Workflow
- Parse user intent and identify the tasks.
- Match intent to the machine capabilities above.
- If machine selection is unclear or ambiguous, ask the user and wait for confirmation.
- Load the corresponding reference file and CLI help.
- Generate commands only after machine choice is confirmed.
Output Guidance
When answering machine-selection questions:
- State the recommended machine and a one-line reason tied to capability.
- If uncertain, ask a direct clarification question instead of guessing.
Critical sequencing rules
- protocols must always end with no tip attached to any pipette.
- deck slot () for every command must be explicitly confirmed by the user — never assume a slot.
- must be its own standalone protocol — never combined with pipetting commands in the same protocol.
- — always call before reading and after. Always tare before a dispense step. Always verify before using a reading.