Skip to content
localhost-aliases

Download

A menu-bar app for macOS 13.0 and later, on Apple Silicon (arm64). It installs no system component: the only thing it leaves running is one root process that exits when you quit.

Build from source

no release yet

No release has been published yet

The GitHub repository has no tags and no releases, so there is nothing to download — and nothing has been code-signed or notarized. Build it from source instead: it is a handful of commands, and you get to read the script that will run as root before you run it.

build from source

git clone https://github.com/rioukkevin/localhost-aliases.git
cd localhost-aliases
bun install
make bundle    # builds dist/LocalhostAliases.app
make install   # copies it into /Applications

Needs Bun 1.2.5 or later and the Xcode command line tools (swiftc). Nothing on your Mac changes until you launch the app and accept the one admin prompt — make install only copies the bundle, and make uninstall reverses every change, including the /etc/hosts block.

Requirements

macOS only
  • macOS 13.0 Ventura or later — LSMinimumSystemVersion in the bundle, and the Swift deployment target.
  • Apple Silicon only. The tray is compiled -target arm64-apple-macos13.0 and there is no universal binary, so there is no x86_64 slice. An Intel Mac cannot run it, and Rosetta translates the other direction.
  • An admin account, for one prompt at launch. Nothing is installed into /Library, and there is no sudoers entry.
  • No network connection. Resolution is a line in /etc/hosts, and the traffic never leaves loopback.

What macOS will say

Gatekeeper judges the com.apple.quarantine attribute a browser attaches to a downloaded file. That single fact explains both cases below.

if you build from source

Nothing happens. make install copies the bundle you just compiled and clears the quarantine attribute, so there is no downloaded file for Gatekeeper to judge and no dialog. What you are trusting there is your own compiler, not our signature.

if you download a build that is not notarized

macOS refuses the first launch and says “Apple could not verify “LocalhostAliases.app” is free of malware that may harm your Mac or compromise your privacy.” Opening it anyway is deliberate, and where the override lives moved: on macOS 13 and 14 it is Control-click the app then Open; on macOS 15 and later Apple removed that shortcut and it is System Settings → Privacy & Security → Open Anyway after the first refusal.

No release has been published, so no build has been signed with a Developer ID or notarized. When one is, do not take this page's word for it — ask the file:

what the file itself says

shasum -a 256 LocalhostAliases.dmg
spctl -a -vvv -t install /Volumes/Localhost\ Aliases/LocalhostAliases.app
xcrun stapler validate /Volumes/Localhost\ Aliases/LocalhostAliases.app

accepted / source=Notarized Developer ID is the only output that means notarized. Anything else — rejected, an ad-hoc signature, no stapled ticket — means it is not, whatever any web page says.

What it changes on your Mac

Three things, all visible and all reversible: a marked block in /etc/hosts, one loopback address per alias on lo0, and one root process forwarding 127.0.0.x:80 to the port your dev server already listens on. The root process exits by itself when the app stops, and make uninstall takes the other two back out.

Project aliases are http:// only — the forwarder moves raw bytes and never parses them, so nothing in that path could terminate TLS. The FAQ covers what runs as root and for how long, including the tradeoff that comes with it, and the source is the final word on all of it.