Skip to content


A modular and extensible instrument control framework.

Our logo

đź‘‹ Hello, and welcome to the GitHub home of the yaq project.

yaq---Yet Another acQuisition

We are building a modular and extensible instrument control framework on top of Apache Avro RPC. In human terms, this means we have designed a simple user-friendly interface to control scientific hardware (motors, sensors, etc) from Python. We already support lots of hardware, and more is being added all the time.

The yaq project has no official orchestration support. We don't have "smart" tools to define experimental scans and record data. Our only goal is to build an excelent interface for addressing hardware. Let yaq solve the annoying part (hardware interface support) while you focus on the fun part (your unique experiment). Write a simple script to try an interesting experiment. Use Jupyter to interact with your hardware. Use an existing project focused on orchestration e.g. Bluesky. Develop your own one-off application, e.g. Pressure Monitoring Reactor.

# minimal 2D scan---from scratch
import time
import yaqc
motor1 = yaqc.Client(port=38000)
motor2 = yaqc.Client(port=38001)
sensor = yaqc.Client(port=38002)
data = []
for m1 in range(-10, 10, 1):
    for m2 in range(0, 300, 5):
        for c in [motor1, motor2]:
            while c.busy():
        while sensor.busy():
        reading = dict()
        reading["timestamp"] = time.time()
        reading["motor1"] = motor1.get_position()
        reading["motor2"] = motor2.get_position()

Come join us!

Our website:

Chat room:

Community call:

Email listserve:



  1. yaq-fyi yaq-fyi Public

    Main website for yaq documentation.

    HTML 4 6

  2. yeps yeps Public

    yaq enhancement proposals

    HTML 2 2

  3. yaq-python yaq-python Public

    Repository for yaq core python packages.

    Python 4 4

  4. yaqd-cookiecutter-python yaqd-cookiecutter-python Public

    Cookiecutter template for making new yaq daemons using Python.

    Python 1 3

  5. yaq-traits yaq-traits Public

    Tooling for working with yaq traits.

    Python 2 3

  6. yaqd-control yaqd-control Public

    Command line tools for inspecting and controlling yaq daemons.

    Python 2 3


Showing 10 of 61 repositories

Top languages


Most used topics