Inspect busy ports, identify the owning process, and release them with predictable output for humans and automation.
ferman is a cross-platform CLI for inspecting busy ports, identifying the owning process, and releasing the port safely when needed.
It is built for:
- interactive terminal use with explicit confirmation
- local debugging of blocked development ports
- scripts, CI, and agent workflows that need stable machine-readable output
- MCP integrations over stdio
Run without installing:
npx ferman 3000Install globally:
npm install -g ferman
ferman 3000Inspect a port:
npx ferman 3000Release a port without confirmation:
npx ferman 3000 --forceInspect without terminating anything:
npx ferman 3000 --dryInspect multiple ports:
npx ferman 3000 5173 5432List active listening ports:
npx ferman --listList active Node.js processes:
npx ferman --nodeList active Node.js processes with listening ports:
npx ferman --node-portsKill all matching processes by pattern:
npx ferman --kill-all --name viteStructured JSON output:
npx ferman 3000 --jsonLLM-oriented TOON output:
npx ferman 3000 --toonPlan mode without termination:
npx ferman 3000 --plan --jsonWatch mode:
npx ferman 3000 --watch --jsonMCP wrapper over stdio:
npx -p ferman ferman-mcpExposed MCP tools:
inspect_portsrelease_portsdoctor_portslist_node_processeslist_node_portsget_output_schema
- inspect and release ports on macOS, Linux, and Windows
- inspect without termination using
--dryand recommendation-oriented--plan - list active listening ports with
--list - scan common local development ports with
--commonand--doctor - list active Node.js processes and their listening ports
- target matching processes by name or command pattern with
--kill-all --name - emit stable JSON and TOON output for scripts, CI, and LLM-oriented workflows
- expose CLI operations through
ferman-mcp - keep exit codes and machine-readable error shapes predictable
Use ferman when:
- a local port is busy and you need to see what owns it
- you want an explicit way to release a blocked port
- you need structured output for tooling or agents
- you want a small CLI instead of platform-specific command chains
Do not use ferman when:
- you need container orchestration or deployment automation
- you want implicit destructive cleanup across an entire environment
- the problem is remote TLS, proxying, or infrastructure rather than local listeners
JSON:
{
"ok": true,
"code": "PORT_RELEASED",
"port": 3000,
"busy": true,
"action": "killed",
"message": "Port released."
}TOON:
ok: true
code: PORT_RELEASED
port: 3000
busy: true
processes[1]{pid,name}:
1234,node
action: killed
message: Port released.
Dev tools should be fast, predictable, and boring.
ferman keeps local ports and processes observable and manageable without hiding destructive actions behind ambiguous automation.
If ferman saves you time:
- Star the repo
- Support via GitHub Sponsors