slow signal labs : features : how it works : install

localhost radar_

See every server your AI coding tools left running on this computer, who started it, and whether it still answers.

Chrome extensionv0.1.0freeno accountnothing leaves your computer
Chrome Web Store in review Install it now ↓

:what it shows

Every local server, by the agent that started it.

Your agents start servers. Claude Code runs a dev server, Codex starts another in a worktree, Antigravity opens a preview. An hour later port 3000 is taken and nobody remembers by whom. Radar lists them all, grouped by the tool that started each one.

  • ›Who started it, and how sure Radar is. "Started inside a Claude Code session" is certain. A marker left in a detached process is likely. Anything else it labels a guess.
  • ›Where: the project, its git branch and worktree.
  • ›Whether it answers: status code, page title and icon. Also uptime, CPU and memory.
  • ›Which tabs already point at it. Open switches to that tab instead of opening another.
The Radar popup listing servers grouped under Claude, each with its port, status, project folder and Open, Copy, Details and Stop buttons.
The popup, with example projects.
One project card for recipe-finder holding four servers: dev on 5173 from Claude Code, dev on 5174 from Codex in the feat/search worktree, a preview on 4173 from Gemini CLI returning a 500, and Storybook on 6007.
One project, three agents, two branches.

:one project, every port

Dev, preview, Storybook and worktrees, together.

Agents rarely start just one server. Often there's a dev server, a preview of the build, Storybook, the API, and a second copy on another branch in a worktree, each on its own port and sometimes from a different agent.

Radar groups them by the git repository they belong to, so worktrees and monorepo packages land in one place, and gives each one a role. It shows why it chose that role (for example, "its command runs vite preview"). You can stop the whole project at once, after seeing the list of what will stop.

:what it notices

It flags what needs a look, quietly.

01+

Leftovers

A server whose agent session has ended, or let go of it, is marked detached.

02+

Open to the network

Bound to 0.0.0.0, so other devices on your network can reach it.

03+

Port clashes

Two programs on one port, IPv4 and IPv6. localhost may reach either one.

04+

Hangs and errors

Servers that accept a connection but don't answer, or answer with a 5xx.

05+

Ports Chrome blocks

6000, 6665–6669 and others that Chrome refuses to open, said before you try.

06+

Tabs with nothing behind them

Tabs still pointing at a port where nothing listens. Close them in one go.

A card for a detached Storybook server with a confirmation asking to stop node storybook dev, with Cancel and Stop buttons.

:in charge

Stop exactly what you meant to stop.

Before anything ends, Radar names it: "npm run dev and the 3 processes it started", plus any other port that would go with it. It climbs through dev runners, watchers and reloaders, so nothing restarts itself behind your back.

Then it checks that the process id still belongs to the program you saw, sends the normal shutdown signal, and forces it only if you ask. It won't touch your shell, terminal, editor, agent, Docker or your own browser.

You can also rename, pin or hide a server, and correct who started it. Those choices stay in your browser.

:who it knows

The tools it looks for, and how.

Radar walks up from each server's process. The nearest AI tool above it counts as the one that started it. If a server was detached and has no parent left, Radar looks for markers the tool leaves in its children's environment.

toolrecognised bynote
ClClaude Codethe claude process; CLAUDE_CODE_CHILD_SESSIONClaude's editor extensions also set CLAUDECODE in their terminals, so on its own that counts as a hint.
ClClaude appits app bundle
CxCodex CLIthe codex process; CODEX_THREAD_ID, CODEX_SANDBOX
CxChatGPT / Codex appits app bundle
AgAntigravitythe app and agy
AgAntigravity IDEits app bundleIts terminal can also be you typing, so Radar calls this likely, not certain. The same goes for Cursor and Windsurf.
··and moreby process name and environment markerGemini CLI, Cursor, Copilot CLI, OpenCode, Amp, Aider, Qwen Code, Goose, Crush, Kiro, Cline, Factory Droid, Kimi Code, Mistral Vibe, Grok Build, Junie, Auggie, Qoder, and the Windsurf, Trae and CodeBuddy editors

:how it works

One small helper. Nothing leaves your computer.

A browser can't see which program owns a port, so Radar comes with a helper: a readable Python script that your browser starts only when Radar asks. Only this extension may start it. It needs no account and no network, and it stores nothing.

Radar in the browser talks to the helper; the helper reads the process list and asks local servers for their status. All of it stays inside this computer. this computer Radar in Chrome, Edge, Brave, Arc, Vivaldi native messaging helper Python, readable, starts on demand process list ports, parents, folders local servers :5173 :3000 :8000 the internet

Without the helper, Radar still finds servers answering on common ports. It just can't say who started them, or stop them.

:install

Two minutes, no admin rights.

  1. Add Radar to your browser

    From the Chrome Web Store once it's through review. Works in any Chromium browser, version 120 or later.

  2. Download the helper installer from Radar's setup page

    It opens by itself after you add Radar. The installer is generated there for your copy of Radar and contains the helper as source you can read first.

  3. Run one command

    macOS and Linux:

    bash ~/Downloads/install-localhost-radar.sh

    Windows, in PowerShell:

    powershell -ExecutionPolicy Bypass -File "$env:USERPROFILE\Downloads\install-localhost-radar.ps1"

    Needs Python 3.8 or newer. The setup page turns green when the helper answers. --uninstall removes it again.

:privacy

No account. No analytics. No servers of ours.

Radar talks to its helper and to servers on localhost, and nothing else. Your names, pins and a day of history stay in your browser. Read the privacy policy.