Get started

Boulder Opal at a glance and quickstart.

Boulder Opal overview

Boulder Opal is a versatile toolkit that provides everything you need to improve and automate the performance of quantum hardware. The core capabilities of Boulder Opal fall under the framework of quantum control—the discipline that addresses the question, “How can systems that obey the laws of quantum mechanics be efficiently manipulated to create desired behaviors?”

The quantum control functionality underlying Boulder Opal comprises three core activities:

  • System identification: characterizing key system parameters by probing the quantum system and performing analysis on the resulting data. This information allows you to build a model of your system which you can use to inform how to design suitable controls for your system.

  • Control design: creating control solutions to manipulate quantum systems so they are resilient to noise, to cancel particular Hamiltonian terms, or to minimize control duration. This can be performed using either a Hamiltonian model of the system or via closed-loop experimental interrogation, and will generally involve critical calibration steps on the hardware.

  • Performance verification: analyzing the control solutions to gain insights into their functionality or effectiveness. This includes techniques to both probe the expected response and action of the control via simulation under realistic conditions and experimental probing of performance through specific validation routines known to highlight or amplify certain errors for easy tuneup.

If you want to know more about the capabilities of Boulder Opal, you can read our Boulder Opal overview topic or our introductions to the application of Boulder Opal to quantum computing and quantum sensing.

The Q-CTRL Python package

To get started with Boulder Opal, you should first install the Q-CTRL Python package. It provides an intuitive and convenient interface to Q-CTRL’s quantum control solutions for customers of Q-CTRL. Here you will learn how to set up your system to use Boulder Opal, authenticate your credentials, and start a Boulder Opal session.


  • To use the Q-CTRL Python package you will need a Q-CTRL account.
  • The Q-CTRL Python package requires Python 3.6.4 or later.

1. Install Q-CTRL packages

To get started quickly and easily, we recommend Anaconda - a free and open-source distribution of the Python and R programming languages for scientific computing that aims to simplify package management and deployment.

Once you’re set up with a valid Python version, install the Q-CTRL Python package using pip on the command line.

$ pip install qctrl

If you have trouble installing with the above command due to dependency errors with scipy (this is a known issue for systems with Apple M1 processors), you can try installing scipy first from conda-forge.

$ conda install -c conda-forge scipy

and then installing the Q-CTRL Python package with pip.

$ pip install qctrl

Note that doing this might result in slightly different versions of some packages being installed.

Several of the Boulder Opal user guides and application notes use the Q-CTRL Visualizer and Q-CTRL Open Controls packages. You can also install them using pip.

$ pip install qctrl-visualizer qctrl-open-controls

If you already have the qctrl package installed and wish to update to the latest version, use the upgrade flag in pip.

$ pip install --upgrade qctrl

You can similarly update the qctrl-visualizer and qctrl-open-controls packages.

2. Authenticate your credentials

Next, you need to authenticate your credentials with the interactive Q-CTRL authentication tool. Call the authentication tool from the command line with qctrl auth, and provide the email and password you used to create your Q-CTRL account. It should look something like this:

$ qctrl auth

    This is an interactive Q-CTRL Authentication setup tool.

    For non-interactive or alternative options check our help:

        $ qctrl auth --help


Authenticating to
Successfully authenticated!
Authentication file created at /Users/me/.config/qctrl/99a615c91232cba79237e2903bdf0837

3. Start a Q-CTRL session

From now, you do not need to enter your email and password to authenticate your session. You can just import the Q-CTRL Python package in your Python script or notebook, and start a session by creating a Qctrl object.

# Import Q-CTRL Python package.
from qctrl import Qctrl

# Start a session with the API.
qctrl = Qctrl()

You are now ready to use Boulder Opal and start running your calculations.

Boulder Opal documentation

You will find everything that you need to work with Boulder Opal in our documentation. Our topics provide background information, explanation, and high-level discussion of key Boulder Opal concepts.

Our tutorials will introduce you to the essential Boulder Opal features through detailed step-by-step exercises.

Our user guides will help you take that basic knowledge to the next level. They provide a summary workflow to follow and worked examples, containing fully executable code solving real-world problems using Boulder Opal.

In addition, we provide application notes which highlight new research results realized through use of a range of Boulder Opal capabilities. These push the limits of published literature on quantum control and also demonstrate how flexibly incorporating different parts of the Boulder Opal toolset can solve major control challenges in the field.

You can also consult the technical reference documentation for details about the Q-CTRL Python package API.