# Servers and ports

> See what’s listening on a machine, and open its web servers at localhost on your computer.

A dev server running on another machine is usually a pain to look at: it listens on `localhost` there, and you’re here. Muxen lists what each machine is serving and puts any of it at `localhost` on your computer with one click. No desktop, no ssh tunnel to remember, nothing opened on the network.

![Beacon's page: its Servers list with a Vite dev server on port 5173 open at localhost:5173, a noVNC container and a shop app, and 8 other ports folded away.](https://muxin.dev/images/shots/servers-dark.png?v=5b58774c)

*The dev server on port 5173 runs only on Beacon. Here it’s open at localhost:5173, and listed under Beacon in the sidebar.*

## What’s listening

The **Servers** section on a machine’s page lists every port something listens on there.

- **Web servers come first**, with the title of the page they serve (a dev server, a Docker container’s site), the program or container behind them, and their HTTP status.
- **Everything else** is folded under “N other ports”: databases, system services, apps’ helpers.
- “Only on Beacon itself” means the server listens on the machine’s own `localhost`. You can still open it from here.

The list is read again while the page is open, and the refresh button next to it asks right away.

## Open one here

**Open** on a web server puts it on your computer at `localhost`, on the same port number when that’s free here, and opens it in your browser. Other ports have **Forward** instead: the same, without the browser, for a database client or an API tool.

1. **localhost:5173 here**: Your browser connects to a port Muxen listens on, on your computer only.
2. **The machine’s connection**: Muxen carries it over the live connection it already has to that machine, ssh or direct.
3. **Port 5173 there**: The machine’s agent connects to the server, as if you were on the machine.

*Nothing is opened to the network on either side.*

Because it goes through Muxen’s own connection to the machine, it works the same over ssh, over a direct connection, at home or through Tailscale.

## Open ports in the sidebar

- An open port is listed under its machine in the sidebar, as `localhost:5173`. Click it to open it in your browser again.
- **×** next to it (or **Close** on the machine’s page) stops it here. The server on the machine keeps running.
- Open ports come back when Muxen starts.
- When the server on the machine stops, Muxen closes it here and tells you.

## Any port

Something not in the list yet, say a server you’re about to start? Type its number into **Open a port** above the list and press Return.

> **Tip:** Looking at it in a browser on the machine itself instead? That’s what [Desktops](https://muxin.dev/docs/desktops) are for. For a web app you’re building, opening it here is usually quicker and sharper.

## On Windows

Windows’ own web server holds a few ports for its services (device discovery on 5357, remote management on 5985) and answers anything else with an error page. Muxen doesn’t list those as servers.

## From a terminal and from agents

```
muxen ports beacon         # what’s listening there, web servers first
muxen forward beacon 3000  # its port 3000 at localhost:3000 here, until Ctrl-C
```

Agents get the same list with `machine_ports`. To check a server from the machine itself, they can run `curl -sS localhost:3000` there with `workspace_exec`. See [MCP for your agents](https://muxin.dev/docs/agents).
