ado is a Python platform for designing experiment campaigns and
executing them at scale. It enables distributed teams of researchers and
engineers to collaborate, execute experiments, and share data.
You can extend ado across different domains through its plugin model — often as simple as decorating a Python function. By integrating your methodology, you gain cross-cutting capabilities — such as parallel execution, data provenance, and a unified CLI — alongside a structured foundation that allows AI coding agents to autonomously formulate and run your experiments.
- 🧑💻 Using
adoassumes familiarity with command line tools. - 🛠️ Developing
adorequires knowledge of Python.
- 💻 CLI: Our human-centric CLI follows best practices
- 🤝 Projects: Allow distributed groups of users to collaborate and share data
- 🔌 Extendable: Easily add new experiments or optimizers and other tools
- ⚙️ Scalable: We use Ray as our execution engine, allowing experiments and tools to scale easily
- ♻️ Automatic data-reuse: Avoid repeating work with
transparent reuse of experiment results;
ado's internal protocols ensure this happens only when it makes sense - 🔗 Provenance: Relationships between data and operations are
automatically tracked.
The versions of
ado-coreand every plugin used to create a resource are also recorded, keeping results reproducible and debuggable - 🔎 Optimization and sampling: Out-of-the-box, leverage powerful optimization methods via Ray Tune or use our flexible built-in sampler
- 🤖 Coding agents: Supercharge your workflow.
ado's typed resources and bundled skills enable AI assistants to autonomously formulate, validate, and run experiments. Learn more
We have developed ado plugins providing advanced capabilities for performance
testing of foundation models:
- ⏱️ Fine-tuning performance benchmarking
- ⏱️ Inference performance benchmarking (using vLLM bench or guidellm)
- 🔮 Predictive performance model creation
Install ado from PyPI (a virtual environment is recommended). For complete
instructions see the
install guide:
pip install ado-coreThen try:
ado get contextsYou will see a context named local — a local sandbox you can use straight
away. To see the built-in operators:
ado get operatorsNext, follow the short
random-walk tutorial for a
hands-on introduction to how ado works.
A basic installation of ado only requires a recent Python version (3.10 to
3.14). This will allow you to run
many of our examples and explore
ado features.
Some advanced features have additional requirements:
- Distributed Projects (Optional): To support projects with multiple users you will need a remote, accessible MySQL database. See here for more details
- Multi-Node Execution (Optional): To support multi-node or scaled execution you may need a multi-node RayCluster. See here for more details
In addition, ado plugins may have additional requirements for executing
realistic experiments. For example:
- Fine-Tuning Benchmarking: Requires a RayCluster with GPUs
- vLLM Performance Benchmarking: Requires an OpenShift cluster with GPUs
To install ado from source (for development or to track the latest changes):
git clone https://github.com/IBM/ado.git
cd ado
pip install .Detailed installation instructions are available at https://ibm.github.io/ado/getting-started/install/.
To set up a development environment, run the test suite, or understand code style and commit conventions, see DEVELOPING.md and tests/README.md.
This video shows listing actuators and getting the details of an experiment.
Check the demo page for more videos.
step1_trimmed.mp4
For an overview of the design and architecture of ado, see
our Journal of Open Source Software paper.
If ado has been useful in your research, please cite us using:
@article{Johnston_ado_a_Python_2026,
author = {Johnston, Michael A. and Pomponio, Alessandro},
doi = {10.21105/joss.10304},
journal = {Journal of Open Source Software},
month = may,
number = {121},
pages = {10304},
title = {{ado: a Python framework for computational experimentation and benchmarking}},
url = {https://joss.theoj.org/papers/10.21105/joss.10304},
volume = {11},
year = {2026}
}You can also click "Cite this repository" in the GitHub sidebar for alternative formats such as APA.
This project is partially funded by the European Union through the Smart Networks and Services Joint Undertaking (SNS JU) under grant agreement No. 101192750 (Project 6G-DALI).