kit
Verified tool registry manager -- manages developer toolchains from git-based registries.
kit resolves tool versions across multiple registries, generates mise configuration, verifies checksums and cosign signatures, and automates upstream update tracking.
Install
The binary is called kit.
Quick start
Commands
| Command | Description |
|---|---|
kit setup |
One-time config, optionally add a registry |
kit sync |
Pull registries, resolve, generate mise config, install |
kit status |
Installed vs registry, drift detection, verification strength |
kit diff |
Show changes between lockfile and registry |
kit upgrade |
Interactive tool update workflow |
kit verify |
Re-verify all installed binaries (cosign + checksums) |
kit audit |
Check tools for known security advisories |
kit add <name> <source> |
Query upstream, generate tool definition |
kit push <name> |
Commit and push a tool definition |
kit remove <name> |
Remove a tool from a writable registry |
kit pin <name> <version> |
Pin a tool's version locally |
kit unpin <name> |
Remove a local pin |
kit sense |
Detect upstream changes, classify updates (CI mode) |
kit check |
Scan upstream for newer versions (CI mode) |
kit evaluate |
LLM review for edge cases (CI mode) |
kit apply |
Apply updates, create MR (CI mode) |
kit verify-registry |
Validate all tool definitions before merge (CI mode) |
kit init [--ci] |
Scaffold a new registry |
kit completions <shell> |
Shell completions (bash/zsh/fish) |
kit man-page |
Generate man page |
Registries
A registry is a git repo with per-tool TOML definitions:
tools/
_meta.toml # registry metadata + policy
gh.toml # one file per tool
muxr.toml
...
Each tool definition is self-contained:
[]
= "gh"
= "github"
= "cli/cli"
= "2.89.0"
= "v"
= "gh"
= "high"
= "cli/cli"
[]
= "gh_{version}_macOS_arm64.zip"
= "gh_{version}_linux_amd64.tar.gz"
[]
= "gh_{version}_checksums.txt"
= "sha256"
[]
= "github-attestation"
Sources: github, gitlab, npm, crates, direct, rustup
Smart kit add queries upstream and auto-populates:
Multi-registry
Configure multiple registries in ~/.config/kit/config.toml. First
registry wins when tools overlap. Local pins override.
[[]]
= "nomograph"
= "https://gitlab.com/nomograph/kits.git"
[[]]
= "corp"
= "https://gitlab.com/corp/tools.git"
= true
Security
kit is a supply chain tool. Security is enforced at every layer:
- Input validation: all fields validated against strict regex patterns
- TOML injection prevention: mise config built via toml_edit API
- Supply chain attack detection: same version + changed checksum = hard stop
- Dependency confusion prevention: registry migration requires confirmation
- Cosign verification: anchored certificate identity match
- Registry URL restriction: https:// and git@ only
- Symlink rejection: malicious registries cannot escape tools/ directory
- HTTPS-only: all HTTP clients enforce TLS
46 security findings identified and addressed across 5 adversarial review passes.
License
MIT -- Nomograph