A cross-platform terminal UI for managing .NET SDKs and Runtimes. Install, update, search, and remove — all from a single keyboard-driven interface.
No context switching. See your installed SDKs, available updates, runtimes, and search results — all at a glance.
View installed SDKs alongside the latest available versions. Install, uninstall, and update with a single keystroke.
Already have .NET installed outside dotnetup? dsm flags it as Unmanaged and brings it under management — one SDK with m, or all of them with Shift+M.
Full visibility into .NET and ASP.NET Core runtimes. Same install/uninstall/update workflow as SDKs.
Non-blocking search with debounce. Type to search, results update as you go. Previous requests are automatically cancelled.
Press F6 to toggle. The terminal background adapts automatically for a native look in both modes.
Automatically resolves dotnetup install specs — feature bands, channels, and latest — so uninstall just works.
Compiled ahead-of-time for instant startup. Small binary, no runtime dependency required on the target machine.
One command to install. No .NET runtime needed — it's a self-contained native binary. Running the same command again updates to the latest version.
Works on Bash, Zsh, and Fish. Installs to ~/.local/bin and adds it to your PATH automatically.
Install or update:
curl -fsSL https://raw.githubusercontent.com/shahabganji/dotnet-sdk-tui/main/install/install.sh | bash
Uninstall:
curl -fsSL https://raw.githubusercontent.com/shahabganji/dotnet-sdk-tui/main/install/uninstall.sh | bash
After installation, open a new terminal and run dsm. The app will notify you when updates are available — press Ctrl+U to self-update.
killed / “killed: 9” after updatingIf dsm exits immediately with killed (signal 9) right after an update, an older installer replaced the binary in place, which invalidates its code signature on macOS. Re-run the install command to fix it — the installer now replaces the binary atomically, so future updates are safe:
curl -fsSL https://raw.githubusercontent.com/shahabganji/dotnet-sdk-tui/main/install/install.sh | bash
dsm uses dotnetup, the official .NET SDK acquisition tool, for installing and managing SDKs and runtimes. You can install dotnetup from within dsm (press i in the Setup panel), or set it up manually by following the dotnetup documentation.
Everything is keyboard-driven. No mouse needed.
The .NET step-by-step guide shows every flow with real screenshots — launching dsm, installing dotnetup, migrating SDKs you already have, installing & searching for SDKs, managing workloads per SDK, and uninstalling versions. On macOS, the Homebrew guide covers browsing, searching, installing, upgrading, and removing brew packages.
| Key | Action |
|---|---|
↑ / ↓ or j / k | Navigate rows |
Tab | Cycle focus between SDKs, Runtimes, and Setup panels |
i | Install selected SDK, Runtime, or Workload |
u | Uninstall selected SDK, Runtime, or Workload |
p | Update to latest in the channel (SDKs/Runtimes) or update all workloads |
w | Open the Workloads workspace for the selected installed SDK |
Shift+P | Repair workloads (Workloads workspace) |
m | Migrate the selected unmanaged SDK; toggle workload update-mode (Workloads workspace) |
Shift+M | Migrate all unmanaged SDKs (with confirmation) |
r | Refresh data from the network |
F3 | Open the search screen |
F6 | Toggle dark / light theme |
Ctrl+U | Self-update dsm to latest version |
Esc | Return to main screen from a workspace |
q or Ctrl+C | Quit |
Open search with F3, then just start typing. Results update live with debounce — no enter key needed.
# Search by channel version / Search: 10 # Shows all .NET 10 SDKs and runtimes # Search by keyword / Search: preview # Shows all preview/RC versions / Search: latest # Shows latest versions across supported channels / Search: lts # Shows long-term support versions
dsm # Launch with animated banner dsm --no-splash # Skip the banner animation dsm --version # Print version and exit
Requires .NET 10 SDK or later.
# Clone the repository git clone https://github.com/shahabganji/dotnet-sdk-tui.git cd dotnet-sdk-tui # Run in development dotnet run --project src/DotnetSdkTui # Run tests dotnet test # Publish a NativeAOT binary dotnet publish src/DotnetSdkTui -c Release -r osx-arm64
Contributions are welcome! Here's how to get involved.
Fork the repository and clone it locally.
Create a branch from main for your feature or fix.
Run dotnet test to make sure everything passes.
Submit a pull request with a clear description of your changes.