localhost:

How do I run this project again?

Forgot how to run a project you haven’t opened in months? Find its dev commands in package.json, Compose files and Cargo, then have localhost remember them.

Look where projects keep their commands. From the project’s folder:

npm run                             # lists package.json scripts (pnpm run, yarn run, bun run too)
docker compose config --services    # the Compose services, if there is a compose.yaml
cat Procfile Procfile.dev           # a Procfile runner's processes
ls .nvmrc .tool-versions mise.toml  # which Node, Python or Ruby it expects
cat .env.example                    # the variables it needs

Then read the README’s “Development” section, if it has one.

Where does a project keep its dev commands?

Most projects say how they run somewhere in their own files:

  • Node.js and Bun: the scripts in package.json. Look for dev, start or serve; in a monorepo, in each package’s package.json too.
  • Docker Compose: compose.yaml or docker-compose.yml, one service per database, queue or app.
  • Procfile: Procfile or Procfile.dev, one process per line.
  • Python: manage.py runserver for Django, fastapi dev or uvicorn for FastAPI, flask run for Flask, run with uv, Poetry, Pipenv or a virtualenv.
  • Rust: cargo run, with --bin <name> when there are several binaries (in src/bin/ or [[bin]] in Cargo.toml).
  • A Makefile or justfile: make dev, just dev.

Why do I keep forgetting how to run it?

Because the answer is spread out. The commands are in one file, the order they start in is in your head, the ports in another file, the variables in a .env you didn’t commit, and the version of Node in a tool you set up a year ago. Coming back to a project means putting that together again, and so does every coding agent that touches it.

How can localhost remember how each project runs?

localhost is a free, open-source desktop app that remembers how each of your projects runs: its commands, ports and environment. You set a project up once; after that, you open localhost, pick the Project and press Start All.

  1. Add the folder (⌘N, or Ctrl+N). localhost reads it and suggests Services: package.json scripts with your package manager, one Service per Compose service, Django, FastAPI and Flask apps, and cargo run for each binary. It looks at the folder, the folders up to two levels below it, and workspace packages and Cargo members. Scanning only reads: nothing is written, and nothing goes over the network.
  2. Check the suggestions. The likely ones are checked, the rest folded away, and you can edit each before anything is saved. Nothing found? Add your own commands: anything your terminal runs.
  3. Write down what you used to remember. Make the API start after the database, give each Service its Port, and put variables on the Project, the Service or an Environment Profile. Any variable can be a Secret, kept in your system’s secret store.

localhost keeps all of it in its own storage, never in your project’s folder. To move a Project to another machine, or hand it to a teammate, Export Project… writes it as a small YAML Project file, with Secrets listed by name only, and Import Project… reads it back after showing what it contains.

Can I run it from the terminal, or let an agent run it?

Yes. The localhost command runs on the same Projects: localhost projects lists them, and localhost up my-saas runs a Project’s Services in the foreground until Ctrl-C (Command line). Coding agents such as Claude Code, Cursor and Codex start the same Services through localhost mcp, instead of guessing at npm run dev.

Start here: Quick start.

FAQ

Does localhost write a config file into my project?

No. A Project’s configuration lives in localhost’s own storage, never in its folder. A YAML Project file is written only when you export one.

What if localhost doesn’t detect my project’s commands?

Add the Project anyway and add Services yourself (⇧⌘N, or Ctrl+Shift+N): any command line your terminal runs. Detect Services… scans the folder again later.

How do I share the setup with my team?

Export Project… writes a YAML Project file, with Secrets listed by name only. A teammate imports it, sees everything it contains before it is added, and fills in the Secrets.

Which version of Node or Python does localhost use?

Whichever your terminal uses: commands run in your login shell, so nvm, asdf, mise, pyenv and Homebrew apply. On Windows they run in cmd.exe with your user environment, read fresh at every start.

Edit this page on GitHub

Install localhost for macOS

Two quick steps, usually under a minute.

  1. Drag it to Applications

    Open localhost-0.3.0.dmg and drag localhost to Applications.

    Download localhost-0.3.0.dmg

    Or install it with Homebrew, which also puts the localhost command in your terminal:

    brew install --cask marcellosso/tap/localhost

    Or download it from Terminal, which macOS doesn’t block, so you can skip step 2:

    curl -fLO https://github.com/marcellosso/localhost/releases/download/v0.3.0/localhost-0.3.0.dmg && open localhost-0.3.0.dmg
  2. Open it the first time

    localhost isn’t notarized by Apple yet, so macOS blocks the first launch once:

    1. Click Done in the warning.
    2. Open System Settings › Privacy & Security and scroll to Security.
    3. Click Open Anyway, and confirm with your password or Touch ID.

    Or run this in Terminal, then open localhost:

    xattr -dr com.apple.quarantine /Applications/localhost.app

macOS 15 or later · Apple silicon or Intel

  1. Run the installer

    Open localhost_0.3.0_x64-setup.exe. It installs for your user only, no administrator rights needed.

    Download localhost_0.3.0_x64-setup.exe
  2. Get past SmartScreen

    The installer isn’t signed by a known publisher yet, so Windows says “Windows protected your PC”:

    1. Click More info.
    2. Check that the file is localhost_0.3.0_x64-setup.exe.
    3. Click Run anyway.

Windows 10 or 11 · x64 · WSL 2 for Projects in WSL

  1. Download your package

  2. Install it

    From the folder you downloaded it to:

    sudo apt install ./localhost-app_0.3.0_amd64.deb
    sudo dnf install ./localhost-app-0.3.0-1.x86_64.rpm
    chmod +x localhost-app_0.3.0_amd64.AppImage && ./localhost-app_0.3.0_amd64.AppImage

    Secrets need a Secret Service (GNOME Keyring, KWallet). On stock GNOME the tray icon needs the AppIndicator extension.

x86_64 · Ubuntu 22.04+ · Debian 12+ · Fedora

On another system?Install guide →