midenup
midenup is the Miden toolchain installer. One install gives you a unified miden command that delegates to the Miden VM, compiler (midenc + cargo-miden), client, stdlib, and transaction kernel — all versioned together as a single release channel.
midenup on GitHub ↗
The installer repo. Tracks the canonical channel manifest and publishes prebuilt toolchain releases.
Channel manifest ↗
Machine-readable inventory of available toolchain channels and the component versions each one pins.
Install
cargo install midenup && midenup init
midenup init sets up $MIDENUP_HOME, writes a miden symlink into $CARGO_HOME/bin, and prepares the toolchain cache. Since most Rust users already have $CARGO_HOME/bin on their PATH, the miden command is ready immediately.
Components it manages
Miden VM
The MASM interpreter, prover, and verifier. Used by every Miden program.
Compiler
midenc and cargo-miden — the Rust frontend that compiles #[miden] code to MASM.
Miden client
miden-client — accounts, transactions, notes, proving.
Standard library
miden-stdlib — the canonical MASM standard library.
Transaction kernel
miden-base — the transaction kernel that runs inside every account and note script.
(more coming)
Additional Miden components will be added to midenup as they ship.
Toolchain management
Install a channel
midenup install stable # latest matching component set
midenup install 0.14 # pin to a specific release line
Switch the active toolchain
midenup set 0.14 # pin for the current project (writes miden-toolchain.toml)
midenup override 0.14 # set the system-wide default
midenup show active-toolchain # which one is active right now?
A miden-toolchain.toml in the current directory always wins — otherwise the system default applies, falling back to stable if none is set.
Uninstall
midenup uninstall 0.14
Delete $MIDENUP_HOME to uninstall midenup itself. Find its location with midenup show home.
The miden entry point
miden delegates to the right component based on the subcommand. Common aliases:
miden command | Delegates to | What it does |
|---|---|---|
miden new | cargo miden new | Create a new Miden Rust project |
miden build | cargo miden build | Build the project |
miden new-wallet | miden-client new-wallet --deploy | Create and deploy a wallet account |
miden account | miden-client account | Create or inspect a local account |
miden faucet | miden-client mint | Fund an account from the faucet |
miden deploy | miden-client -s public --account-type regular-account-immutable-code | Deploy a public, immutable-code contract |
miden call | miden-client account --show | Read state from an account (view) |
miden send | miden-client send | Send a state-changing transaction |
miden simulate | miden-client exec | Dry-run a transaction without committing |
Everything outside the alias table is forwarded to the underlying binary — e.g., miden exec … goes straight through to miden-client exec.