# Project Versions

Project Versions let you capture, restore, and compare specific states of your project data over time. Combined with the visual MLOps Workflow, this ensures reproducibility, traceability, and efficient collaboration across labeling, augmentation, training, and evaluation stages.

Project Versions currently support the following project types:

* Images
* Videos
* Volumes

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-6f232aae4deecdd9fd24510040892c4bd96a0d41%2Fproject-versions.png?alt=media" alt="Project Versions Overview"><figcaption></figcaption></figure>

## Why tracking and reproducibility matter

* Data evolves over time. Track when and how changes occur to maintain model accuracy.
* Avoid confusion after multiple iterations. Keep a clear history of which datasets and models were used.
* Ensure reproducibility and collaboration. Make it easy to reproduce results and share accurate insights across teams.

## Key capabilities

* **Version control:** Save and manage different states of a project.
* **Centralized history:** View and describe all changes in one place.
* **Instant previews:** Create read-only snapshots to quickly inspect data without restoring the full project (Images and Videos only).
* **One-click restore:** Create a separate project that represents the current project's state at the selected version.
* **Flexible metadata:** Edit version titles and descriptions at any time to keep context clear.
* **Efficient storage:** Versions are stored in a secure binary format. Previews only store unique annotations, while media files are linked, not duplicated.

{% hint style="info" %}
**Note:** Project Versions are available on Pro and Enterprise plans.
{% endhint %}

## Versions tab

Use the **Versions** tab on a project to:

* Create versions at any stage (data upload, annotation, augmentation, or transformation).
* Edit the **Title** and **Description** of existing versions for future reference.
* Access an instant Preview of the data by clicking on the version's Title link.
* Restore a prior state by creating a new project from a selected version.

{% hint style="warning" %}
You can create a version only if the project has changed since the last version. If there are no changes, creating a new version is not available.
{% endhint %}

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-19430d4f6569322f8f8305fc0a715c665f84bcf0%2Fproject-versions-page.png?alt=media" alt="Versions Tab Interface"><figcaption></figcaption></figure>

## Version Previews

For Image and Video projects, you can instantly inspect a version's data using **Project Previews**. A preview acts like a standard project but operates in a [read-only state](https://docs.supervisely.com/data-organization/project-settings#read-only-mode), allowing you to verify data without waiting for a full project restoration from a binary version.

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-352e26e4511c5ad744ac5f5b3f387100bddbdaa7%2Fpreview-page.png?alt=media" alt="Version Preview Page"><figcaption></figcaption></figure>

### Creating and managing Previews

* **During creation:** Check the **Enable Preview** flag when creating a new version to automatically generate a snapshot accessible in the well-known UI.
* **For existing versions:** Retroactively enable previews for older versions. This is especially useful for checking versions automatically generated by apps during training pipelines.

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-13ce2f0c9b36c68c5b1baf09d26d6e7fe563a630%2Fenable-preview.png?alt=media" alt="Enabling Preview"><figcaption></figcaption></figure>

* **Restoring state:** If a preview snapshot is accidentally altered, you can easily restore it to its original version state.

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-96272624a4989c6df2600a8313f251ef4660d5f4%2Frestore-preview.png?alt=media" alt="Restore Preview"><figcaption></figcaption></figure>

### Using Previews

Once enabled, access the preview by clicking the version's **Title** in the Versions tab. Inside the preview snapshot, you can:

* Open images or videos in the labeling toolbox to visualize annotations.
* Use **AI Search** and data filtering to find specific assets.
* Clone the snapshot or download it using ecosystem apps.
* Perform any standard project action that does not modify the data state.

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-6eaabd04e0fe83441bcc503fe1bebd7dd22f0da0%2Flabeling-tool.png?alt=media" alt="Labeling Tool"><figcaption></figcaption></figure>

💡 **Tip:** Previews are highly storage-efficient. They only consume local storage for annotations. Media data (images or videos) is safely linked without duplication.

## Typical workflow

1. Import data and annotate with labeling tools.
2. Create a version (with **Enable Preview** checked) to capture the baseline state before transformations.
3. Apply augmentations, filtering, or other data operations.
4. Train a model — training apps automatically create versions and produce checkpoints and reports.
5. Quickly inspect auto-generated versions using Previews.
6. Compare versions and, if needed, restore to a previous state to branch experiments.

## Visualizing data evolution with MLOps Workflow

The MLOps Workflow provides a visual map of how data flows through apps and operations in your project. Use it to inspect application sessions, navigate to projects and files, and understand how each transformation impacts results.

* **Preview Integration:** Previews are fully integrated into the workflow. You can see preview availability and access them directly from the MLOps Workflow cards. Creating a preview from an existing version is also documented on the workflow graph.

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-004ec4e6e975cc04b64ce378c0a8c44b5f5dca23%2Fmlops-integration.png?alt=media" alt="MLOps Integration"><figcaption></figcaption></figure>

* **Data operations include:**
  * Augmentation (cropping, resizing, rotation, blurring, adding noise, etc.)
  * Annotation transformations (convert shapes, merge, rasterize)
  * Dataset split/merge/subsample/filter
  * Training data generation and format conversions

See the dedicated guide for details and best practices: [MLOps Workflow](https://docs.supervisely.com/data-organization/mlops-workflow).

### Minor versions on the Workflow graph

Minor versions indicate that the project changed after the last major version was cut and before the next major version is created.

On the screenshot below, minor versions are underlined (e.g., **1.1** and **2.1**).

<figure><img src="https://1080806899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M4BHwRbuyIoH-xoF3Gv%2Fuploads%2Fgit-blob-ad4fbe39a1cadfc589e33ddeb353200937ee454e%2Fproject-versions-minor.png?alt=media" alt="Minor Versions in MLOps Workflow"><figcaption></figcaption></figure>

* Shown as 1.1, 2.1, ... where 2 is the last restorable (major) version.
* Each minor version reflects the current state of the project at that point on the graph.
* You cannot restore a project from a minor version; only major versions are restorable.
* Minor versions appear automatically on the graph when the project changes (manual edits or app sessions) without cutting a new major version.
* If nothing changed after a major version, minor versions will not appear.

**Example** (as shown on the screenshot): You cut version **2** (major). After that, you changed the project (e.g., edited annotations manually or ran an app without cutting a new major version) — the graph displays **2.1** to indicate the project state has changed since version 2.
