Show HN: Havn – one command to see everything running locally (github.com)

2 points by haseeb16 ↗ HN
I kept running lsof -i :PORT repeatedly to check what was alive locally. Eventually I wrote a small tool around it and it turned into this.

How it works: - One lsof / netstat call maps all listening processes - 100+ ports scanned in parallel via TCP connect, 150ms timeout each - HTTP fingerprinting reads response headers to identify frameworks (Spring Boot, Express, Django, etc.) - Filesystem detection reads package.json, pom.xml, go.mod, Cargo.toml from the process working directory to get the actual project name - Redis gets a PING/PONG health check, Postgres gets a connection handshake - Results pushed to the browser via WebSocket every few seconds

First scan: ~800ms. Subsequent scans: ~300-400ms. Memory: ~55MB RSS.

Detects 40+ services including databases, queues, monitoring tools, and AI runtimes (Ollama).

Single file UI, no build step, no bundler. Just HTML/CSS/JS served by Express.

npm install -g @haseeb-xd/havn && havn

GitHub: https://github.com/haseeb-xd/havn

Happy to answer questions about the detection approach or the performance tradeoffs.

1 comment

[ 3.2 ms ] story [ 16.2 ms ] thread
Curious how the filesystem detection handles permission errors on Linux. if havn runs as a different user than the process it's inspecting, does /proc/<pid>/cwd silently fail or does it surface something in the UI?