mise
The repository uses mise as the project toolchain manager.
mise is responsible for installing and selecting the exact versions of development tools required by the repository.
It does not replace pnpm or Turborepo.
Responsibilities
The toolchain is divided into clear responsibilities:
mise
├── Node.js
└── pnpm CLI
pnpm
├── workspace dependencies
├── dependency resolution
├── lockfile enforcement
└── package scripts
Turborepo
└── repository task orchestration
Developers use mise to bootstrap the required toolchain and pnpm for normal repository work.
Project configuration
The repository declares its toolchain in:
mise.toml
The current baseline is:
min_version = "2026.8.5"
[tools]
node = "24.19.0"
"npm:pnpm" = "11.21.0"
[settings]
lockfile = true
The versions are pinned exactly so that different developers and automation environments do not silently use different toolchain versions.
Toolchain lockfile
Resolved tool metadata is stored in:
mise.lock
The lockfile is committed to Git.
For Node.js, the lockfile records platform-specific artifacts and checksums for the supported operating-system and CPU combinations.
The pnpm CLI currently uses the npm:pnpm mise backend and therefore uses version-level locking rather than one native standalone artifact per operating system.
Why npm:pnpm
pnpm 11 is installed through mise's npm backend.
This is intentional.
Using the same pnpm installation strategy across Linux, macOS, and Windows avoids operating-system-specific bootstrap logic.
The repository still uses pnpm as its package manager.
npm:pnpm describes only how mise installs the pnpm CLI. It does not make npm the repository package manager.
The architecture is:
mise
├── Node.js 24.19.0
└── npm:pnpm 11.21.0
│
▼
pnpm CLI
│
▼
repository dependencies
Why not Corepack
Corepack is not the package-manager owner for this repository.
The project keeps tool installation under mise so that Node.js and pnpm share a single toolchain manager.
This also avoids making future Node.js upgrades depend on Corepack being bundled with Node.js.
Why not multiple version managers
Do not introduce project-level configuration for additional Node or package-manager version managers such as:
- nvm
- fnm
- Volta
- asdf
- proto
.nvmrc.node-version.tool-versions
Developers may use those tools for unrelated projects, but this repository uses mise as its toolchain source of truth.
Initial setup
After cloning the repository:
mise trust
mise install --locked
pnpm install --frozen-lockfile
After the toolchain has been installed, normal development commands continue to use pnpm directly.
pnpm dev
pnpm lint
pnpm check-types
pnpm build
Updating the toolchain
Toolchain changes must be deliberate.
When changing Node.js or pnpm:
- update
mise.toml - update the root package metadata
- update
pnpm-workspace.yamlwhen the Node target changes - regenerate
mise.lock - run a clean dependency installation
- run all repository quality gates
- validate the supported operating-system matrix in CI
- update the related documentation and ADRs
Do not use floating versions such as latest, lts, 24, or 11 in mise.toml.