Trovi

Practical Open Reproducibility

What is Trovi?

Trovi is a public service and open API that provides storing, referencing, and reproducing research artifacts. Applications can integrate with the Trovi API to provide the following capabilities to their users:

  • Artifact upload and storage: users can upload files representing their experiment in whatever form appropriate (e.g., documentation, Jupyter notebooks, setup scripts, data sets, example output). Currently Trovi integrates with several storage backends, notably Chameleon's object store and Zenodo, though future integrations are possible.

  • Artifact lifecycle management: artifact owners can publish new versions of their artifact and apply useful metadata (e.g., tags, short descriptions, author list).

  • Sharing artifacts, publicly or during embargo/development: generate private links that allow others to access the artifact's contents (e.g., for evaluation), or publish particular versions of the artifact for open access, including DOI assignment.

  • Instantiate artifacts within a variety of environments: users can "re-play" an artifact, opening it on their local machine or within an open testbed environment. Testbeds can leverage existing general-purpose integrations (e.g., JupyterLab) or build their own.

  • Build upon a catalog of relevant research artifacts and examples: users can "fork" existing artifacts and create their own revision, or use existing work as a template or example for future research.

What is an Artifact?

Currently, Trovi makes only a few assumptions about an Artifact:

  • It contains some tarball of contents representing the portable portion of the artifact. This means source code, instructions, notebooks, and examples.

  • External requirements, such as disk images hosted on a target infrastructure, datasets, etc., can be specified with link references (pointers.) These links are opaque from Trovi's point of view, enabling integrations specific to third-parties.

Who can use Trovi?

Trovi's authentication model allows federation with select partners, enabling any user of a participating entity in the federation to utilize the API or any of its integrations. If you're interested in becoming part of the Trovi federation, please contact us.

Trovi API Reference

Dive a little deeper and start exploring our API reference to get an idea of everything that's possible with the API:

Want to contribute, or just peek at the source code?

Take a look at our GitHub repository! There, you can read the source code, or open an issue, discussion, or pull request.

Last updated