All projects

Selected project / Live

PortDoc.

A local control panel for seeing what is running, which project owns each port, and what can be stopped safely.

PortDoc website with the Every local server, one clear view headline and dashboard preview
Role
Creator and developer
Product
Local development control panel
Stack
Rust, Axum, React, TypeScript

Why I built it

A calm answer to what is running.

I usually have several local apps running at once: Astro, Next.js, Vite, Node APIs, workers, local databases, Docker containers, and the occasional process that should have stopped yesterday.

The usual answer is a mix of lsof, ss, ps, memory, and guessing. PortDoc replaces that daily routine with a dashboard organized around projects, apps, ports, and useful URLs.

Find the port owner

Look up a port and see the process, project, command, age, and exposure in one place.

Group by project

See local apps, APIs, databases, and background services under the repository that owns them.

Check exposure

Distinguish local-only, LAN-visible, Docker-bound, and unknown services before opening them.

Stop safely

Stop stale services with confirmation, process checks, and verification that the port was released.

How it is built

One binary. One local dashboard.

A Rust binary uses Axum to serve an embedded React and TypeScript interface from the same local process.

Core stack

  • Rust
  • Axum
  • React
  • TypeScript
  • Vite
  • Tailwind CSS
  • cargo-dist

Runtime flow

  1. 01Platform probes

    Linux, macOS, and Windows adapters collect socket and process metadata.

  2. 02Snapshot contract

    One JSON shape feeds both the browser interface and portdoc --json.

  3. 03Embedded interface

    The Vite application is bundled into the Rust binary for release builds.

  4. 04Safe stop

    Graceful stops use confirmation and verify that the selected port was released.

Use the product

Know what owns the port. Then act safely.

Install PortDoc on Linux, macOS, or Windows and open the local dashboard from one command.