This is a work in progress and not intended for any production purposes
Note: Works together with https://github.com/kevindeyne/cauldron-recipes
A lightweight Windows SDK manager written in Rust. Cauldron lets you install and switch between versions of developer tools (Java, Maven, Ant, JMeter, ...) from the command line, with automatic PATH and environment variable management. Inspired by https://sdkman.io/
- List available vendors and versions for any supported tool
- Download, verify (SHA-256), and unpack SDK distributions
- Manage installations via Windows directory junctions — no copies, instant switching
- Automatically updates
JAVA_HOME(and equivalent) andPATHin the user registry - Detects and removes conflicting system-level Java entries, with UAC elevation only when needed
- Daily-cached version index fetched from GitHub, with local fallback
- PowerShell wrapper refreshes the current terminal session immediately after install
- Windows 10 or later
- PowerShell 5.1+
- Download or build
cauldron.exeandcauldron.ps1and place them in a directory on yourPATH(e.g.C:\tools\cauldron\). - Use
cauldron(via the.ps1wrapper) instead of callingcauldron.exedirectly so your terminal session is refreshed automatically after installs.
# List available versions for a tool
cauldron list java
# Install a specific version
cauldron install java corretto 21
cauldron install java corretto 25
# Switching versions is just another install
cauldron install java adoptium 21Version index — Cauldron fetches a list of available tools and versions from kevindeyne/cauldron-recipes on GitHub. The index is cached locally at ~/.cauldron/cache.json and refreshed at most once per day.
Install flow — For each install command, Cauldron will:
- Download the zip to
~/.cauldron/downloads/(skipped if already present) - Verify the SHA-256 checksum
- Unpack to
~/.cauldron/candidates/{tool}/{vendor}/{version}/ - Update the junction at
~/.cauldron/current/{tool}to point to the new version - Set
{TOOL}_HOMEand updatePATHinHKCU\Environment - Scan for conflicting system PATH entries and remove them (with UAC prompt if required)
- Broadcast
WM_SETTINGCHANGEso other processes pick up the new environment
Junctions — Cauldron uses Windows directory junctions rather than copying files. Switching versions is instant and costs no extra disk space.
PowerShell wrapper — Because a running terminal inherits a snapshot of the environment at launch, the .ps1 wrapper re-reads HKCU and HKLM after a successful install and patches the current session in place. This means java --version works immediately without opening a new terminal.
cargo build --release
# Outputs: target/release/cauldron.exe
# target/release/cauldron.ps1The build script (build.rs) automatically copies scripts/cauldron.ps1 into the target directory alongside the binary.