Open a project. Know how to run it.
If it runs in your terminal, it runs here.
A Service is a folder, a command line and its environment, run in your login shell so PATH, version managers, pipes and && work. Add a Project’s folder and localhost suggests Services from package.json, Compose files, Python apps and Cargo binaries; you check each one before anything is saved. No Docker or containers required: a Compose service is just one more Service.
- Node
pnpm dev- Bun
bun run dev- Python
uv run fastapi dev- Rust
cargo run- Compose
docker compose up postgres- Anything
./bin/dev --port $PORT
Know who’s on :3000.
The Ports view shows every process listening on a TCP port and whose it is. If a Service’s Port is taken, localhost says by whom and can start on the next free one, for that Run only. How Ports work ·Port already in use?
Environment without .env juggling.
Variables on the Project, on each Service and in Environment Profiles. Any of them can be a Secret, kept in Keychain, Secret Service or Credential Manager, never in a file. Environment and Secrets
Your coding agent flips the same switches.
localhost mcp lets Claude Code, Cursor and Codex start and stop your Services and read their logs and ports. What an agent starts shows in the window; it never starts a second copy, and it stops when the agent leaves, unless the app is open. Connect them from Settings in one click, or with npx @getlocalhost/cli mcp install.
- Ports that collide
- An agent runs pnpm dev while yours is already up, and the second copy fails on a taken port, or picks another port nobody told you about.
- Processes left behind
- A dev server started in the agent’s shell can outlive the chat, holding its port and memory until you go looking for its pid.
- Logs nobody can see
- Its output goes to a shell you can’t read, and the agent only sees what it captured, so a crash looks like silence.
// a coding agent, through localhost mcp → start_service { project: "acme-shop", service: "web" } ← web running 5173 startedBy: agent api running 8000 startedBy: app
Your machine, your rules.
- No account
No sign-in and no backend. Works offline, on your machine only.
- Nothing in your repo
Configuration lives in localhost’s own storage. Export a Project file when you want to share one.
- Nothing silent
No automatic restarts, and no Suggestion applied until you check it.
- Native everywhere
SwiftUI on macOS, one light app for Linux and Windows, all on one Rust core.
Install
Releases aren’t notarized or signed by a known publisher yet, so macOS and Windows ask once at first launch. The install steps show exactly what to click.
macOS
brew install --cask marcellosso/tap/localhostHomebrew also puts the localhost command on your PATH.
Windows
Projects on Windows itself, or inside a WSL 2 distro. Installs for your user only, no administrator rights.
Windows 10 or 11 · x64Linux
.deb, .rpm and AppImage, with a tray icon. Secrets in the Secret Service.
Questions
What is localhost app?
localhost app (getlocalhost.app) is a free, open-source desktop process manager for local development: it starts, stops and watches all your dev servers, workers and databases from one window instead of terminal tabs. It runs your own commands, such as npm run dev, uv run or cargo run, with no Docker or containers required; Compose services can be one of them. Native on macOS, built with Tauri for Windows and Linux. A GUI alternative to pm2, foreman and tmux for local dev. It also has an MCP server, localhost mcp, so AI coding agents (Claude Code, Cursor, Codex) run the same Services.
A Project is a folder; a Service is one long-running command in it, such as pnpm dev, uv run fastapi dev or docker compose up postgres. localhost runs it in your login shell, keeps its output, knows when it is up, and stops its whole process tree when you ask.
Do I need Docker to use localhost?
No. localhost runs your own commands, such as npm run dev, uv run fastapi dev or cargo run, natively in your login shell, with your PATH and version managers. No Docker or containers are required. If you use Docker Compose, a Compose service can be one of your Services (docker compose up postgres): localhost suggests one per service in your Compose file, and if Docker isn’t running, the Service fails with that reason.
Is localhost a pm2 alternative?
For local development, yes. pm2 is a production process manager, mainly for Node.js/Bun apps, built to keep them alive on servers. localhost is built for the dev servers on your own machine: a window per Project, Dependencies between Services, a Ports view and one merged log. It never restarts a Service on its own. To keep processes running in production, keep pm2.
How do I run frontend, backend and database together?
Add the Project’s folder and localhost suggests Services from package.json scripts, Compose files, Python apps and Cargo binaries. Make the API start after the database, then press Start All (⇧⌘R, or Ctrl+Shift+R on Linux and Windows): each Service waits until its Dependencies are Running, and All services shows every log in one stream.
Can AI coding agents start my dev servers through localhost?
Yes. localhost mcp is an MCP server for Claude Code, Cursor, Codex and other coding agents: they list your Projects, start and stop Services, and read their status, logs and ports, instead of running pnpm dev in a shell you can’t see. They can also add, edit and remove Projects and Services, checked as the app checks them: removing needs confirm: true and never touches a Project’s folder, and localhost mcp --read-only leaves those tools out. The agent and the app share one background core, so what the agent starts shows in the app, and the Services it started stop when it disconnects, unless the app is open.
Is it free and open source?
Yes. localhost is free and open source under the MIT license. There is no account and no backend, and it works offline.
Does it work on Windows/WSL and Linux?
Yes. On Windows 10 or 11 (x64), a Project runs on Windows itself or inside a WSL 2 distro. On Linux there are .deb (Ubuntu 22.04+, Debian 12+), .rpm (Fedora) and AppImage packages for x86_64. On macOS it needs macOS 15 or later, on Apple silicon or Intel, and Homebrew installs it too: brew install --cask marcellosso/tap/localhost.
Releases aren’t notarized yet, so the first launch on macOS needs one extra step: System Settings → Privacy & Security → Open Anyway, or xattr -dr com.apple.quarantine /Applications/localhost.app in Terminal. On Windows, SmartScreen asks once: click More info, then Run anyway.
Close the terminal tabs.
Configure a Project once. From then on, it is one switch away.
brew install --cask marcellosso/tap/localhost