PortPilot 3.4 · free · MIT

You and Claude Code, one view of what's running

PortPilot runs your local dev servers. With the Claude Code plugin, Claude sees the same apps, ports and crashes you do, and reuses a running server instead of starting a second copy.

Windows 10/11 and Linux. Any MCP assistant can drive it too.

PortPilot desktop app with demo projects: harbor-web running on three branches, a port conflict strip on buoy-preview, and a crash toast for anchor-metrics with an Ask Claude button

The Claude Code plugin

One install gives Claude the PortPilot tools, a status line, a guard on dev-server starts and a crash band.

Status line

Every session shows what is up, worst state first. A ✦ marks apps Claude started.

⚓ 1 crashed · 6 up · :3000 harbor-web

Dev-server guard

A start on a busy port is turned away with the URL to reuse. A clean start goes through PortPilot. If the guard can't tell what a command does, it lets it run.

reuse http://localhost:3000

Crash band with Fix it

When an app Claude started crashes, the session gets a band with Restart, Logs and Fix it. Fix it hands Claude the crash and the stderr tail.

✕ anchor-metrics · exit 1

Install in Claude Code

/plugin marketplace add m4cd4r4/PortPilot
/plugin install portpilot@portpilot

The MCP server is bundled: no npm install.

New in the desktop app

Each row now tells you what is happening and who did it.

Row state, and who started it

Every app shows its state, how long it has been in it and who started it: you, or a Claude Code session. A crashed app reads ✕ Crashed · exit 1. The VS Code tree uses the same states.

Four app rows: harbor-web running 2h started by you, a branch running 18m started by claude a3f2, another branch not responding for 41m, and tugboat-api running 52m

Conflict strip

When something else holds an app's port, the row says what holds it and offers Use free port, Kill & start or Show process. Kill asks for a second click.

buoy-preview row marked Port blocked: port 8000 is held by tugboat-api, with buttons Use 8001 instead, Stop tugboat-api and start, and Show process

Crash toast with Ask Claude

A crash raises a sticky toast with the stderr tail. Ask Claude appears when the session that started the app is still open, and sends it the crash. Repeat crashes group into one toast.

Toast: anchor-metrics crashed 2 times in 5 minutes, exit 1, with a KeyError traceback and buttons Restart, Logs, Ask Claude and Dismiss

Any MCP assistant

The PortPilot MCP server gives your assistant 20 tools: list, start, stop, scan, kill, group and more.

  • Claude Code
  • Claude Desktop
  • Cursor
  • Windsurf
  • Cline
MCP setup guide
  • "What's running on :3000?"
  • "Start tugboat-api"
  • "Kill whatever is on port 8000"
  • "Start all my favourites"

Everything else it does

Run & organise

  • Start and stop apps with port detection and fallback ranges
  • Groups with colours, favourites, search and sort
  • Branches and worktrees nest under their project, colour-matched to VS Code (Peacock)
  • Detail drawer: command, folder, PID, uptime

Ports

  • Scan every TCP port with process, PID, memory and uptime
  • Kill a stuck port in one click
  • Grouped into Dev, Other and System
  • Bind type and IPv4/IPv6 on each port

Auto-detect

  • Point it at a folder to find Node.js, Python, Go, .NET, Rust, Ruby and Docker projects
  • Add a repo's worktrees in one go; stale ones are flagged
  • Docker status badges, and Docker Desktop in one click

Everywhere

  • VS Code extension: sidebar tree and status bar
  • Web portal in your browser, loopback-only
  • Tray menu with a Stop per running app
  • 6 themes plus Auto
  • Windows 10/11 and Linux

Security

The desktop app opens no network port. The opt-in web portal stays on your machine, behind six layers.

Threat model and limits in SECURITY.md
  • Loopback only binds 127.0.0.1, unreachable from the LAN
  • Per-session token a fresh 256-bit token on every request
  • Anti DNS-rebinding Host-header allowlist
  • Locked CORS the portal's own origin, never a wildcard
  • CSRF-resistant a custom header forces a preflight
  • Strict CSP no remote or inline scripts

Download PortPilot 3.5.0

Free and open source. No account and no admin rights. Install it, click Scan, then add your projects.

From source: npm install then npm start on GitHub. Older builds on Releases.

Keyboard shortcuts
Ctrl+R
Refresh
Ctrl+N
Add app
Ctrl+F
Search apps and ports
Ctrl+G
New group
Esc
Close a dialog