Monitor active localhost ports · Host HTML files on real servers · Scan your local network · Completely local and private
👉 Visit our interactive Landing Page & Documentation Website
Install · Setup · Features · API Contract · File Structure
Tired of port conflicts (EADDRINUSE), guessing which dev server is on port 3000 vs 8080, or setting up full dev environments just to preview a static HTML snippet?
Localhost Manager gives you a clean control center directly in your browser toolbar to track, host, and inspect local services.
| Feature | Description |
|---|---|
| 🔍 Port scanner | Monitors a configurable list of localhost ports and shows their status in real time |
| ⚡ Auto scan | Probes all 65,535 ports in parallel batches — results cached for up to 24 hrs |
| 📄 HTML hosting | Serves any HTML file on a real http://localhost port via the Node.js control server |
| 🌐 Network scan | Optionally scans devices on your local network (192.168.x.x) |
| 🎨 Themes | Light, dark, or auto (follows system appearance) |
| ⬡ Live status dots | Green = active · Gray = offline · Blue = hosted · Red = error |
| Drag any port row left to reveal a delete button | |
| Smart caching | Configurable scan interval (30 min → 24 hr) — popup opens instantly from cache |
| Acsent color picker | Adds much more personalization to Your extension |
| Clean UI | Check out the examples bellow! |
Step 1 — Download the extension
Go to Releases and download the latest .zip. Extract it to a permanent folder — Chrome loads the extension directly from this folder so don't delete it after loading.
Step 2 — Load into Chrome
- Open
chrome://extensions - Enable Developer Mode (top right toggle)
- Click Load unpacked
- Select the
port_extextension folder inside the extracted files
The extension icon will appear in your toolbar.
Step 3 — Start the control server
The control server is required for the Host HTML feature. It runs a tiny local REST API that the extension uses to spin up and tear down real HTTP servers.
node server.jsLeave this terminal open while using the extension. You should see:
┌─────────────────────────────────────────┐
│ Localhost Manager Pro — Control Server │
│ Listening on http://127.0.0.1:8765 │
│ Keep this terminal open while using │
│ the extension. Ctrl+C to quit. │
└─────────────────────────────────────────┘
Requires Node.js or Python — no
npm installneeded, uses only built-in modules.
Important
When installing remember to load the port_ext file into your browser instead of the entire source code as it will fail because it is not the extension itself.
Once installed, click the extension icon. Active services appear immediately with a green dot. Click any row to open it in a new tab.
Open Settings (gear icon in the popup) and toggle Auto scan on. The extension will probe every port from 1–65,535, cache the results, and only re-scan after your chosen interval.
30 min ──┬── 1 hr ── 2 hr ── ... ── 24 hr
└── default: 2 hr
Inactive ports are automatically removed from the list when auto scan is on.
- Make sure
node server.jsis running - Click Host HTML in the popup
- Pick any
.htmlfile - The extension finds a free port in the
9000–9005range, starts a real HTTP server, and opens it in a new tab - Click the stop button (swipe left on the row) to shut it down
Localhost-Manager/
├── manifest.json # Extension manifest (MV3)
├── background.js # Service worker
├── servers/
│ ├── server.js # Node.js control server (run separately)
│ └── server.py # Python version of the Node.js server
├── templates/
│ ├── popup.html # Extension popup UI
│ └── settings.html # Settings page
└── scripts/
├── popup.js # Popup logic
└── settings.js # Settings logic
The extension communicates with server.js over plain HTTP on http://127.0.0.1:8765. You can replace server.js with your own implementation in any language — as long as it speaks this contract.
Base URL: http://127.0.0.1:8765
All responses: Content-Type: application/json
CORS headers required on every response:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
GET /status — health check
{
"ok": true,
"activePorts": [9000, 9001]
}POST /start — serve an HTML file
Request body:
{
"port": 9000,
"content": "<html>...</html>"
}Success:
{
"ok": true,
"port": 9000,
"message": "Serving on http://localhost:9000"
}Failure:
{
"ok": false,
"error": "Could not bind port 9000: address already in use"
}POST /stop — shut down a hosted server
Request body:
{ "port": 9000 }Success:
{
"ok": true,
"port": 9000,
"message": "Stopped server on port 9000"
}Failure:
{
"ok": false,
"error": "No server running on port 9000"
}| Setting | Description |
|---|---|
| Theme | Light / Dark / Auto (follows system) |
| Grid view | Toggle between list and icon grid layout |
| Auto scan | Discover all active ports automatically |
| Scan interval | How long to cache auto scan results (30 min – 24 hr) |
| Local network scan | Scan 192.168.x.x devices on common ports |
| Dot | Meaning |
|---|---|
| 🟢 Green | Port is active and responding |
| ⚫ Gray | Port is in your list but not responding |
| 🔵 Blue | Port is being hosted by the extension |
| 🔴 Red (pulsing) | Error — e.g. control server offline |
| 🟡 Yellow (pulsing) | Scanning in progress |
Works on any Chromium-based browser with Manifest V3 support:
| Control server port | 8765 |
| Hosted file ports | 9000 – 9005 |
| Auto scan range | 1 – 65,535 |
| Cache interval | 30 min – 24 hr |
| Network scan range | 192.168.x.1 – .30 (configurable) |
| Manifest version | MV3 |
| Node.js required | For Host HTML feature only |
| Security | 100% private. Runs entirely locally on your machine. |
The first number is the extension's version, the second number is the major update and finaly the third one are the minor updates.
Built for developers who run too many servers.
---- Releases ----
GPL 3.0 License
Copyright © 2026 Robotics-now