pinset use
Select or change project tool versions, update configuration and lock, and install the selected tools by default.
View source on GitHub ↗When to use
Use for first selection, upgrades or switching back. use decides versions; install restores versions already decided by the lock.
Examples
pinset use node@24 pnpm@10
pinset use python@3.14 --plan
Result: the first resolves exact versions, updates .pinset/config.toml and .pinset/lock.toml, installs and prepares command entries. The second previews only.
Behavior
Usually fetches official version/artifact metadata. Installation downloads or reuses verified cache. Configuration and lock updates are transactional. Installs and bindings write Pinset home and local project state; Python may prepare .venv. --no-install commits choices and lock only. Preview can access the network without writing state.
pnpm needs a Node selection. After editing selectors or Rust options, explicitly run use tool@selector to regenerate matching locks; installation and execution do not do this automatically. Do not repeat tools in one invocation. See custom tools for other CLIs.
Notes: pnpm 10 CJS, 11 ESM and 12 native releases are supported. Native packages and shared files are locked and verified. A mismatch between project declarations and the locked pnpm/runtime fails instead of switching toolchains.
Parameters, exit codes and common errors
| Parameter | Meaning |
|---|---|
<tool@selector>... | One or more choices, such as node@24. |
--global | Change global defaults. |
--no-install | Commit choices and lock without installation. |
--plan | Resolve and preview only. |
Success exits 0; failure exits 1. PINSET_SELECTOR_REQUIRED means a missing selector; PINSET_SELECTION_DUPLICATE, repeated tools; PINSET_PLATFORM_UNAVAILABLE, no target artifact. Adjust choices rather than bypassing lock verification.