macOS developer utility · macOS 13+
Kill9 for macOS
Find the port. Know the project. Stop the process.
macOS 13.0 or later · Apple silicon and Intel · ZIP download
Kill9 is a native macOS menu bar utility by Aditya Mali, built with SwiftUI and AppKit. It finds processes listening on local TCP ports, identifies associated development projects, and lets you stop those processes through a graphical interface.
Port 3000 already in use? Another server holding port 8080? Inspect the listener and free an occupied development port without remembering Terminal commands.
Developed by Aditya Mali using SwiftUI and AppKit.
- Version
- 1.0.0
- Platform
- macOS
- Category
- Developer utility
A menu bar tool for local development
Kill9 is for developers running local web apps, APIs, and other development servers on a Mac. When a port conflict interrupts a restart, Kill9 helps you see which process is listening and which project it belongs to. You can then decide whether to stop it or run your new server on a different port.
- Inspect local TCP listeners from the macOS menu bar.
- Discover development servers on standard and custom TCP ports.
- Identify projects using package.json names or project folders when available.
- Stop a selected process with SIGTERM; choose Force if it remains unresponsive.
- Customize discovery with port inclusion and exclusion filters.
How to free a port with Kill9
Open the menu bar panel
Click the KILL9 status item to scan local TCP listeners. Kill9 focuses on development servers owned by your macOS user.
Check the port and project
Find the occupied port, such as 3000, 5173, or 8080. Review the project name, runtime, and PID before taking action. Project names depend on available metadata.
Stop the selected process
Click Stop to request shutdown with SIGTERM. If the process remains unresponsive, Force becomes available for an explicit SIGKILL. Restart your development server after the port is released.
Kill9 stops a process, which can release multiple ports it owns. It cannot close just one port of an arbitrary application. A supervised service may restart automatically.
Download and install on macOS
- Download the Kill9 macOS ZIP on a Mac running macOS 13.0 or later.
- Double-click the ZIP in Finder to extract
Kill9.app. - Move
Kill9.appto your Applications folder and open it. - Look for KILL9 in the macOS menu bar. Kill9 has no conventional app window or Dock icon.
The download supports Apple silicon and Intel Macs. If macOS blocks the app, review its source and distribution information before proceeding. See Apple’s guidance on opening apps safely.
Kill9 is available for macOS; there is no Windows or Linux version.
Find and stop a process on port 3000 in Terminal
For a TCP port conflict on macOS, inspect the listener first. This command shows the process using port 3000; replace 3000 with 8080 or another port as needed.
lsof -nP -iTCP:3000 -sTCP:LISTENCheck the command and PID in the output. If it is the process you want to stop, replace <PID> below with that numeric process ID. SIGTERM requests a graceful shutdown.
kill -TERM <PID>Run the inspection command again to check whether the port is free. If the same verified process is unresponsive, kill -KILL <PID> (also written kill -9 <PID>) forces termination without cleanup.
Why use Kill9 instead of manual commands?
Kill9 brings listener discovery, available project context, and Stop controls into one menu bar panel. It helps when several projects run as the same runtime, such as Node.js. Terminal offers a flexible workflow for scripting and broader process inspection; Kill9 provides a graphical alternative for everyday development port conflicts.
An EADDRINUSE error means the requested address and port are already in use. The existing process may be working normally. Identify it before stopping it, or choose another port if you need both servers.
Frequently asked questions
How do I kill a process running on port 3000 on macOS?
In Terminal, run lsof -nP -iTCP:3000 -sTCP:LISTEN to find the listening process and its PID. Check that it is the server you intend to stop, then run kill -TERM <PID>, replacing <PID> with the actual process ID. Check the port again. Use kill -KILL <PID> only if the same process remains unresponsive and you accept that it cannot clean up. In Kill9, open the menu bar panel, find port 3000, check the project and process, and click Stop. If the process remains, you can choose Force.
How do I find which process is using a port?
Run lsof -nP -iTCP:8080 -sTCP:LISTEN to find which process is listening on TCP port 8080. Replace 8080 with your port number. The output includes the command and PID; -nP keeps addresses and ports numeric. Kill9 lists detected development listeners with their port, process, and available project information. Its default discovery focuses on development servers owned by your user, rather than every application or system service.
What does EADDRINUSE mean?
EADDRINUSE means an application could not bind to a requested address and port because it is already in use. For example, a server starting on localhost port 3000 can conflict with another running server. It does not necessarily mean the existing process is hung. Inspect the listener, then stop it if appropriate or configure your new server to use a different port. Kill9 helps identify and stop a conflicting local development process on macOS.
How can I free an occupied localhost port?
If you still have the server’s Terminal session, try Control-C there first. Otherwise, inspect the TCP listener with lsof -nP -iTCP:3000 -sTCP:LISTEN and stop the verified PID with kill -TERM <PID>. Kill9 provides the same inspect-and-stop workflow in its menu bar panel. Stopping a process affects every port it owns. If a supervisor restarts it, stop or reconfigure the supervisor; if you need to keep the service running, choose a different port for your new server.
Is there a graphical alternative to lsof and kill?
Yes. Kill9 is a macOS developer utility that combines local TCP listener discovery, project identification, and process termination in a menu bar interface. It uses lsof for listener inspection and macOS process signals for stopping processes, so you can use the interface without typing commands. Terminal remains useful for scripting and inspecting services outside Kill9’s development-server discovery.
Can I identify which development project is occupying a port?
Kill9 inspects the process working directory and nearby project metadata. It shows a package.json name when available, or a project folder name when it can infer one. This helps distinguish several servers that all appear as node or python in a process list. Detection depends on accessible process and project information; an unidentified listener may retain its runtime name. In Terminal, lsof -a -p <PID> -d cwd can help you inspect the working directory of a verified process.
How does Kill9 terminate processes?
Stop sends SIGTERM to the selected process, giving it an opportunity to shut down. If that same process is still listening after the refresh, Force becomes available. Force sends SIGKILL only when you click it; escalation is not automatic. Kill9 checks the process owner and start time before signaling and does not stop processes owned by other users. Stopping a process closes all ports it owns, and forced termination does not allow cleanup.
Is Kill9 available for Windows or Linux?
Kill9 is a native macOS application built with SwiftUI and AppKit. The current download requires macOS 13.0 or later and supports Apple silicon and Intel Macs. Kill9 is not available for Windows or Linux. The Terminal commands on this page describe the macOS workflow; commands and available tools differ on other operating systems.