> For the complete documentation index, see [llms.txt](https://chameleoncloud.gitbook.io/trovi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chameleoncloud.gitbook.io/trovi/readme.md).

# Trovi

## 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](https://www.chameleoncloud.org/)'s object store and [Zenodo](https://zenodo.org/), 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](https://github.com/ChameleonCloud/jupyterlab-chameleon)) 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](/trovi/api-reference/token/tokengrant.md) 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](mailto:contact@chameleoncloud.org).

## 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:

{% content-ref url="/pages/MlbWcZBHxP2OTw5VgxdT" %}
[API Reference](/trovi/api-reference/artifacts.md)
{% endcontent-ref %}

## 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.

{% embed url="<https://github.com/ChameleonCloud/trovi>" %}
