Ferrum Editor
Code editor
A small, hackable code editor in the spirit of Atom, written from scratch in Rust and configured in plain TOML.
Learn more about Ferrum EditorEvery listening port with its process and project, and a confirmed way to stop it.
"Who is using port 3000?" answered in one window. FerrumPorts reads the system with lsof, ps and ss, and writes nothing but the shared list of recent Ferrum projects.
shop 3000 web, 5432 postgres, 9229 inspector
Other
Stop node (pid 48213)?
pnpm dev · ~/code/shop
CancelSend SIGTERM
The scanners, parsers and kill logic are unit-tested; the window is covered by headless tests.
TCP listeners with port, address, process, full command line, user, start time and working directory. IPv4 and IPv6 sockets of one process share a row, and a UDP toggle adds bound UDP sockets.
Each process's working directory is mapped to its git root, so you see "shop: 3000 web, 5432 postgres". This project shows only the ports of the project in the strip at the top.
The table refreshes every 2 s, with Pause and ⌘R. ⌘F searches ports, pids, processes, commands, projects and addresses; 30 finds 3000.
A confirmation shows the full command line, then sends SIGTERM. If the process is still running 2 s later, a second dialog offers SIGKILL. Pids 0 and 1 are refused.
Type a port and FerrumPorts tries to bind it. If it's taken, you see which process holds it and the nearest free port.
Addresses and exposure (local, one interface or all), every port of the same pid, and hints for about 45 well-known ports such as 5173 Vite or 6379 Redis. Open the project in Ferrum Editor, FerrumGIT or FerrumTerm.
FerrumPorts is in alpha, as a first working version. Its tests are automated; the app hasn't been clicked through by hand yet, and the row and detail-pane actions are wired but not hand-tested.
Without root, lsof on macOS only shows your own processes' sockets, so a port held by root or another user may be missing. On Linux, ss lists them without the pid or process name.