Skip to main content

Sokket – Own Your Localhost

A free macOS app that shows everything holding a port on your machine, names it by project rather than process ID, and lets you kill, forward, watch and record it without leaving the window.

Visit website
  • macOS Application
  • Developer Tooling
  • Networking & Processes
  • Container Integration
  • Performance Profiling

Overview

Every developer knows the moment a dev server refuses to start because something already holds the port. Finding out what is usually four commands: look up the port, get the process ID, work out what that process actually is, and work out which directory it was started from — because node alone tells you nothing when six of them are running.

Sokket replaces that with a single row. It is a free macOS app that lists every port on the machine, names each one by the project it belongs to, and puts Kill, Forward, Watch Live and Record next to it. I wrote about why it exists in Something Is Already On Port 3000.

A Port Should Say What It Is

Rows do not read node 30014. They read storefront · next dev · ~/code/storefront · 14% CPU · 412 MB. The name comes from the directory the process was started in — Sokket reads whatever file describes the project there, package.json for JavaScript or Cargo.toml for Rust, and falls back to the git repository name when neither exists.

Selecting a row opens a detail pane with the full command line, the working directory, CPU, memory, threads and open connections, the process tree showing what spawned what, and whether the port is reachable only from the machine itself or from anyone on the network.

Key Features

Containers as First-Class Rows

Docker, OrbStack, Colima and Podman ports appear in the same table, showing the container name, image and compose service rather than the anonymous proxy process that technically holds the port. Stop the container, or free just the port.

Kills That Check Themselves

Sokket asks a process to stop politely, waits, then forces it — and re-verifies the process is still the one you selected before forcing, so a recycled process ID never takes down something innocent. Kill tree lists every child first. You can also kill by typing a port or process ID.

Forwarding by QR Code

Right-click a port, choose Forward, pick “Anyone on the network” and scan the QR code. The dev server is on your phone. Stop the forward when you are done. An Exposed view shows everything currently reachable from the network, which is worth a glance on café Wi-Fi.

Recording and Playback

Capture a port at up to ten samples a second while you work, with a global shortcut to drop a marker the moment something feels wrong. Playback lets you zoom to the moment a memory line turns, read range averages, and jump between detected problems rather than scrubbing for them.

Evidence Instead of Impressions

Live view opens a port in its own tab with a chart per metric and a running request log, updating every second. Compare puts two recordings on one chart, so “did the fix help?” can be answered with numbers rather than a feeling.

Exports cover the chart as an image, the metrics as a spreadsheet, the log as text, captured requests in the format browser dev tools already read, or the whole recording. Passwords, tokens and cookies are stripped as the recording is written rather than on the way out, so a capture is safe to attach to an issue from the moment it exists.

Constraints and Testing

A tool that watches your machine has to earn trust, so a few rules were fixed before anything else. Nothing leaves the Mac — ports, projects, paths and recordings are never uploaded, and the app only contacts a server to check for updates or send feedback. There are no accounts or licence keys, and every feature is in every copy. Nothing runs in the background: no helper, no daemon, no login item, and sampling happens only while the window is open and in front. The download is about 5 MB and a full scan takes a few milliseconds.

To make sure it held up under the conditions it would actually be reached for, I built a deliberately hostile test environment: six containers under constant load, thousands of requests, ports opening and closing every few seconds, six live views at once, recordings reconfigured mid-capture and whole process trees killed underneath it. That surfaced problems a quiet test never would — a busy recording taking over two minutes to open, events after a pause landing at the wrong time, problem-jumping sticking on the first result. Each is fixed and each has a regression test, out of more than 500 in total.