Real URLs for local dev.
No ports to juggle.

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.

:3000, :3001, :3002 — which one was the admin again?

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

localhost:3000 localhost:3001 localhost:4321 localhost:5173 ⚠ your connection is not private

AFTER

https://atlas.lewp https://feature-1.atlas.lewp https://docs.atlas.lewp https://admin.atlas.lewp ✓ trusted certificate

How it works

Three steps. lewp routes; you run the app.

1

Lease a URL in your project directory

~/code/atlas
$ lewp lease
PORT=42137
URL=http://feature-1.atlas.lewp
HTTPS_URL=https://feature-1.atlas.lewp
HOST=feature-1.atlas.lewp

First time? lewp setup runs once after installing and wires up DNS, HTTPS, and the daemon.

2

Start your app on that port — yourself

$ bin/rails server -p 42137
# or: npm run dev -- --port 42137

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.

3

Open the URL: trusted HTTPS, no port

https://feature-1.atlas.lewp

What you get

Predictable .lewp hostnames

Stable, human-readable URLs derived from your directory, the same one every time.

Trusted local HTTPS

A locally-trusted certificate, so no more clicking through browser warnings.

Built for git worktrees

Every checkout gets its own hostname and port, cleanly, with no collisions.

Not a process manager

lewp routes traffic and gets out of your way. You start your apps however you like.

Custom public suffixes

Use OAuth-friendly local domains that providers accept where localhost is rejected.

Leased ports that stick

A port stays assigned to your project and survives restarts, so it stays reliable.

Get lewp

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.

Troubleshooting · Uninstall · Source ↗