ado is a Python platform for designing computational 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.
| Concept | Role |
|---|---|
| Discovery Space | Defines what to measure, how to measure it (via Experiments, which are pluggable python functions), and where to store results. |
| Operation | You explore or analyse a Discovery Space using operations. You can select from different operators to perform different types of operations. Operators are also pluggable python functions. |
| Sample Store | Stores the results of measurements, and enables operations to transparently reuse existing results (memoization). |
The following example runs a small experiment campaign that samples combinations
of mass and volume, computes density at each point, and stores the
results.
Install ado-core (a virtual environment is recommended). For complete
instructions see the
install guide:
pip install ado-coreClone the repository and install the density example package:
git clone https://github.com/IBM/ado.git
cd ado
pip install -e examples/density_example/Run the experiment campaign:
ado create operation -f examples/density_example/operation.yaml --with space=examples/density_example/space.yamlOnce the operation finishes, inspect the collected measurements:
ado show measurements operation --use-latestFor a deeper walkthrough, see the density example tutorial.
ado's typed resources, expressive CLI, and bundled agent skills make it a natural fit for agentic research workflows. Once prompted with a research problem, an agent can design the Discovery Space, write new experiments or reuse existing ones, and run the full exploration loop:
- 🤖 Bundled agent skills: ready-made skills guide agents through end-to-end discovery workflows — from formulating a problem to analysing results
- 🔍 Self-describing resources: experiments and operators declare their required properties, so an agent can discover what's available and what's needed without parsing code
- 🧱 Validated schemas: research intent is expressed as structured, validated configurations — constraining the agent to well-defined inputs rather than free-form code generation, reducing hallucinations and keeping experiments repeatable
- ✅ Safe execution loop:
ado templateand--dry-runsupport a tight generate → validate → fix → run cycle before any work is committed - 📦 Structured & queryable results: all measurements and metadata are stored in a structured database, giving agents clean access to data for analysis and refinement
- 🔗 Full provenance: every result is annotated with resource relationships and plugin versions, so an agent always knows where data came from and how to reproduce it
Here are some examples of what the team has built with ado:
- 🧠 Fine-tuning performance benchmarking
- 📈 Inference performance benchmarking (using vLLM bench or guidellm)
- 🔮 Predictive performance model creation
Contributions are welcome — new actuators, operators, bug fixes, and documentation improvements. To set up a development environment, run the test suite, or understand code style and commit conventions, see CONTRIBUTING.md, DEVELOPING.md and tests/README.md.
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).