Localhost Port Manager for Windows & Linux β A desktop app for developers to manage local development ports and applications.
- β¨ AI Agent Integration
- What's New
- Features
- Auto Detection
- Screenshots
- Installation
- Usage
- App Badges
- Themes
- Keyboard Shortcuts
- Testing
- MCP Integration
- Tech Stack
- Version History
- Contributing
Control PortPilot with natural language! Works with Claude Code, Cursor, Windsurf, and any MCP-compatible AI assistant.
"Start the azure-practice-exam-platform app"
"What's running on port 3001?"
"Kill whatever is running on port 3000"
- Icon-Based Action Buttons β START/STOP buttons now use intuitive green play (βΆ) and red square (β ) icons for better visual scanning
- Removed Expand All/Collapse All Buttons β Commands now show in tooltips, no need for button clutter
- Comprehensive Auto Detection Documentation β README now includes detailed docs for all 8 language detectors
- Table of Contents β Easy navigation through README sections
- Updated Landing Page β Added 4 new language detector badges (Go, .NET, Rust, Ruby)
- Knowledge Base Updates β Framework details for new language detectors
Complete detection criteria, supported frameworks, port detection methods, and confidence scoring for:
- Node.js (React, Next.js, Vue, Angular, Vite, Express, Fastify)
- Python (FastAPI, Django, Flask)
- Docker (docker-compose, Dockerfile)
- Go (Gin, Fiber, Echo) β¨
- .NET (ASP.NET Core) β¨
- Rust (Actix-web, Rocket, Axum, Warp) β¨
- Ruby (Rails, Sinatra, Rack) β¨
- Static Sites
- CMD Icon with Hover Tooltip β Black CMD badge shows full command path on hover with copy button
- Single-Row Layout β Removed second row, CMD tooltip replaces expandable command display
- Brighter Stats β Improved visibility of Memory, Uptime, and Connections badges
- Cleaner Design β More compact while showing all essential information
- Horizontal Navigation β 13 tabs for easy access to all help sections
- Single Card View β Clean, focused presentation with smooth transitions
- v1.6.2 Documentation β New sections for Port Cards and Port Actions features
- Enhanced Troubleshooting β Added FAQs for new features (N/A values, bind indicators)
- Folder Button β π icon opens app's working directory in file explorer
- Consistent UX β Matches port card folder button functionality
- Quick Access β One-click navigation to project files
- Aligned Keyboard Shortcuts β Fixed grid layout with centered keys
- Wider CMD Tooltips β Increased from 500px to 600px with scrolling support
- Better Text Wrapping β Improved long command path display
- 30-40% More Density β See more apps and ports on screen without scrolling
- Sharp 2px Corners β Modern, clean aesthetic (down from 8px)
- Tighter Spacing β Reduced padding and gaps throughout
- Compact Port Cards β Process and PID combined on one line for space efficiency
- Smaller Fonts β Better information density while maintaining readability
- External Changes Detected β Automatically refreshes when MCP or other tools modify config
- File Watcher β Monitors config file for changes with 100ms debounce
- Toast Notifications β Visual feedback when apps list updates externally
- No Restart Required β Apps added via MCP appear instantly
- Dynamic Height β Window grows/shrinks based on number of apps
- Optimal Sizing β 400px minimum, 1200px maximum
- Seamless Integration β Works with MCP auto-refresh
- Better UX β No wasted space, no excessive scrolling
- 100% Test Coverage β All 11 E2E tests passing
- Integrated Test Servers β HTTP servers on ports 3000, 3001, 8080
- Test Mode Support β Singleton lock bypass for running tests alongside GUI
- Improved Reliability β Fixed visibility issues, better wait strategies
- ConfigStore Null Reference β Fixed critical crash on startup
- Test Infrastructure β All tests now passing reliably
- Load Strategy β Improved app initialization wait logic
- Cross-Platform Builds β Now officially supports Windows AND Linux
- AppImage Package β Universal Linux binary that runs on any distro (98 MB)
- .deb Package β Native Debian/Ubuntu installer (69 MB)
- WSL Testing β Full testing support in Windows Subsystem for Linux
- Platform Auto-Detection β Automatically adapts commands for Windows/Linux
- Stop All Apps from Tray β Right-click tray icon to stop all PortPilot-managed apps without quitting
- Configurable Window Behaviour β Choose whether close button minimises to tray or exits completely
- Smart Process Cleanup β Optionally stop all apps when quitting (only affects PortPilot-managed processes)
- External Process Safety β Never touches processes started outside PortPilot
- One Instance Only β Prevents multiple copies of PortPilot from running simultaneously
- Smart Window Focusing β Launching a second instance automatically focuses the existing window
- No More Confusion β Single system tray icon, clear state management
- One-Click Project Setup β Click "Browse & Auto-detect" in Add App modal to automatically configure any project
- Recursive Scanning β Finds projects up to 2 levels deep in subdirectories
- Package Manager Detection β Auto-detects pnpm, yarn, or npm and uses the correct command
- Smart Port Detection β Only uses explicit port config (no more "everything gets port 3000")
- Works with Monorepos β Finds the actual project inside parent folders (e.g.,
manual-build/inside root)
- Unknown Process Detection β Warns when unknown processes block your app's preferred port
- π Preview Button β Click globe to see what's running on the blocked port
- Kill Blocker Button β Terminate blocking processes with one click
- Toast Notifications β Visual warnings when port conflicts are detected
- Improved Matching β Two-phase algorithm with keyword extraction prevents false positives
- Automatic Project Detection β Scan your project directories to automatically discover Node.js, Docker, Python, and static site projects
- Smart Metadata Extraction β Automatically detects project names, start commands, and ports
- User-Configurable Paths β Add your own scan directories (e.g.,
C:\Projects,C:\Dev) - Confidence Scoring β Shows match confidence (95%, 85%, etc.) for each discovered project
- Bulk Import β Add all discovered projects at once or pick individual ones
- Scan Depth Control β Configure how deep to search (1-5 directory levels)
- Star Your Apps β Click the star (β/β) button to mark frequently-used apps as favorites
- Organized Sections β Apps automatically organised into:
- β Favorites β Starred apps at the top for quick access
- π Other Projects β Non-starred apps below
- Collapsible Sections β Click section headers to expand/collapse
- Persistent State β Section collapse state saved across app restarts
- Bulk Delete β Remove all apps in one click with "Delete All" button
- Safety First β Strong confirmation modal warns before deletion
- Export Reminder β Prompts to export config before deleting
- π Browse & Auto-detect β One-click project setup with recursive scanning and package manager detection
β οΈ Port Conflict Warnings β Visual warnings when unknown processes block app ports, with preview and kill options- π Project Auto-Discovery β Scan directories to automatically find and import dev projects (Node.js, Docker, Python, static sites)
- β Favorites β Star frequently-used apps for quick access with collapsible sections
- π Bulk Operations β Delete all apps at once with safety confirmations
- Port Scanner β Discover all active TCP ports with process details (name, PID, command line)
- One-Click Kill β Free up stuck ports instantly
- App Registry β Register your dev projects with start commands and preferred ports
- Process Management β Start/stop apps directly from PortPilot
- Smart Port Matching β Two-phase algorithm with CWD validation and keyword extraction for accurate detection
- Requirement Badges β Visual indicators for Docker, Node.js, Python, and more
- Docker Integration β Click to start Docker Desktop, with status detection
- IPv4/IPv6 Awareness β Shows which protocol your app is bound to
- System Tray β Minimize to tray, "Stop All Apps" menu option, configurable window behaviour
- Single-Instance Lock β Only one PortPilot runs at a time, focuses existing window
- Multi-Theme Support β 6 themes including TokyoNight, Brutalist, Nord, Dracula
- Knowledge Base β Built-in help with tips, shortcuts, and common ports reference
PortPilot automatically detects 8 different languages and platforms when you use "π Browse & Auto-detect Project" or Project Auto-Discovery. Detection is intelligent, framework-aware, and includes confidence scoring.
Detection Criteria:
package.jsonfile present- Package manager files:
package-lock.json,yarn.lock,pnpm-lock.yaml,bun.lockb
Supported Frameworks:
- React, Next.js, Vue, Angular, Vite
- Express, Fastify, Nest.js
- Gatsby, Nuxt, SvelteKit
Port Detection:
- Reads
package.jsonscripts for port numbers (e.g.,--port 3000) - Checks Vite/Next.js config files
- Checks
.envfiles forPORTvariable
Default Values:
- Port: 3000
- Command: Auto-detected package manager (
pnpm run dev,yarn dev,npm run dev) - Confidence: 90-95%
Detection Criteria:
requirements.txt,pyproject.toml, orPipfilepresent- Python files with common framework imports
Supported Frameworks:
- FastAPI (port 8000)
- Django (port 8000)
- Flask (port 5000)
Port Detection:
- Scans Python files for
uvicorn.run(),app.run()with port arguments - Checks framework-specific config files
Default Values:
- Port: 8000 (FastAPI/Django), 5000 (Flask)
- Command: Framework-specific (
uvicorn main:app,python manage.py runserver,flask run) - Confidence: 85-90%
Detection Criteria:
docker-compose.ymlordocker-compose.yamlpresentDockerfilepresent
Port Detection:
- Parses
docker-compose.ymlfor exposed ports - Reads port mappings (e.g.,
3000:3000,8080:80)
Default Values:
- Port: Extracted from compose file
- Command:
docker compose upordocker-compose up - Confidence: 95%
Detection Criteria:
go.modfile presentmain.gofile present
Supported Frameworks:
- Gin (port 8080)
- Fiber (port 3000)
- Echo (port 1323)
Port Detection:
- Scans
go.modfor framework dependencies - Parses
main.gofor port literals (e.g.,:8080)
Default Values:
- Port: 8080 (Gin), 3000 (Fiber), 1323 (Echo)
- Command:
go run . - Confidence: 80-95%
Detection Criteria:
.csprojfile present.slnsolution file present
Supported Frameworks:
- ASP.NET Core
Port Detection:
- Reads
Properties/launchSettings.jsonforapplicationUrl - Parses port from URLs (e.g.,
https://localhost:5001)
Default Values:
- Port: 5000
- Command:
dotnet run - Confidence: 85-95%
Detection Criteria:
Cargo.tomlfile present
Supported Frameworks:
- Actix-web (port 8080)
- Rocket (port 8000)
- Axum (port 3000)
- Warp (port 3030)
Port Detection:
- Scans
Cargo.tomldependencies for framework - Parses
src/main.rsforbind()orlisten()with port
Default Values:
- Port: Framework-specific (see above)
- Command:
cargo run - Confidence: 85-95%
Detection Criteria:
Gemfilefile presentconfig.rufile presentRakefilepresent
Supported Frameworks:
- Ruby on Rails (port 3000)
- Sinatra (port 4567)
- Rack (port 9292)
Port Detection:
- Checks for
config/application.rb(Rails) - Reads
Gemfilefor framework gems
Default Values:
- Port: 3000 (Rails), 4567 (Sinatra), 9292 (Rack)
- Command:
rails server,ruby app.rb, orrackup - Confidence: 70-95%
Detection Criteria:
index.htmlin root directory- No backend framework files present
Port Detection:
- No port needed (serves HTML directly)
Default Values:
- Port: N/A
- Command: N/A
- Confidence: 80%
Detectors run in priority order (highest to lowest):
- Docker (95) β Most explicit configuration
- Node.js (90) β Very common, well-structured
- Go (85)
- .NET (85)
- Rust (85)
- Ruby (85)
- Python (80) β Lower due to less standardized structure
- Static Sites (60) β Fallback for simple projects
If multiple detectors match, the highest-priority one wins.
| Score | Meaning |
|---|---|
| 95%+ | Exact port found in config file |
| 85-94% | Framework detected, using framework default port |
| 70-84% | Files detected, using language default port |
| <70% | Weak match, manual verification recommended |
Explore all PortPilot features including My Apps management, Active Ports scanner, Knowledge Base, Settings, multiple themes, and more.
Latest Release: v1.6.2
Windows:
- PortPilot-1.6.2-x64.exe β NSIS Installer (72 MB)
- PortPilot-1.6.2-portable.exe β Portable (72 MB)
Linux:
- PortPilot-1.6.2-x86_64.AppImage β Universal Linux (98 MB)
- PortPilot-1.6.2-amd64.deb β Debian/Ubuntu (69 MB)
macOS:
- Build from source (see below) β macOS is supported but not officially tested
# Clone the repo
git clone https://github.com/m4cd4r4/PortPilot.git
cd PortPilot
# Install dependencies
npm install
# Run the app
npm start
# Build for your platform
npm run build # Windows (NSIS installer)
npm run build:linux # Linux (AppImage + .deb)
npm run build:all-platforms # Both Windows and LinuxNote for VSCode/Claude Code users: The app automatically clears the
ELECTRON_RUN_AS_NODEenvironment variable vialaunch.js.
Click "Scan Ports" to discover all listening TCP ports. You'll see:
- Port number (large and prominent!)
- Process name
- PID
- Command line (with clean ellipsis for long paths)
Click the β button to kill any process.
- Click "Add App"
- Click "π Browse & Auto-detect Project"
- Select your project folder (e.g.,
C:\Scratch\MyApp) - PortPilot automatically fills in:
- Name from package.json
- Command with the correct package manager (
pnpm run dev,yarn dev,npm run dev) - Working Directory path
- Preferred Port from config files (if found)
- Review and edit if needed
- Click "Save App"
- Click "Add App"
- Fill in:
- Name: Display name (e.g., "AzurePrep Frontend")
- Command: Start command (e.g.,
npm run dev) - Working Directory: Project folder path
- Preferred Port: The port your app should use (or leave blank to assign later)
- Fallback Range: Alternative ports if preferred is taken (e.g.,
3001-3010)
- Click "Save App"
Now you can start/stop your apps directly from PortPilot with visual countdown feedback!
When a port is blocked by an unknown process:
- You'll see "
β οΈ Port Blocked" status on the app card - Click π Globe button to preview what's running on that port
- Click "Kill Blocker" to terminate the blocking process
- Click "Start" to launch your app
PortPilot automatically detects app requirements and shows badges:
| Badge | Meaning | Detected When |
|---|---|---|
| π³ | Docker app | Command includes docker or compose |
| π¦ | Node.js app | Command includes npm, npx, pnpm, yarn, or bun |
| π | Python app | Command includes python, uvicorn, flask, or django |
| ποΈ | Database | Command includes postgres, mysql, redis, or mongo |
| β‘ | Auto-start | App configured to start on launch |
| π | Remote | App runs on remote server/VPS |
- Yellow pulsing π³ β Docker Desktop is not running (click to start)
- Green π³ β Docker Desktop is running and ready
When apps are running, PortPilot shows v4 or v6 to indicate the IP protocol:
- v4 β Bound to IPv4 (e.g.,
0.0.0.0:3000) - v6 β Bound to IPv6 (e.g.,
[::]:3000)
This ensures the browser button opens the correct URL.
| Theme | Description |
|---|---|
| TokyoNight | Dark blue with cyan/magenta accents (default) |
| Brutalist Dark | Pure black, yellow/cyan, monospace |
| Brutalist Light | White with black borders, yellow highlights |
| Nord | Cool arctic blues |
| Dracula | Purple/pink dark theme |
| Solarized Light | Warm, easy on the eyes |
| Shortcut | Action |
|---|---|
Ctrl+R |
Refresh/Scan ports |
Ctrl+N |
Add new app |
Ctrl+1 |
Ports tab |
Ctrl+2 |
Apps tab |
Ctrl+3 |
Knowledge tab |
Ctrl+4 |
Settings tab |
Escape |
Close modal |
Your config is stored at:
- Windows:
%APPDATA%/portpilot/portpilot-config.json - macOS:
~/Library/Application Support/portpilot/portpilot-config.json - Linux:
~/.config/portpilot/portpilot-config.json
{
"apps": [
{
"id": "app_azureprep",
"name": "AzurePrep",
"command": "npm run web",
"cwd": "C:\\Scratch\\azure-practice-exam-platform",
"preferredPort": 3001,
"fallbackRange": [3002, 3010],
"color": "#84CC16",
"autoStart": false
}
],
"settings": {
"autoScan": true,
"scanInterval": 5000,
"openDevTools": false
}
}# Install dependencies
npm install
# Run in development
npm start
# Run in dev mode (with DevTools if enabled)
npm run dev
# Run all tests
npm run test:all
# Take screenshots
npm run screenshots
# Build installers
npm run build:allPortPilot includes a comprehensive Playwright E2E test suite with 100% test coverage.
# Run all tests (20 tests)
npm run test:all
# Run core functionality tests (11 tests)
npm test
# Run v1.3.0 feature tests (9 tests)
npm run test:v1.3
# Generate UI screenshots
npm run screenshotsTest Coverage:
- β UI rendering and navigation (100%)
- β Port scanning functionality (100%)
- β Port filtering (100%)
- β Port killing (100%)
- β Process cleanup (100%)
- β Settings persistence (100%)
- β DevTools toggling (100%)
- β App configuration editing (100%)
Total: 20/20 tests passing β See TESTING_SUMMARY.md for details.
PortPilot includes an MCP (Model Context Protocol) server that lets any compatible AI assistant manage your development environment with natural language.
Works with any MCP-enabled AI assistant:
- Claude Code (CLI)
- Claude Desktop
- Cursor
- Windsurf
- Cline
# Install MCP server dependencies
cd mcp-server && npm install && cd ..
# Add to Claude Code
claude mcp add portpilot -- node "C:\path\to\PortPilot\mcp-server\index.js"
# Verify connection
claude mcp list
# Should show: portpilot: ... - β ConnectedRestart your AI tool after adding to load the new tools.
Just ask in natural language:
"List all my PortPilot apps"
"Start the azure-practice-exam-platform app"
"What's running on port 3001?"
"Add a new app called 'hero-concepts-preview' at C:\Scratch\azure-practice-exam-platform with command 'npm run web' on port 3001"
"Stop mocksnap"
"Kill whatever is running on port 3000"
"Delete all apps from PortPilot"
"Favorite the AzurePrep app"
| Tool | Description |
|---|---|
list_apps |
List all registered apps |
get_app |
Get details of a specific app |
start_app |
Start an app by name or ID |
stop_app |
Stop a running app |
add_app |
Register a new app |
update_app |
Update app configuration |
delete_app |
Remove an app |
list_running |
Show currently running apps |
scan_ports |
Scan for active ports |
kill_port |
Kill process on a port |
toggle_favorite |
Star/unstar an app |
delete_all_apps |
Remove all apps (requires confirmation) |
See mcp-server/README.md for full documentation.
- Electron 27 β Cross-platform desktop framework
- Node.js β Process management and port scanning
- Playwright β End-to-end testing
- Vanilla JS β No framework bloat, lightweight and fast
- CSS Variables β Powerful theme system
- Native Commands β
netstat(Windows) /lsof(Mac/Linux)
- π Browse & Auto-detect β One-click project setup with recursive scanning
- π¦ Package Manager Detection β Auto-detects pnpm, yarn, npm
β οΈ Port Conflict Warnings β Visual warnings with preview and kill options- π Project Auto-Discovery β Bulk scan and import projects
- β Favorites System β Star apps for quick access
- π Delete All β Bulk delete with safety confirmations
- β¨ Improved Port Matching β Two-phase algorithm with keyword extraction
- β¨ Smart Port Detection β No more hard-coded framework defaults
- 7 new features (DevTools, process cleanup, port conflict detection, etc.)
- 7 UI/UX improvements (larger port numbers, better spacing, improved readability)
- 100% test coverage (20/20 tests passing)
- Comprehensive documentation (CHANGELOG.md, TESTING_SUMMARY.md)
- Fixed port kill functionality
- Added comprehensive test suite
- Initial release with core features
- Multi-theme support
- App registry and management
Contributions are welcome! Please feel free to submit a Pull Request.
MIT Β© Macdara
Built for developers who juggle multiple localhost apps
π Download Latest Release | π Documentation | π Report Issues
