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 managers | skt | |
|---|---|---|
| Scope | Install, shim, env, tasks, plugins | Install and report |
| PATH | Shims + global pin | Untouched — you prepend bin_dir |
| Output | Human text | JSON on every command |
| Privileges | Often writes outside home | Rootless, one cache dir |
| Recipes | Third-party plugin registry | Declarative TOML you own |