A beautiful terminal UI for managing and monitoring Node.js processes. Find and kill rogue processes, analyze resource usage, and get AI-powered insights.
- Interactive Process List - View all running Node.js processes with CPU, memory, and command details
- Smart Filtering - Automatically detects and displays only Node processes (or use
--allto show all processes) - Fuzzy Search - Press Ctrl+F to filter processes in real-time with fuzzy matching
- Sortable Columns - Sort by CPU usage, memory consumption, or process name with 's' key (arrows shown in column headers)
- Clipboard Support - Copy process information to clipboard with Ctrl+C (Mac) / Ctrl+Shift+C (Windows/Linux)
- Process Management - Kill processes with confirmation prompts
- AI Integration - Get explanations and insights about processes using OpenAI
- Beautiful Terminal UI - Clean, colorful interface with keyboard and mouse support
Run directly without installation using your preferred package manager:
# Using pnpm
pnpx nodepm-ui
# Using npm
npx nodepm-ui
# Using bun
bunx nodepm-uiOr install globally:
# Using pnpm
pnpm add -g nodepm-ui
# Using npm
npm install -g nodepm-ui
# Using bun
bun add -g nodepm-ui
# Then run
nodepm-uinodepm-ui [options]--all- Show all processes (not just Node.js processes)--help,-h- Show help message
By default, nodepm-ui only displays Node.js processes. Use the --all flag to view all running processes on your system.
# Show only Node.js processes (default)
nodepm-ui
# Show all processes
nodepm-ui --all
# Show help
nodepm-ui --helpThis section provides a comprehensive reference for all keyboard shortcuts in nodepm-ui.
To check for key conflicts and view the full mapping:
pnpm check-keys- C- : Ctrl key (works on all platforms)
- M- : Meta/Alt key (Alt/Option on all platforms including Mac)
- [no modal] : Only works when no modal window is open
- [not filtering] : Only works when not in filter mode
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
Ctrl+D |
exit | Force quit the application | - |
Ctrl+C |
exit | Exit the application (Windows/Linux only) | - |
q, Esc |
quit | Quit the application | [no modal] |
Platform Notes:
- macOS: Use
Ctrl+Dorqto exit. On Mac,Ctrl+Cis used for clipboard copy instead of exit. - Windows/Linux: Use
Ctrl+C,Ctrl+D, orqto exit.Ctrl+Shift+Cis used for clipboard copy.
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
↑ |
navigate_up | Navigate up in process list | [no modal] |
↓ |
navigate_down | Navigate down in process list | [no modal] |
j |
navigate_down | Navigate down (vim-style) | [no modal] |
You can also click with your mouse to select a process.
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
Enter |
menu | Show process menu with actions (AI Description, Kill, Copy, Cancel) | [no modal] |
x, k |
kill | Kill selected process directly (with confirmation) | [no modal] |
Ctrl+C (Mac) / Ctrl+Shift+C (Win/Linux) |
copy | Copy process info to clipboard (PID, Name, Command) | [no modal] |
When you press Enter on a selected process, a menu appears with the following options:
- AI Description - Get an AI-powered explanation of what the process does
- Kill Process - Kill the selected process (with confirmation)
- Copy Process Info - Copy process details to clipboard
- Cancel - Close the menu
Navigate the menu with arrow keys or mouse, press Enter to select, or Esc/Q to cancel.
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
Ctrl+R (all platforms) |
refresh | Refresh the process list | [no modal, not filtering] |
Ctrl+F (all platforms) |
filter | Enter filter mode (fuzzy search) | [no modal, not filtering] |
When in filter mode:
- Type - Filter processes by PID, name, or command
- Backspace - Delete last character from filter
- ESC - Exit filter mode and show all processes again
Filter mode uses smart matching with three levels:
- Exact substring - "node" matches "node", "nodejs", "node-server"
- Word boundaries - "tsx" matches "tsx", "tsx-server" (starts with query)
- Tight fuzzy - Characters must be within 3 positions of each other
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
s |
sort_cycle | Cycle through sort modes (CPU↓, CPU↑, Mem↓, Mem↑, Name↑, Name↓, None) | [no modal] |
c |
sort_cpu | Quick sort by CPU usage (toggle asc/desc) | [no modal] |
m |
sort_memory | Quick sort by Memory usage (toggle asc/desc) | [no modal] |
When pressing s, the sort mode cycles through these states:
- CPU (descending) - Highest CPU usage first
- CPU (ascending) - Lowest CPU usage first
- Memory (descending) - Highest memory usage first
- Memory (ascending) - Lowest memory usage first
- Name (ascending) - Alphabetically A-Z
- Name (descending) - Alphabetically Z-A
- None - Default order (as returned by system)
The current sort mode is displayed in two places:
- Status bar at the bottom of the screen shows the sort column and direction (e.g., "Sort: CPU↓")
- Table header shows an arrow indicator (↑ or ↓) next to the sorted column name
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
? |
ai_explain | Explain selected process with AI | [no modal] |
/ |
ai_ask | Ask AI a custom question about processes | [no modal] |
| Key(s) | Action | Description | Constraints |
|---|---|---|---|
h |
help | Show help modal | [no modal] |
When you copy a process to the clipboard using Ctrl+C (Mac) or Ctrl+Shift+C (Windows/Linux), the text is formatted as:
PID: <process_id> | Name: <process_name> | Command: <command>
A temporary notification "✓ Copied to clipboard" appears in the status bar for 2 seconds.
All key bindings are defined in src/key-bindings.ts, which provides:
- Centralized configuration - All keys defined in one place
- Conflict detection - Automatic checking for duplicate key mappings
- Easy remapping - Change keys in one location
- Type safety - TypeScript types for all bindings
To modify key bindings:
- Edit
src/key-bindings.ts - Run
pnpm check-keysto verify no conflicts - Rebuild:
pnpm build
- Use
Ctrl+Cfor copy (not Cmd+C) - Use
Ctrl+Rfor refresh - Use
Ctrl+Ffor filter - Use
Ctrl+Dorqto exit (Ctrl+C is used for copy, not exit)
- Use
Ctrl+Shift+Cfor copy - Use
Ctrl+Rfor refresh - Use
Ctrl+Ffor filter - Use
Ctrl+C,Ctrl+D, orqto exit
Important Note for Mac Users:
Terminal applications cannot capture Cmd (⌘) key combinations - these are handled by the terminal emulator itself. On macOS, we use Ctrl+C for copying instead of exiting, which is why you need to use Ctrl+D or q to exit the app.
The key bindings are designed to work consistently across all platforms using Ctrl keys, which are universally available.
- Multiple keys can map to the same action (e.g.,
xandkboth kill processes directly) - Some keys have contextual behavior (only work when no modal is open, etc.)
- The
kkey is used for kill, not for vim-style "up" navigation - Filter mode intercepts most keypresses for typing the filter query
- Modal windows (help, AI responses, confirmations) block normal key bindings
Node Process Manager includes optional AI-powered features using OpenAI:
Press ? on any process to get an AI explanation of what it does and whether it's normal.
Press / to ask AI questions like:
- "Which process is using the most memory?"
- "I've been using Vitest, which processes are related?"
- "Are any of these processes unusual?"
On first use of AI features, you'll be prompted to enter your OpenAI API key. The key is saved in your user config directory:
- Linux/Mac:
~/.config/nodepm-ui/config.json - Windows:
%APPDATA%\nodepm-ui\config.json
You can also set the OPENAI_API_KEY environment variable, which takes priority over the config file:
export OPENAI_API_KEY=your_key_here- Node.js 18.0.0 or higher
- Terminal with ANSI color support
- Find Memory Leaks - Quickly identify Node processes consuming excessive memory
- Kill Orphaned Processes - Clean up leftover development servers and build tools
- Monitor Resource Usage - Track CPU and memory usage of your Node applications
- Debug Port Conflicts - Find which process is using a specific port
- Team Debugging - Understand what processes are running during development
- The process marked as (This Process) is the Node Process Manager itself
- CPU percentages can exceed 100% on multi-core systems (represents total across all cores)
- Use the s key to cycle through sort modes, or c/m for quick CPU/Memory sorting
- Press Ctrl+R (all platforms) to refresh process information
- Use Ctrl+F (all platforms) for quick filtering
- Press Enter on a process to open the action menu, or x/k to kill directly
ISC
Bob Bass
Issues and pull requests welcome at github.com/robertjbass/nodepm-ui
For contributors looking to help improve nodepm-ui, check out TODO.md for a list of planned features and improvements, including:
- UI improvements (themes, chat interface, settings menu)
- Feature additions (key remapping, checkboxes, API customization)
- AI enhancements (support for other models, improved context)