▄▄ ▄▄ ▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▄ ▄▄ ██ ██ ▀▀▀██▀▀▀ ▀▀▀██▀▀▀ ██▀▀▀▀█▄ ▄█▀▀▀▀█ ██▀▀▀██ ██▀▀▀▀▀▀ ▀██ ██▀ ██ ██ ██ ██ ██ ██ ██▄ ██ ██ ██ ██ ██ ████████ ██ ██ ██████▀ ▀████▄ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ ▀██ ██ ██ ██ ████ ██ ██ ██ ██ ██ █▄▄▄▄▄█▀ ██▄▄▄██ ██▄▄▄▄▄▄ ████ ▀▀ ▀▀ ▀▀ ▀▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀
Point it at a port. Get a green 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@latestNeeds mkcert once — brew install mkcert && mkcert -install. That's the only setup.
▄▄ ▄▄ ▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄▄▄▄ ▄▄ ▄▄ ██ ██ ▀▀▀██▀▀▀ ▀▀▀██▀▀▀ ██▀▀▀▀█▄ ▄█▀▀▀▀█ ██▀▀▀██ ██▀▀▀▀▀▀ ▀██ ██▀ ██ ██ ██ ██ ██ ██ ██▄ ██ ██ ██ ██ ██ ████████ ██ ██ ██████▀ ▀████▄ ██ ██ ███████ ██ ██ ██ ██ ██ ██ ██ ▀██ ██ ██ ██ ████ ██ ██ ██ ██ ██ █▄▄▄▄▄█▀ ██▄▄▄██ ██▄▄▄▄▄▄ ████ ▀▀ ▀▀ ▀▀ ▀▀ ▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀
Real browser-trusted HTTPS for any local dev server.
mkcert · valid 30d
── the pitch, in four lines
Certs come from mkcert — the same local CA Chrome and Safari already trust. Zero warnings. Zero “Advanced → Proceed anyway” clicking.
No --https flag to remember. No HTTPS=true env var. No experimental Next config. Point at a port and go.
WebSocket upgrades and SSE forward untouched. Your Vite HMR, Next dev overlay, Rails Turbo streams — everything keeps working.
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 -install2. Grab httpsdev.
go install github.com/ArpitRajputGithub/httpsdev@latestOr 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