← all projects

portbook

shipped

Six dev servers running on six random ports and no idea which is which. Portbook finds them, labels them, and gives you one page to click through — or one terminal command to list them.

2025-12 – Present

  • Rust
  • axum
  • lsof
  • ss
  • SSE

A local-only Rust CLI + web UI that auto-discovers HTTP servers on every non-standard localhost port, labels each card by project name (detected from process cwd markers) and page title, and classifies ports as live / error / dead with visible reasons.

Why it exists

The default developer experience for multi-server local setups is keeping a mental map of which port is which project. Portbook is what happens when you decide that's a bug.

What's nice about the implementation

  • One typed data model, multiple peer surfaces. Web UI (SSE), terminal ls (colored grouped output), TUI (filter + expand row), and watch --json for agents and scripts. None of them derive from each other.
  • Single static binary, ~5 MB. No runtime dependencies beyond lsof (macOS) or ss (Linux).
  • Stable JSON schema at /api/ports, ls --json, and watch --json — same shape everywhere, so scripts don't break when the UI evolves.
  • portbook explain <port> prints a paste-ready diagnostic block (probe URL, elapsed time, error class, attempts) for filing issues when a port is misclassified.