Launching Jupyter Notebook

Each robot comes pre-installed with Jupyter Notebook, which can be accessed in your preferred web browser.

To launch the Jupyter Notebook server select Open beneath advanced settings in the Opentrons App.

The home page will look like this:

Creating a Python 3 notebook

Once you're inside Jupyter Notebook, you'll need to create a new notebook by selecting New > Python3

Writing and running your protocol

Once you've created a new Notebook, you can enter code into the cells and run them. However, there are some special considerations you'll need to keep in mind when writing code and running the robot via Jupyter notebook. See our API Documentation for more information and examples of how to structure your code to run on Jupyter.

Positional calibration in Jupyter Notebook

You can’t currently execute positional calibration through Jupyter notebook, only through the Opentrons App. Calibration on the OT-2 is generally saved until you explicitly overwrite it. When you move to Jupyter Notebook, it will use the existing calibration from the Opentrons App.

To properly calibrate your protocol in the Run App before running it in Jupyter Notebook, you can create a dummy protocol. This consists of all the pipettes and labware you will be using in your protocol and can be made in the Python API or Protocol Designer. For it to upload properly, make sure to include liquid handling steps in the protocol. This is an example of a simple dummy protocol in the Python API for a 300ul tiprack and 96 well plate:

from opentrons import protocol_api, types

metadata = {
'apiLevel': '2.8'

def run(protocol: protocol_api.ProtocolContext):
tiprack = protocol.load_labware('opentrons_96_tiprack_300ul', '1')
plate =protocol.load_labware('nest_96_wellplate_200ul_flat', '2')

p300 = protocol.load_instrument('p300_single_gen2', 'right', tip_racks=[tiprack])
p300.transfer(100, plate['A1'], plate['B1'])

If at any point in this process you have questions or encounter issues, contact the Opentrons Support via chat or via

Did this answer your question?