A modern TUI-based Node.js global packages manager that works across multiple Node version managers (fnm, nvm, n, and local installations).
- ๐ฏ Multi-Manager Support: Works seamlessly with fnm, nvm, n, and local Node installations
- ๐จ Beautiful TUI: Modern terminal UI with mouse support, keyboard navigation, and intuitive focus management
- ๐ฆ Package Management: List, update, uninstall global npm packages across different Node versions
- ๐ Automatic Refresh: Packages list automatically refreshes after updates/uninstalls
- ๐ Internationalization: Built-in support for English and Chinese (auto-detects system locale)
- ๐ฑ๏ธ Mouse Support: Click to switch focus panels, scroll with mouse wheel
- ๐ Outdated Detection: Shows which packages need updates with version comparison
- โก Fast Search: Filter packages and Node versions instantly
- ๐ญ IME Friendly: Handles Chinese input methods properly without interruption
curl -fsSL https://raw.githubusercontent.com/Way-To-AGI/ngm/main/install.sh | bashDownload the appropriate binary for your system from the Releases page:
Linux/macOS:
# Download and extract (example for Linux AMD64)
curl -L https://github.com/Way-To-AGI/ngm/releases/latest/download/ngm-linux-amd64.tar.gz | tar xz
sudo mv ngm /usr/local/bin/Windows:
# Download and extract
Invoke-WebRequest -Uri "https://github.com/Way-To-AGI/ngm/releases/latest/download/ngm-windows-amd64.exe.zip" -OutFile "ngm.zip"
Expand-Archive -Path "ngm.zip" -DestinationPath "."git clone https://github.com/Way-To-AGI/ngm.git
cd ngm
go build -o ngm ./cmd/ngm
sudo mv ngm /usr/local/bin/ # or add to your PATHngm
# or with specific language
ngm --lang zh-CN # Chinese
ngm --lang en # English# List detected Node version managers and versions
ngm versions
# List global packages for current Node
ngm list
# List outdated packages
ngm outdated
# Update packages
ngm update package1 package2
# Uninstall packages
ngm uninstall package1
# Export/Import package lists
ngm export > packages.txt
ngm import < packages.txt- โ/โ or h/l: Switch focus between panels (Nodes/Packages/Outdated)
- Tab: Cycle focus forward (Nodes โ Packages โ Outdated โ Nodes)
- Shift+Tab: Cycle focus backward
- Mouse Click: Click on any panel to focus it
- Mouse Wheel: Scroll within focused panel
- Space: Select/deselect current package
- a: Select/deselect all visible packages
- u: Update selected packages
- d: Uninstall selected packages (only in Packages panel)
- r: Refresh package lists
- /: Search/filter current list
- Enter: Switch Node version (in Nodes panel)
- q: Quit
โฌก ngm [nvm v20.18.1]
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โธ nvm โ โ Packages โ โ Outdated โ
โ โ v20.18.1 โ [ ] @anthropic-ai/claude-codeโ [ ] @anthropic-ai/claude-codeโ
โ v22.15.0 โ [ ] npm โ 2.0.76 -> 2.0.77 โ
โ v22.11.0 โ [ ] typescript โ [ ] npm โ
โ v18.20.5 โ [ ] yarn โ 10.9.0 -> 10.9.1 โ
โ v16.20.2 โ [x] eslint โ [ ] yarn โ
โ v14.21.3 โ [x] prettier โ 1.22.22 -> 1.22.23 โ
โ v10.24.1 โ [ ] webpack โ โ
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ Logs โ โ Details โ
โ update: done โ @anthropic-ai/claude-code โ
โ loaded 32 packages โ โ
โ loaded 6 outdated โ Current: 2.0.76 โ
โ โ Latest: 2.0.77 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ/โ or h/l switch panel tab cycle / search space select a all u update d uninstall r refresh q quit
NGM can be configured via ~/.config/ngm/config.yaml:
lang: auto # auto, zh-CN, en
max_concurrent_tasks: 3 # Max concurrent update/uninstall tasks
cache_ttl_seconds: 600 # Cache duration
cache_dir: "" # Custom cache directory (default: ~/.cache/ngm)NGM_LANG: Override language detectionNVM_DIR: nvm directory (default: ~/.nvm)
NGM supports multiple languages and automatically detects your system locale:
- English (default)
- Chinese (Simplified) - Auto-detected on macOS/Linux systems
You can override the language:
ngm --lang zh-CN # Force Chinese
ngm --lang en # Force English
export NGM_LANG=zh-CN # Environment variablengm/
โโโ cmd/ngm/ # CLI entry point
โโโ internal/
โ โโโ cli/ # CLI commands
โ โโโ tui/ # Terminal UI
โ โโโ npm/ # npm client
โ โโโ runners/ # Node version managers (fnm, nvm, n, local)
โ โโโ i18n/ # Internationalization
โ โโโ config/ # Configuration management
โ โโโ cache/ # Caching layer
โ โโโ task/ # Task scheduler
โโโ docs/ # Documentation
Contributions are welcome! Please feel free to submit a Pull Request.
git clone https://github.com/Way-To-AGI/ngm.git
cd ngm
go mod tidy
go build -o ngm ./cmd/ngm
./ngmgo test ./...- Follow Go conventions
- Use meaningful variable names
- Add comments for public functions
- Keep functions small and focused
- Package version locking
- Bulk operations with progress bars
- Package dependency visualization
- Configuration GUI
- Plugin system for custom runners
- Package installation from specific registries
- Global package audit and security scanning
- Ensure your Node version manager is installed and in PATH
- For nvm, check that
~/.nvm/nvm.shexists - Try running
ngm versionsto debug detection
- Make sure ngm has permission to access npm global directories
- On some systems, you may need to run with sudo for certain operations
- NGM handles IME input automatically
- If issues persist, try switching to English input mode
Set environment variable for debug output:
NGM_DEBUG=1 ngmThis project is licensed under the MIT License - see the LICENSE file for details.
- Bubble Tea - Amazing TUI framework
- Lip Gloss - Style definitions
- Cobra - CLI framework
- Node.js community for the excellent package managers
- ๐ Report Bugs
- ๐ก Feature Requests
- ๐ฌ Discussions
Made with โค๏ธ by Way-To-AGI
If you find this tool helpful, please give it a โญ on GitHub!