Skip to main content

an open-source Python package enabling Self-Driving Labs (SDLs) interoperability

Project description

Documentation Status PyPI version License YouTube YouTube Published

ivoryOS: interoperable Web UI for self-driving laboratories (SDLs)

A plug-and-play web interface for flexible SDLs


Table of Contents


Description

Building UIs for SDLs is challenging because flexibility and modularity make them unpredictable — yet accessibility is essential for democratisation of AI-driven scientific discovery.

IvoryOS bridges the gap by:

  • Dynamically inspecting initialized Python modules (hardware APIs, high-level functions, or workflows)
  • Automatically displaying functions and parameters in a web UI
  • Allowing users to design, manage, and execute experimental workflows with minimal changes to existing scripts
  • Providing natural language support for workflow design and execution, check IvoryOS MCP for more details.

System Requirements

Platforms: Compatible with Linux, macOS, and Windows (developed/tested on Windows).
Python:

  • Recommended: Python ≥3.10
  • Minimum: Python ≥3.7 (without Ax optimizer support)

Core Dependencies:

Click to expand
  • bcrypt~=4.0
  • Flask-Login~=0.6
  • Flask-Session~=0.8
  • Flask-SocketIO~=5.3
  • Flask-SQLAlchemy~=3.1
  • SQLAlchemy-Utils~=0.41
  • Flask-WTF~=1.2
  • python-dotenv==1.0.1

Optional:

  • ax-platform (≥1.0, Python≥3.10)
  • baybe

Installation

From PyPI:

pip install ivoryos

From source:

git clone https://gitlab.com/heingroup/ivoryos.git
cd ivoryos
pip install -e .

Quick start

In your SDL script,

my_robot = Robot()

import ivoryos

ivoryos.run(__name__)

You can now access the web UI at http://127.0.0.1:8000, create an account, login, and start designing workflows!


Features

Direct control:

direct function calling Devices tab

Workflows

  • Design Editor: drag/add function to canvas in Design tab. click Compile and Run button to go to the execution configuration page
  • Execution Config: configure iteration methods and parameters in Compile/Run tab.
  • Design Library: manage workflow scripts in Library tab.
  • Workflow Data: Execution records are in Data tab.

Offline mode

after one successful connection, a blueprint will be automatically saved and made accessible without hardware connection. In a new Python script in the same directory, use ivoryos.run() to start offline mode.

Logging

Add single or multiple loggers:

ivoryos.run(__name__, logger="logger name")
ivoryos.run(__name__, logger=["logger 1", "logger 2"])

Human-in-the-loop

Add single or multiple notification handlers for pause feature in flow control:

def slack_bot(msg: str = "Hi"):
    """
    a function that can be used as a notification handler function("msg")
    :param msg: message to send
    """
    from slack_sdk import WebClient

    slack_token = "your slack token"
    client = WebClient(token=slack_token)

    my_user_id = "your user id"  # replace with your actual Slack user ID

    client.chat_postMessage(channel=my_user_id, text=msg)

import ivoryos
ivoryos.run(__name__, notification_handler=slack_bot)

Directory Structure

Created automatically on first run:

  • ivoryos_data/:
    • ivoryos_data/config_csv/: Batch configuration csv
    • ivoryos_data/pseudo_deck/: Offline deck .pkl
    • ivoryos_data/results/: Execution results
    • ivoryos_data/scripts/: Compiled workflows Python scripts
  • default.log: Application logs
  • ivoryos.db: Local database

Demo

In the abstract_sdl.py

ivoryos.run(__name__)

Roadmap

  • dropdown input
  • snapshot version control
  • optimizer-agnostic
  • prefect compatibility
  • check batch-config file compatibility

Citing

If you find this project useful, please consider citing the following manuscript:

Zhang, W., Hao, L., Lai, V. et al. IvoryOS: an interoperable web interface for orchestrating Python-based self-driving laboratories. Nat Commun 16, 5182 (2025).

@article{zhang_et_al_2025,
  author       = {Wenyu Zhang and Lucy Hao and Veronica Lai and Ryan Corkery and Jacob Jessiman and Jiayu Zhang and Junliang Liu and Yusuke Sato and Maria Politi and Matthew E. Reish and Rebekah Greenwood and Noah Depner and Jiyoon Min and Rama El-khawaldeh and Paloma Prieto and Ekaterina Trushina and Jason E. Hein},
  title        = {{IvoryOS}: an interoperable web interface for orchestrating {Python-based} self-driving laboratories},
  journal      = {Nature Communications},
  year         = {2025},
  volume       = {16},
  number       = {1},
  pages        = {5182},
  doi          = {10.1038/s41467-025-60514-w},
  url          = {https://doi.org/10.1038/s41467-025-60514-w}
}

For an additional perspective related to the development of the tool, please see:

Zhang, W., Hein, J. Behind IvoryOS: Empowering Scientists to Harness Self-Driving Labs for Accelerated Discovery. Springer Nature Research Communities (2025).

@misc{zhang_hein_2025,
  author       = {Wenyu Zhang and Jason Hein},
  title        = {Behind {IvoryOS}: Empowering Scientists to Harness Self-Driving Labs for Accelerated Discovery},
  howpublished = {Springer Nature Research Communities},
  year         = {2025},
  month        = {Jun},
  day          = {18},
  url          = {https://communities.springernature.com/posts/behind-ivoryos-empowering-scientists-to-harness-self-driving-labs-for-accelerated-discovery}
}

Acknowledgements

Authors acknowledge Telescope Innovations Corp., UBC Hein Lab, and Acceleration Consortium members for their valuable suggestions and contributions.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ivoryos-1.4.2.tar.gz (376.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ivoryos-1.4.2-py3-none-any.whl (407.2 kB view details)

Uploaded Python 3

File details

Details for the file ivoryos-1.4.2.tar.gz.

File metadata

  • Download URL: ivoryos-1.4.2.tar.gz
  • Upload date:
  • Size: 376.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for ivoryos-1.4.2.tar.gz
Algorithm Hash digest
SHA256 4c0d7fedfe286f591483b1ad5a7ad202c0824540a6994cb0617d0ca676f69b4b
MD5 c70e2ba042ae7738ced8b1f82bf52f07
BLAKE2b-256 b94f8a527f5b0e135a909816fcd2783d8b2dc4749df9b05361eda5f24fd86f65

See more details on using hashes here.

File details

Details for the file ivoryos-1.4.2-py3-none-any.whl.

File metadata

  • Download URL: ivoryos-1.4.2-py3-none-any.whl
  • Upload date:
  • Size: 407.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for ivoryos-1.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7a410aee3160e3b8672ff3c8c84acaf1b1f5dd6ddba9cea9975b30e9c6cef0c4
MD5 372b005786e32eedb3b339be9c3dd932
BLAKE2b-256 adefc8750be266aad6f650fb5341b420e26bb101dd06786fd6b6ae4cb49db584

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page