Out now · open source · local-only

The front door for everything you vibe-coded on a random port.

Hallway keeps a live list of every web server running on your machine: the ones you installed on purpose, the ones a coding agent started and forgot, and the ones nobody remembers starting at all.

It shows them on one calm page, with what each one is, whether it is healthy and how to reach it, it can start a server as a native service that outlives the session, and it gives each app a memorable HTTPS name if you want one.

On npm
$ npm i -g hallway && hallway service install

macOS and Linux, and Windows best effort (no HTTPS names there, and not yet tried on a real Windows desktop). Node 22.13+. The second command runs Hallway at every login (a LaunchAgent on macOS, a systemd user unit on Linux, a scheduled task on Windows); then open http://localhost:4255. The first five minutes

The Hallway dashboard on demo data: a header reading Hallway, my-laptop, 3 up, 1 down; five app cards drawn as doors with their ports on brass plates, three showing a screenshot of the app, one down with a red edge and one stopped; then two servers found running and not yet named, with Claim and Ignore buttons
Real capture · demo data

The problem

Six servers, two weeks, one reboot.

Coding agents make small web apps nearly free: a dashboard, a slide deck, a log viewer, a little internal tool. Each one runs on some port, started by npm run dev in a session that has long since ended.

One developer looked at what was listening on their laptop and found six dev servers on ports 4321, 4455, 4666, 4670, 4671 and 7333, one to two weeks old. Three had command lines like node dist/index.js that said nothing at all; they could only be identified by reading each process’s working directory.

Three of them were the same dashboard, running from three git worktrees of one repo. Every worktree asked for port 4666, so two had been pushed onto 4670 and 4671 by hand. Only the branch names told them apart.

Then the machine rebooted. All six died, nothing restarted them, and nobody noticed for two days. By then their working directories were gone, so there was no way to say what had been lost.

Hallway is the page that would have known.

What it does

A home page for your own machine.

A home-lab dashboard for one laptop: self-populating, so it never needs maintaining, and calm, so you can leave it open as your new-tab page.

v0

It finds what is running

A scanner looks at what is listening, skips the IDE and tool helpers on high ports, and names each server from its working directory, package.json and git branch. Claim one in a click.

v0

Every door labelled

One page lists every app with its name, its port on a door-number plate, its health and 24 hours of uptime. Worktree siblings show as repo @ branch, so identical apps stop looking identical.

v0

Calm by default

Something you stopped on purpose shows as a closed door, never as red. Only an app you said should be running can be down, and only then does the page (and its tab title) raise the alarm.

v0

Plain YAML you can edit

One small file per app and per bookmark group, in ~/.hallway. Edit one in your editor, or let an agent do it, and every open dashboard updates within a second.

v1

Memorable HTTPS names

Turn on fronted mode with hallway setup and every app gets https://<slug>.localhost with a locally trusted certificate, through Caddy running as you. No DNS server needed; your own domain, such as myname.internal, if you want one.

v1

Survives the reboot

hallway run --persist makes the apps you care about native services (launchd on macOS, systemd on Linux, a scheduled task on Windows) that come back on their own. Everything else is remembered: after a restart Hallway lists what was lost, with one click to start each again.

How it works

From a pile of forgotten ports
to a hallway of labelled doors.

Found running, not yet named v0

The scanner turns “something has been listening on :4666 for nine days” into a row with a name, a directory, a branch and an age, flagged as orphaned when its session is gone. Claim it and it becomes an app, on the port it already uses. Or ignore it for good.

The observed tray, Found running, not yet named: two unnamed servers on ports 6404 and 6405, one labelled notes-search from ~/Code/notes-search @ feature-search, the other scratch-photos, each with how long it has been up, its framework, its page title, and Claim, Ignore and Open buttons
Real capture · demo data

A door for every app v0

Each app is a door with a number plate: its port. Healthy apps stand ajar with a sliver of lamplight, and with hallway thumbs enable a screenshot of the app as the glass; stopped ones are simply closed; down ones go dark. Every state is also a shape and a word, so the picture is never the only clue.

Five app cards drawn as doors: Local Review, Notes and Slides healthy, each with a screenshot of the app in the door and a green uptime bar; Metrics down, boarded up, with a red square, the word down and red at the end of its bar; Storybook stopped, a closed grey door with a monogram
Real capture · demo data

Agents start servers properly v1

Instead of a bare npm run dev, an agent runs hallway run. The server is handed to launchd (systemd on Linux, a scheduled task on Windows) so it outlives the session, keeps a stable port, and the command prints the URL and exits, so it never hangs a tool call.

Lost at last reboot v1

After a restart, Hallway lists the servers that were running before it and didn’t come back, with where each ran from and the command that started it. Restart one once, make it a service that comes back at every login, or dismiss it.

The Lost at last reboot banner, reviewed: three servers that were running before the reboot and are not now, each with its port, directory and branch, the command that started it, and Restart once, Make it a service and Dismiss buttons
Real capture · demo data

Names instead of numbers v1

In fronted mode, Caddy serves each app at https://<slug>.localhost with a certificate your machine trusts. Adding an app never needs sudo; the privileged steps are one guided hallway setup that prints every command before it runs.

Bookmarks by the front door v0

The remote things you always forget the URL of, such as admin consoles, BI dashboards and status pages, hang by the door as favicon chips in groups. They are inert: nothing is launched or checked.

Two bookmark groups, Production (Admin console, Status page, BI dashboards) and Docs (Team wiki, API reference), each a row of chips with a monogram and a title
Real capture · demo data

Built for agent-spawned servers

Files first, so every agent can help.

Everything Hallway knows lives in small YAML files under ~/.hallway. Any coding agent that can edit a file can register an app or add a bookmark, and the dashboard updates live. No plugin, no API key.

  • One command instead of npm run dev

    hallway run <slug> -- <command> starts the server as a user service (launchd, systemd, or a scheduled task on Windows), waits for it to listen, prints the URL and exits.

  • A guide written for agents

    hallway guide prints the agent guide, with live data, and hallway guide --snippet prints a short paragraph for your AGENTS.md or CLAUDE.md.

  • MCP, without the risk

    An MCP server on the same port (/mcp, or hallway mcp on stdio) describes apps and edits bookmarks, through the same write path as everything else. It never starts a process.

Read about agents
~/.hallway/apps/slides.yaml
name: Slides
description: Quarterly review deck
port: 4321                  # never changed by Hallway
expected: adhoc             # up sometimes; off is fine

health:
  path: /

project:
  dir: ~/Code/slides

tags: [decks]

Available now

Leave a light on for your next side project

A dashboard of everything listening on your machine, health checks, bookmarks, a scanner that names what it finds and hallway run for servers that outlive the session. No proxy, no DNS and no sudo, on macOS and Linux, and on Windows best effort. Memorable HTTPS names are one guided hallway setup away, on macOS and Linux.

On npm
$ npm i -g hallway && hallway service install

macOS and Linux, and Windows best effort (no HTTPS names there, and not yet tried on a real Windows desktop). Node 22.13+. The second command runs Hallway at every login (a LaunchAgent on macOS, a systemd user unit on Linux, a scheduled task on Windows); then open http://localhost:4255. The first five minutes