httpsdev
 ▄▄    ▄▄  ▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄      ▄▄▄▄    ▄▄▄▄▄     ▄▄▄▄▄▄▄▄  ▄▄    ▄▄
 ██    ██  ▀▀▀██▀▀▀  ▀▀▀██▀▀▀  ██▀▀▀▀█▄  ▄█▀▀▀▀█   ██▀▀▀██   ██▀▀▀▀▀▀  ▀██  ██▀
 ██    ██     ██        ██     ██    ██  ██▄       ██    ██  ██         ██  ██
 ████████     ██        ██     ██████▀    ▀████▄   ██    ██  ███████    ██  ██
 ██    ██     ██        ██     ██             ▀██  ██    ██  ██          ████
 ██    ██     ██        ██     ██        █▄▄▄▄▄█▀  ██▄▄▄██   ██▄▄▄▄▄▄    ████
 ▀▀    ▀▀     ▀▀        ▀▀     ▀▀         ▀▀▀▀▀    ▀▀▀▀▀     ▀▀▀▀▀▀▀▀    ▀▀▀▀

Point it at a port. Get a green padlock.

Localhost with a
working padlock.

Every framework has its own broken HTTPS story. Some ship self-signed certs that trip the browser. Some hide it behind an HTTPS=true env var. Some just don't.httpsdev sits in front of any dev server and gives it a real, browser-trusted cert.

Vite, Next, Rails, Django, plain HTTP — if it speaks HTTP, this wraps it. WebSockets and SSE pass through untouched. HMR keeps working. No plugins, no configs, no --insecure.

Install

$ go install github.com/ArpitRajputGithub/httpsdev@latest

Needs mkcert once — brew install mkcert && mkcert -install. That's the only setup.

httpsdev --tui 5173
 ▄▄    ▄▄  ▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄      ▄▄▄▄    ▄▄▄▄▄     ▄▄▄▄▄▄▄▄  ▄▄    ▄▄
 ██    ██  ▀▀▀██▀▀▀  ▀▀▀██▀▀▀  ██▀▀▀▀█▄  ▄█▀▀▀▀█   ██▀▀▀██   ██▀▀▀▀▀▀  ▀██  ██▀
 ██    ██     ██        ██     ██    ██  ██▄       ██    ██  ██         ██  ██
 ████████     ██        ██     ██████▀    ▀████▄   ██    ██  ███████    ██  ██
 ██    ██     ██        ██     ██             ▀██  ██    ██  ██          ████
 ██    ██     ██        ██     ██        █▄▄▄▄▄█▀  ██▄▄▄██   ██▄▄▄▄▄▄    ████
 ▀▀    ▀▀     ▀▀        ▀▀     ▀▀         ▀▀▀▀▀    ▀▀▀▀▀     ▀▀▀▀▀▀▀▀    ▀▀▀▀

Real browser-trusted HTTPS for any local dev server.

https://localhost:3443http://localhost:5173

mkcert · valid 30d

── live ────────6 req·0err·3ms avg·12s
GET/2006ms
GET/@vite/client2003ms
GET/favicon.ico4045ms
POST/api/login40145ms
GET/src/App.tsx2002ms
GET/api/session2001ms
─────────────────────────────────────────────
[c] clear[q] quit

── the pitch, in four lines

No self-signed drama

Certs come from mkcert — the same local CA Chrome and Safari already trust. Zero warnings. Zero “Advanced → Proceed anyway” clicking.

No framework-specific config

No --https flag to remember. No HTTPS=true env var. No experimental Next config. Point at a port and go.

HMR still works

WebSocket upgrades and SSE forward untouched. Your Vite HMR, Next dev overlay, Rails Turbo streams — everything keeps working.

One binary, no runtime

10 MB static Go binary. No node_modules. No Python venv. No Docker. go install and you're done.

── two commands, then you're done

1. Once, ever: get mkcert and trust its local CA.

brew install mkcert
mkcert -install

2. Grab httpsdev.

go install github.com/ArpitRajputGithub/httpsdev@latest

Or grab a prebuilt binary fromreleases.

3. Point it at a port. Open the browser.

# in one terminal
npm run dev            # or vite, next dev, rails s, python -m http.server 5173, …

# in another
httpsdev 5173          # https://localhost:3443  →  http://localhost:5173
Star on GitHub