midenup 0.3.1

The Miden toolchain manager
Documentation
---
sidebar_position: 2
title: Manifest
---

# Manifest

## Manifest files

In midenup, a Manifest is a JSON file containing a list of [channels](#channels). There are two "types" of manifests:

- The "upstream" manifest, which contains the set of channels which `midenup` takes to be as the source of truth when determining which components to install, update or downgrade.
  - Most users will use the default manifest which can be found in the repository's [Github Page]https://0xmiden.github.io/midenup/channel-manifest.json. It contains the canonical set of Miden channels.
  - Midenup also supports the use of custom manifests, see [Custom Manifests]#custom-manifests for more information.
- The "local" manifest, which is used to describe the locally installed channels, with some additional information.

### Custom manifests

:::warning
This functionality is still in early stages of development. Currently, this requires writing the channel manifest manually.
:::
Midenup does also support the use of custom, user-made, manifests to install and manage custom toolchains.

These can contain custom versions of components, which can be installed from the user's filesystem, specific git revisions of a repository, etc.

## Channels

Channels are a list of [Components](#component) under a common version/name which are meant to be used in conjunction.

### Stable channel

In midenup, the notion of a "stable channel" is defined to be the latest, non nightly, available channel in the "upstream" manifest.
To denote this, `midenup` tags the channel as `stable` in the Channel's `alias` field in the local manifest.

## Component

Components are the individual binaries/libraries used in Miden. Besides having a version, each Component present in a [channel](#channels) showcases additional metadata like from where to obtain the source code, whether it has a pre-built binary, the file it installs, its dependencies, etc.