pinset
中文
PINSET LATEST RELEASEExplore the release

Every runtime.
Right in place.

Pinset manages project toolchains, locks exact versions, and records actual execution evidence. Lock the toolchain, inspect execution evidence, and run project commands with the selected versions.

Install Pinset latest stableMIT · Free & open source

Release details have not loaded. The installer fetches the latest stable release by default; you can also view releases on GitHub.

curl -fsSL https://raw.githubusercontent.com/Future-Element/pinset/main/install.sh | sh
Start with your next project →
~/your-next-project
protocol = "pinset/3"schema = 3project_id = "example-project" [tools]node = "24"pnpm = "11"python = "3.14"

Configuration excerpt · Exact artifacts live in .pinset/lock.toml.

One project. One runtime set.→

THE TOOLS YOU KNOW. ONE PROJECT ENVIRONMENT.

Node.jspnpmBunGoPythonJavaRustFlutter / Dart
BUILT FOR EVERYDAY DEVELOPMENT

Set your toolchain.
Get back to building.

From a local checkout to an automated build, make the environment reproducible, explainable, and verifiable.

01 /

Lock the whole toolchain

Node.js, Python, Rust, and more share one project configuration. Keep version intent separate from exact artifacts, then install from the lockfile.

pinset install↗
02 /

Know why a version runs

Each project has independent selections and exact installations. Inspect the source, routing, and diagnostics behind every selection.

pinset which --explain↗
03 /

Run project commands with the selected environment

Upgrade or switch versions with use, then build and test with your project commands. exec and shims use the same locked environment.

pinset exec -- ./mvnw verify↗
QUICKSTART

Declare it once.
Use it everywhere.

Install Pinset and set up your shell, then choose the tools for your project.

Shell setup guide →
.pinset/config.toml
+ .pinset/lock.toml
01

Create a project. Choose versions.

Run inside your project to create its configuration and exact lockfile.

Project terminal
pinset init
pinset use node@24 pnpm@11 python@3.14 --no-install
pinset install
02

Run the commands you already know.

With your shell configured, commands route to the project's locked tools.

Terminal
node --version
python --version
pinset which node --explain
03

Bring your team and CI along.

Commit .pinset/config.toml and .pinset/lock.toml, then install the locked toolchain on the next machine.

New machine / CI
pinset install
FIT YOUR WORKFLOW

From an existing project to an automated build.

Import version declarations, manage more CLI tools, and bring the same toolchain to CI.

01 /

Bring existing projects along

Scan .tool-versions, package.json, and other version files. Review the plan before importing, while keeping your existing Pinset selections.

pinset import↗
02 /

Manage your other CLI tools

Describe an HTTPS download for tools such as Terraform. Lock the version and SHA-256, then use the same installation and command routing.

Custom CLI guide↗
03 /

Restore and check in CI

setup-pinset installs Pinset, caches tools, restores the lockfile, and checks the result. Save check's JSON report for scripts and build artifacts.

GitHub Action and JSON reports↗
TOOLCHAINS

More than one language.
Just one workflow.

Manage eight toolchains, including the complete OpenJDK. Each tool keeps its commands. Pinset puts them in the right place.

01

Node.js

node · npm · npx
02

pnpm

pnpm
03

Bun

bun · bunx
04

Go

go · gofmt
05

Python

python · pip
06

Java

Temurin JDK
07

Rust

cargo · rustc
08

Flutter / Dart

flutter · dart

Available on Windows, macOS, and Linux. Architecture support depends on each tool's upstream releases. View the support matrix ↗ · Manage other CLI tools →

CONFIDENCE THROUGH VERIFICATION

A source for every version.
A policy for every boundary.

Integrity checks, explicit project policy, and diagnostics make “why this version?” a question you can answer.

DOCUMENTATION

From your first command to your whole workflow.

Explore all 29 commands →
GOOD QUESTIONS

Before you get started.

What is Pinset?

Pinset manages project toolchains, locks exact versions, and records actual execution evidence. It uses .pinset/config.toml to declare project tools and policy, and .pinset/lock.toml to record exact versions, platform artifacts, and integrity metadata.

Do I need to set up my shell after installation?

Yes. Pinset does not edit shell profiles automatically. Follow the self shell command reference for Bash, Zsh, Fish, or PowerShell so project commands route to Pinset-managed versions.

Can my team and CI use the same versions?

Commit .pinset/config.toml and .pinset/lock.toml, then run pinset install on another machine or in CI. Each required platform must have a supported runtime artifact.

Which operating systems are supported?

Pinset supports Windows, macOS, and Linux. Architecture support depends on each tool's upstream releases. For example, Flutter does not provide a Linux ARM64 SDK compatible with the current installation model, so Pinset reports an unsupported target.

Does Pinset fall back to system runtimes?

Commands prefer project selections, then Pinset global defaults for omitted tools, while enforcing project policy. Enable require_project_tools for strict project routing. There is no silent fallback to system PATH. which --explain shows how a command was resolved.

Start your next project in the right place.

Free and open source. A development environment that belongs to your project.

Install Pinset ↑Read the docs →