Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .github/assets/start-all.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 13 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ localhost (getlocalhost.app) is a free, open-source desktop process manager for
<a href="LICENSE"><img src="https://img.shields.io/github/license/marcellosso/localhost" alt="MIT license"></a>
</p>

![The localhost window: the Acme Shop Project with its Services (Migrations exited, API, Web and Worker running, Storybook manual) and their merged log](.github/assets/main-window-dark.png)
<p align="center">
<img src=".github/assets/start-all.gif" width="1200" height="720" alt="Start All on the Acme Shop Project: Database, Migrations, API, Web and Worker start in dependency order, Migrations exits once done, and every Service's output streams into one merged log">
</p>

localhost remembers how each of your local development projects runs, and lets you start, stop and watch all of its Services from one place, instead of a row of terminal tabs.

Expand All @@ -32,6 +34,8 @@ A **Project** is a folder. A **Service** is one long-running command in it: `pnp

A native SwiftUI app on macOS with a menu bar companion; one app for Linux and Windows with a tray icon. On Windows, Projects run on Windows itself or inside WSL.

![The localhost window on macOS: the Acme Shop Project with its Services (Migrations exited, API, Web and Worker running, Storybook manual) and their merged log](.github/assets/main-window-dark.png)

## Install

Download the latest release from [GitHub Releases](https://github.com/marcellosso/localhost/releases/latest).
Expand Down Expand Up @@ -162,6 +166,9 @@ Releases aren't notarized by Apple yet, so macOS refuses to open what your brows
2. Open **System Settings → Privacy & Security** and scroll to **Security**. It says the item was blocked to protect your Mac.
3. Click **Open Anyway**, confirm with your password or Touch ID, then click **Open Anyway** once more.

<p align="center"><img src=".github/assets/first-launch-macos-open-anyway.png" width="525" height="101" alt="System Settings, Privacy & Security: under Security, “localhost” was blocked to protect your Mac, with an Open Anyway button"></p>
<p align="center"><em>System Settings → Privacy &amp; Security → Open Anyway.</em></p>

If the warning named the DMG, macOS may ask again the first time you open localhost: do the same.

**Download from Terminal.** macOS only checks files marked as downloaded from the internet, and `curl` doesn't mark them. Download and open the DMG, then drag **localhost** to **Applications** as usual:
Expand All @@ -183,6 +190,11 @@ xattr -dr com.apple.quarantine /Applications/localhost.app

Unsigned releases make SmartScreen say “Windows protected your PC”. Click **More info**, check that the file name is what you downloaded from this project's releases, then click **Run anyway**. Each new version asks once again.

<p align="center"><img src=".github/assets/first-launch-windows-more-info.png" width="400" height="374" alt="SmartScreen's “Windows protected your PC” dialog, with the More info link"></p>
<p align="center"><em>Click More info…</em></p>
<p align="center"><img src=".github/assets/first-launch-windows-run-anyway.png" width="400" height="374" alt="The same dialog after More info: the app's file name, Publisher: Unknown publisher, and the Run anyway button"></p>
<p align="center"><em>…check the file name, then click Run anyway.</em></p>

## Platform notes

### macOS: Keychain prompts for Secrets
Expand Down
9 changes: 9 additions & 0 deletions site/src/content/docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ Releases aren't notarized by Apple yet, so macOS refuses to open what your brows
2. Open **System Settings → Privacy & Security** and scroll to **Security**. It says the item was blocked to protect your Mac.
3. Click **Open Anyway**, confirm with your password or Touch ID, then click **Open Anyway** once more.

![System Settings, Privacy & Security: under Security, “localhost” was blocked to protect your Mac, with an Open Anyway button](../../../../.github/assets/first-launch-macos-open-anyway.png)
*System Settings → Privacy & Security → Open Anyway.*

If the warning named the DMG, macOS may ask again the first time you open localhost: do the same.

**Download from Terminal.** macOS only checks files marked as downloaded from the internet, and `curl` doesn't mark them. Download and open the DMG, then drag **localhost** to **Applications** as usual:
Expand All @@ -43,4 +46,10 @@ xattr -dr com.apple.quarantine /Applications/localhost.app

Unsigned releases make SmartScreen say “Windows protected your PC”. Click **More info**, check that the file name is what you downloaded from this project's releases, then click **Run anyway**. Each new version asks once again.

![SmartScreen's “Windows protected your PC” dialog, with the More info link](../../../../.github/assets/first-launch-windows-more-info.png)
*Click More info…*

![The same dialog after More info: the app's file name, Publisher: Unknown publisher, and the Run anyway button](../../../../.github/assets/first-launch-windows-run-anyway.png)
*…check the file name, then click Run anyway.*

Next: [add your first Project](/docs/quick-start).
Loading