portbook
shippedSix 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.
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), andwatch --jsonfor agents and scripts. None of them derive from each other. - Single static binary, ~5 MB. No runtime dependencies beyond
lsof(macOS) orss(Linux). - Stable JSON schema at
/api/ports,ls --json, andwatch --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.