<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: m4cd4r4</title>
    <description>The latest articles on DEV Community by m4cd4r4 (@m4cd4r4).</description>
    <link>https://dev.to/m4cd4r4</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F802687%2Fdbb9334f-2dc2-47f4-945f-53d3478bf00e.png</url>
      <title>DEV Community: m4cd4r4</title>
      <link>https://dev.to/m4cd4r4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/m4cd4r4"/>
    <language>en</language>
    <item>
      <title>I Built a Localhost Port Manager Because I Was Tired of Googling "Kill Port 3000"</title>
      <dc:creator>m4cd4r4</dc:creator>
      <pubDate>Tue, 20 Jan 2026 08:00:21 +0000</pubDate>
      <link>https://dev.to/m4cd4r4/i-built-a-localhost-port-manager-because-i-was-tired-of-googling-kill-port-3000-297l</link>
      <guid>https://dev.to/m4cd4r4/i-built-a-localhost-port-manager-because-i-was-tired-of-googling-kill-port-3000-297l</guid>
      <description>&lt;p&gt;Every developer knows this ritual:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
Error: Port 3000 is already &lt;span class="k"&gt;in &lt;/span&gt;use
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you open a new tab and Google "how to kill port 3000" for the 47th time this month.&lt;/p&gt;

&lt;p&gt;I finally got tired of it and built &lt;strong&gt;PortPilot&lt;/strong&gt; — a free, open-source desktop app that makes localhost port management actually pleasant.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I run several dev projects locally. Every morning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Port conflicts from yesterday's zombie processes&lt;/li&gt;
&lt;li&gt;Forgetting which app runs on which port&lt;/li&gt;
&lt;li&gt;Digging through Task Manager to find the right Node process&lt;/li&gt;
&lt;li&gt;Accidentally killing the wrong thing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;PortPilot gives you a clean dashboard with four main features:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Port Scanner
&lt;/h3&gt;

&lt;p&gt;See every listening TCP port with process name, PID, and full command line. One-click kill for any process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pazpl7qex31tl5lvjnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pazpl7qex31tl5lvjnk.png" alt="PortPilot Active Ports tab showing TCP ports with process names and kill buttons" width="800" height="919"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. App Registry
&lt;/h3&gt;

&lt;p&gt;Register your dev projects with start commands and preferred ports. Start/stop directly from the UI with visual countdown feedback.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Auto-Detection
&lt;/h3&gt;

&lt;p&gt;Point PortPilot at your projects folder and it automatically finds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; (npm, yarn, pnpm, bun)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; (uvicorn, flask, django)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker&lt;/strong&gt; (docker-compose)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go, .NET, Rust, Ruby&lt;/strong&gt; projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It even detects your package manager and reads port config from &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;vite.config&lt;/code&gt;, &lt;code&gt;.env&lt;/code&gt;, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3rkukagpmdlyxksf6fl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3rkukagpmdlyxksf6fl.png" alt="Add App dialog with auto-detect feature showing project name and start command fields" width="800" height="905"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Port Conflict Resolution
&lt;/h3&gt;

&lt;p&gt;When something blocks your app's port:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See &lt;strong&gt;"⚠️ Port Blocked"&lt;/strong&gt; status&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;🌐 Preview&lt;/strong&gt; to see what's running there&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Kill Blocker"&lt;/strong&gt; to terminate and reclaim the port&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Electron 27&lt;/td&gt;
&lt;td&gt;Cross-platform (Windows + Linux)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vanilla JS&lt;/td&gt;
&lt;td&gt;No framework bloat, ~70MB installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Native commands&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;netstat&lt;/code&gt; (Windows) / &lt;code&gt;lsof&lt;/code&gt; (Linux)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Playwright&lt;/td&gt;
&lt;td&gt;20/20 E2E tests, 100% coverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSS Variables&lt;/td&gt;
&lt;td&gt;6-theme system&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🔍 Browse &amp;amp; Auto-detect&lt;/strong&gt; — One-click project setup with recursive scanning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⭐ Favorites&lt;/strong&gt; — Star apps for quick access, collapsible sections&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🐳 Docker Integration&lt;/strong&gt; — Detects Docker Desktop status, click to start&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🎨 5 Themes&lt;/strong&gt; — TokyoNight, Brutalist Dark, Nord, Dracula, Solarized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih9avff64b6gdgdo7jlt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih9avff64b6gdgdo7jlt.png" alt="PortPilot in Brutalist Dark theme with yellow accents on black background" width="800" height="902"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📋 System Tray&lt;/strong&gt; — Minimize to tray, "Stop All Apps" from menu&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔒 Single Instance&lt;/strong&gt; — Only one PortPilot runs, focuses existing window&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🤖 MCP Server&lt;/strong&gt; — Control with natural language from Claude Code, Cursor, Windsurf&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📚 Knowledge Base&lt;/strong&gt; — Built-in help, keyboard shortcuts, common ports reference&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  App Badges
&lt;/h3&gt;

&lt;p&gt;PortPilot auto-detects project types and shows badges:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Badge&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;🐳&lt;/td&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📦&lt;/td&gt;
&lt;td&gt;Node.js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🐍&lt;/td&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🗄️&lt;/td&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚡&lt;/td&gt;
&lt;td&gt;Auto-start&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Keyboard Shortcuts
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+R&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scan ports&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+N&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Add new app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl+1-4&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Switch tabs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Escape&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Close modal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Download
&lt;/h2&gt;

&lt;p&gt;100% free and open source:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/m4cd4r4/PortPilot/releases/download/v1.6.2/PortPilot-1.6.2-x64.exe" rel="noopener noreferrer"&gt;Installer&lt;/a&gt; (72 MB)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/m4cd4r4/PortPilot/releases/download/v1.6.2/PortPilot-1.6.2-portable.exe" rel="noopener noreferrer"&gt;Portable&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Linux:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/m4cd4r4/PortPilot/releases/download/v1.6.2/PortPilot-1.6.2-x86_64.AppImage" rel="noopener noreferrer"&gt;AppImage&lt;/a&gt; — Universal (98 MB)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/m4cd4r4/PortPilot/releases/download/v1.6.2/PortPilot-1.6.2-amd64.deb" rel="noopener noreferrer"&gt;.deb&lt;/a&gt; — Debian/Ubuntu (69 MB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/m4cd4r4/PortPilot" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No accounts, no tracking, no nonsense. MIT licensed.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;I'm considering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;macOS builds (it should work but untested)&lt;/li&gt;
&lt;li&gt;Remote server monitoring&lt;/li&gt;
&lt;li&gt;Docker Compose service management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What features would you want?&lt;/strong&gt; Drop a comment or &lt;a href="https://github.com/m4cd4r4/PortPilot/issues" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>electron</category>
    </item>
  </channel>
</rss>
