guget lets you browse, update, and add NuGet packages across all .csproj, .fsproj, and .vbproj files in a directory β without leaving the terminal. It fetches live version data from your configured NuGet sources and shows you at a glance what's out of date.
| Feature | Description | |
|---|---|---|
| π | Browse projects | Scans recursively for .csproj / .fsproj / .vbproj files, with support for Central Package Management (Directory.Build.props) and imported .props files |
| π | Live version status | Fetches latest versions from NuGet v3 API |
| π‘οΈ | Vulnerability & deprecation tracking | Surfaces CVE advisories and deprecated status per package version, with severity-coloured indicators in the list, detail panel, and version picker. Packages from private/Azure feeds are automatically enriched with vulnerability data from nuget.org |
| β¬οΈ | Update packages | Bump to the latest compatible or latest stable version |
| π | Version picker | Choose any specific version with target-framework and vulnerability indicators |
| π³ | Dependency tree | t shows declared dependencies; T runs dotnet list --include-transitive for the full transitive tree with status icons |
| β | Add packages | Search NuGet and add new package references |
| π | Bulk operations | Update a package across all projects at once |
| π§ | Restore | Run dotnet restore without leaving the TUI |
| π | Multi-source | Respects NuGet.config and global NuGet source configuration. Private feed packages are supplemented with metadata from nuget.org |
| π | Clickable hyperlinks | Package names, advisory IDs, versions, and source URLs are clickable in terminals that support OSC 8 hyperlinks |
| π¨ | Themes | Built-in colour themes: auto, dracula, nord, everforest, gruvbox. Select with --theme / -t |
| Responsive layout | Columns hide progressively on narrow terminals to keep the UI usable at any width | |
| π | Log panel | Real-time internal logs, toggleable with l |
| π | Sources panel | View configured NuGet sources, toggleable with s |
| β | Help overlay | Full keybinding reference, press ? |
To run:
To build:
Linux / macOS
Installs to /usr/local/bin if writable, otherwise ~/.local/bin. Override the install location with GUGET_INSTALL=/your/path.
curl -fsSL https://raw.githubusercontent.com/nulifyer/guget/main/install.sh | bashwget -qO- https://raw.githubusercontent.com/nulifyer/guget/main/install.sh | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/nulifyer/guget/main/install.ps1 | iexFetches the latest release from GitHub, installs to %LOCALAPPDATA%\Programs\guget, and adds it to your user PATH automatically. Override the install location with $env:GUGET_INSTALL.
Windows note: The binary is not yet code-signed, so Windows SmartScreen may warn on first run. Running from a terminal (PowerShell or cmd) bypasses this.
Manual download
Grab the archive for your platform from the Releases page and place the binary somewhere on your PATH.
Build from source
git clone https://github.com/nulifyer/guget
cd guget/guget
go build -o guget # Linux / macOS
go build -o guget.exe # Windowsguget [options] [project]
Usage:
no-color -nc, --no-color
Disable colored output in the terminal
verbosity -v, --verbose
Set the logging verbosity level
[<empty>, none, error, err, warn, warning, info, debug, dbg, trace, trc]
project -p, --project
Set the target project directory (defaults to current working directory)
theme -t, --theme
Color theme
[auto, dracula, nord, everforest, gruvbox, etc]
sort-by -o, --sort-by
Initial sort order: status, name, source, current, available
Append :asc or :desc for direction (default: status:asc)
log-file -lf, --log-file
Write all log output to this file (in addition to the TUI log panel)
version -V, --version
Print the version and exit
Examples:
# Scan the current directory
guget
# Scan a specific solution folder
guget ~/src/MyApp
# Enable verbose logging
guget -v debug
# Use the dracula theme
guget -t dracula
# Sort by available updates, newest first
guget -o available:desc| Key | Action |
|---|---|
Tab / Shift+Tab |
Cycle panel focus (Projects β Packages β Detail β Logs) |
β / k |
Move up |
β / j |
Move down |
Enter |
Confirm / move focus from Projects to Packages |
Esc / q / Ctrl+C |
Quit (main screen) / Close (overlay) |
| Key | Action |
|---|---|
u |
Update to latest compatible version (this project) |
U |
Update to latest compatible version (all projects) |
a |
Update to latest stable version (this project) |
A |
Update to latest stable version (all projects) |
v |
Open version picker overlay |
o |
Cycle sort mode (status, name, source, current, available) |
O |
Toggle sort direction (asc / desc) |
d |
Remove selected package (prompts for confirmation) |
t |
Show declared dependency tree for the selected package |
| Key | Action |
|---|---|
r |
Run dotnet restore (selected project) |
R |
Run dotnet restore (all projects) |
T |
Show full transitive dependency tree |
/ |
Search NuGet and add a new package |
| Key | Action |
|---|---|
l |
Toggle log panel |
s |
Toggle sources panel |
? |
Toggle keybinding help |
[ / ] |
Resize focused panel |
| Key | Action |
|---|---|
β / Ctrl+P |
Previous result |
β / Ctrl+N |
Next result |
Enter |
Select package |
Esc |
Close |
| Key | Action |
|---|---|
β / k |
Previous version |
β / j |
Next version |
u |
Apply version (this project) |
U |
Apply version (all projects) |
Enter |
Apply version |
Esc / q |
Close |
| Icon | Meaning |
|---|---|
β² |
Installed version has known CVE vulnerabilities |
β |
Error fetching version info |
β |
Newer compatible version available |
β¬ |
Newer stable version available (beyond compatible) |
~ |
Package is deprecated in the registry |
β |
Up to date |
- On startup,
gugetwalks the target directory and parses every.csproj/.fsproj/.vbprojit finds (skippingbin,obj,node_modules,.git, etc.). - A background goroutine queries your configured NuGet sources for the latest version data for each package.
- The UI updates as results arrive β no waiting for a full scan before you can start navigating.
- When you update a package,
gugetrewrites the relevant project file(s) in place.
