.NET SDK Manager

A cross-platform terminal UI for managing .NET SDKs and Runtimes. Install, update, search, and remove — all from a single keyboard-driven interface.

Everything in one screen

No context switching. See your installed SDKs, available updates, runtimes, and search results — all at a glance.

SDK Management

View installed SDKs alongside the latest available versions. Install, uninstall, and update with a single keystroke.

Migrate Existing SDKs

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.

Runtime Management

Full visibility into .NET and ASP.NET Core runtimes. Same install/uninstall/update workflow as SDKs.

Live Search

Non-blocking search with debounce. Type to search, results update as you go. Previous requests are automatically cancelled.

Dark & Light Themes

Press F6 to toggle. The terminal background adapts automatically for a native look in both modes.

Smart Uninstall

Automatically resolves dotnetup install specs — feature bands, channels, and latest — so uninstall just works.

NativeAOT

Compiled ahead-of-time for instant startup. Small binary, no runtime dependency required on the target machine.

Installation

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.

Troubleshooting

macOS: killed / “killed: 9” after updating

If 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

Prerequisites

dotnetup

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.

Keyboard shortcuts

Everything is keyboard-driven. No mouse needed.

Prefer a visual walkthrough?

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.

KeyAction
/ or j / kNavigate rows
TabCycle focus between SDKs, Runtimes, and Setup panels
iInstall selected SDK, Runtime, or Workload
uUninstall selected SDK, Runtime, or Workload
pUpdate to latest in the channel (SDKs/Runtimes) or update all workloads
wOpen the Workloads workspace for the selected installed SDK
Shift+PRepair workloads (Workloads workspace)
mMigrate the selected unmanaged SDK; toggle workload update-mode (Workloads workspace)
Shift+MMigrate all unmanaged SDKs (with confirmation)
rRefresh data from the network
F3Open the search screen
F6Toggle dark / light theme
Ctrl+USelf-update dsm to latest version
EscReturn to main screen from a workspace
q or Ctrl+CQuit

Search

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

CLI

dsm                # Launch with animated banner
dsm --no-splash    # Skip the banner animation
dsm --version      # Print version and exit

Build from source

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

Contributing

Contributions are welcome! Here's how to get involved.

Fork & Clone

Fork the repository and clone it locally.

Branch

Create a branch from main for your feature or fix.

Build & Test

Run dotnet test to make sure everything passes.

Open a PR

Submit a pull request with a clear description of your changes.

Areas where help is appreciated