lewp is a macOS local domain router. Run one command in your project directory and get a stable, trusted-HTTPS URL with no port to remember. It routes traffic; it never starts your app.
$lewp lease
Running several apps at once means memorizing a pile of ports. Add a few git worktree checkouts and it gets worse: each one wants its own URL, its own port, its own cert warning to click through.
BEFORE
AFTER
How it works
First time? lewp setup runs once after installing and wires up DNS, HTTPS, and the daemon.
lewp is not a process manager. It doesn't boot Rails, Vite, or Next for you; it just routes browser traffic to the port you leased.
Stable, human-readable URLs derived from your directory, the same one every time.
A locally-trusted certificate, so no more clicking through browser warnings.
Every checkout gets its own hostname and port, cleanly, with no collisions.
lewp routes traffic and gets out of your way. You start your apps however you like.
Use OAuth-friendly local domains that providers accept where localhost is rejected.
A port stays assigned to your project and survives restarts, so it stays reliable.
Requires macOS. Go 1.25+ only if you build from source.
1 · Install the binary
$curl -fsSL https://raw.githubusercontent.com/scottwater/lewp/main/install.sh | bash
Downloads the latest release binary for your Mac into ~/.local/bin. Want to look before you run it? Read install.sh ↗ (it's short). Prefer Go? go install github.com/scottwater/lewp/cmd/lewp@latest
2 · One-time setup
$lewp setup && lewp system start
What it touches: asks for sudo once to write /etc/resolver/lewp, then creates a local CA and trusts it in your keychain so HTTPS works without warnings. Fully reversible: lewp system uninstall removes all of it.
3 · Lease your first URL
$lewp lease
Run it in any project directory, then start your app on the leased port.
lewp routes loopback traffic only. It never starts your app, and nothing is ever exposed to your network.