toolchain manager

The exact version. Nothing else.

skt installs a pinned runtime or CLI into a rootless, versioned cache and prints where the binary landed. Same toolchain on your laptop, in CI and in every Space.

One command, one answer

Give skt a tool@version. It resolves the full version, downloads, verifies, caches, and returns the path.

resolve→download→verify→cache→print path
$ skt install node@24 --json
{ "tool": "node", "requested": "24", "resolved": "24.16.0",
  "bin_dir": "~/.cache/skt/node/24.16.0/linux-x64/bin",
  "cached": true }

Built on four principles

Rootless

No sudo, no system package manager. Nothing is written outside the cache directory you own.

No shims

skt never wraps a binary or rewrites a global pin. It tells you where the binary is; your shell or pipeline owns PATH.

JSON-first

Every command answers in JSON with --json. A pipeline reads the path, it never scrapes text.

Verified cache

Each artifact is checksum-verified, then cached by resolved version. A warm hit skips the network entirely.

Smaller on purpose

Same family as mise, asdf or proto — with a deliberately narrower job.

Classic version managersskt
ScopeInstall, shim, env, tasks, pluginsInstall and report
PATHShims + global pinUntouched — you prepend bin_dir
OutputHuman textJSON on every command
PrivilegesOften writes outside homeRootless, one cache dir
RecipesThird-party plugin registryDeclarative TOML you own

15 tools ready to pin

Runtimes and CLIs ship as declarative recipes. Add or override one with a TOML file.

The toolchain your CI runs should be the one you ran locally.

Pin it once.
Read the skt docs →