WHOSEPORT

Know what is running.
Understand what is broken.
Fix it faster.

An AI runtime engineer for your local environment. It maps every port, process and container, investigates failures with evidence, and proposes fixes you approve.

What it investigates
$ whoseport 3000

PORT 3000
Process       node          pid 41022
Parents       zsh ← iTerm2  
Project       ~/code/web    Next.js
Git branch    feature/auth  (2 changed)
Started       14h ago

Likely purpose  Next.js dev server

Find what is holding a port, and who started it.

Port, PID, command, parent chain, project, branch and uptime in one call. Read-only: nothing is stopped unless you approve it.

Read the guide
Works with
  • Claude Code
  • Cursor
  • Any MCP client
  • Git
  • Docker

How it works

Investigating
APIelysia
:8080
Postgrescontainer
:5432 · platform-db-1
Runtime engineer, not a chatbot

Evidence first. Then a diagnosis. Then a fix you approve.

$ whoseport --watch live
PortProcessProject
3000node~/code/web200
5432postgres~/code/platform200
6379redis~/code/platform200
8080bun~/code/gatewayECONNREFUSED → :5433
8000python~/code/ml-service200
Observe

Every port, mapped to the process, project and branch behind it.

The local agent watches ports, processes, containers, Git state and HTTP health, and syncs changes to the dashboard every 10 seconds.

Span0s1s2s3s4s5s6sdur
Orchestrator · scope0.4s
Environment Analyst1.2s
list_processes · ev_10380.5s
list_containers · ev_10390.7s
Evidence Investigator1.5s
inspect_port :5432 · ev_10400.3s
inspect_project · ev_10410.5s
read_recent_logs · ev_1042 ✕0.7s
Diagnostician · model2.7s
Remediation Planner0.3s
Policy · awaiting approvallive
Investigate

A waterfall of what it checked, how long each check took, and what it found.

Every stage names the agent that ran it and the evidence id it produced. Hypotheses are written down, and the diagnosis cites the ids it rests on.

verify_action · inv_8c210/5
Config updatedDATABASE_URL → :5432
Process restartedpid 48291 → 51022
Port 8080 listeningtcp connect 2ms
GET /health200 · 41ms
Postgres reachabletcp :5432 · 1ms
Verifying…
Verify

A fix is finished when the checks pass, not when the command returns.

Port listening, health endpoint 200, database port reachable. Objective checks, recorded with the investigation.

Safe by default

The model reasons. It never gets a shell.

Every action is typed, classified by a deterministic policy, approved by you, executed by the local agent and verified afterwards.

Policy engine

Every action is classed before it runs, in the cloud and again on your machine. Prompt text cannot change the class.

autohttp_retry · refresh_snapshot
approvalrestart_process · update_runtime_config
absentno shell · no delete · no prune
Approval per mutation

Anything that changes your machine waits for a yes, with the target, risk and expected effect shown first.

2 mutating steps · risk high
apps/api/.env · 5433 → 5432
Approve and runReject
Redaction before upload

Tokens, passwords and connection-string credentials are stripped on your machine. The cloud only ever sees the redacted line.

DATABASE_URL=postgres://app:s3cr3t@…
DATABASE_URL=postgres://app:[REDACTED]@…
STRIPE_SECRET=[REDACTED]
Product

Three surfaces. One engine.

$ whoseport 8080

PORT 8080
Process bun pid 48291
Project ~/code/gateway Elysia
Git branch feature/auth (2 changed)
Started 14m ago

HTTP
 GET /health 503 12ms database unavailable

$ whoseport ask "why is the API unhealthy?"
 API process detected ev_1038
 Port 5432 reachable ev_1040
✗ Connection target mismatch ev_1042

ROOT CAUSE ▮▮▮ high
API targets :5433; PostgreSQL is on :5432.

 Approval required: review and approve the plan in the dashboard. No changes have been made.
The terminal is home.

One command shows every port. One more explains a failure. Nothing leaves your machine unless you connect the cloud.

$ whoseport$ whoseport 3000$ whoseport ask "…"$ whoseport --json
Capabilities

All the tools a runtime engineer needs

View all features
Observe
  • Port and listener discovery
  • Process to project mapping
  • Runtime and framework detection
  • Docker containers and networks
  • HTTP and health inspection
  • Git branch and worktree state
  • Environment snapshots and diffs
  • JSON output for scripts
  • Watch mode
Diagnose
  • Evidence-first investigations
  • Explicit hypotheses with confidence
  • Dependency and propagation analysis
  • Log and config inspection
  • Shared-port detection (IPv4 / IPv6)
  • Cited evidence ids
  • Cost and budget per investigation
  • Full decision trace
  • MCP tools for coding agents
Repair
  • Typed remediation plans
  • Deterministic policy engine
  • Per-action approval
  • Local-agent execution only
  • Objective verification checks
  • .env backup before every edit
  • Autonomy levels 0 to 3
  • Approvals recorded on the timeline
  • Approval by owner or org admin
Detects what you already run
Next.js
Vite
Astro
Express
NestJS
Hono
Bun
Node.js
Deno
FastAPI
Next.js
Vite
Astro
Express
NestJS
Hono
Bun
Node.js
Deno
FastAPI
Django
Flask
Ruby on Rails
Go
Spring Boot
Docker
PostgreSQL
Redis
MySQL
MongoDB
NGINX
Django
Flask
Ruby on Rails
Go
Spring Boot
Docker
PostgreSQL
Redis
MySQL
MongoDB
NGINX

Next.js, Vite, Astro, Express, NestJS, Hono, Bun, Node.js, Deno, FastAPI, Django, Flask, Ruby on Rails, Go, Spring Boot, Docker, PostgreSQL, Redis, MySQL, MongoDB, NGINX

Ready to know what is running?

One command to install. Read-only until you say otherwise.

$bun add -g whoseport
Create an account →
Team dashboard

Environment graph, investigation history and approvals for everyone in your organization. Free during early access.

See pricing
Give it to your agent

One MCP config line for Claude Code, Cursor or any MCP client. Read-only tools, so it can look but never change anything.

$ claude mcp add whoseport -- whoseport mcp
MCP setup docs