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.