# Localhost Radar

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

A free Chrome extension by [Slow Signal Labs](https://slowsignal.xyz). Version 0.1.0. No account; nothing leaves your computer. The Chrome Web Store listing is in review.

## 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.

## 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: dev, preview, Storybook, docs, tests, API or static. 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.

1. **Leftovers.** A server whose agent session has ended, or let go of it, is marked detached.
2. **Open to the network.** Bound to 0.0.0.0, so other devices on your network can reach it.
3. **Port clashes.** Two programs on one port, IPv4 and IPv6. `localhost` may reach either one.
4. **Hangs and errors.** Servers that accept a connection but don't answer, or answer with a 5xx.
5. **Ports Chrome blocks.** 6000, 6665–6669 and others that Chrome refuses to open, said before you try.
6. **Tabs with nothing behind them.** Tabs still pointing at a port where nothing listens. Close them in one go.

## 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.

| Tool | Recognised by | Note |
|---|---|---|
| Claude Code | the `claude` process; `CLAUDE_CODE_CHILD_SESSION` | Claude's editor extensions also set `CLAUDECODE` in their terminals, so on its own that counts as a hint. |
| Claude app | its app bundle | |
| Codex CLI | the `codex` process; `CODEX_THREAD_ID`, `CODEX_SANDBOX` | |
| ChatGPT / Codex app | its app bundle | |
| Antigravity | the app and `agy` | |
| Antigravity IDE | its app bundle | Its terminal can also be you typing, so Radar calls this likely, not certain. The same goes for Cursor and Windsurf. |
| and more | process name and environment marker | Gemini 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 Chrome, Edge, Brave, Arc or Vivaldi, talks to the helper over native messaging. The helper reads the process list (ports, parent processes, folders) and asks the local servers how they are. All of it happens on this computer.

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 (`-Uninstall` on Windows).

## 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](https://radar.slowsignal.xyz/privacy.md).

---

© 2026 [Slow Signal Labs](https://slowsignal.xyz). This page in other languages: [日本語](https://radar.slowsignal.xyz/ja/), [한국어](https://radar.slowsignal.xyz/ko/), [简体中文](https://radar.slowsignal.xyz/zh-hans/), [繁體中文](https://radar.slowsignal.xyz/zh-hant/).
