Overview
Local domains let you reach a local app at a name like myapp.local instead of localhost:3000. LocalCan advertises the name on your network over mDNS (Bonjour) and, when you want it, serves it through a built-in reverse proxy so the name works on standard ports and over HTTPS.
How it works
LocalCan's reverse proxy sits between the browser and your app, forwarding each request to the right host and port. It handles HTTP on port 80 and HTTPS on port 443, including the WebSocket connections that dev servers like Vite and Next.js use for hot reload.
Running through the proxy gives you:
- Standard ports.
https://myapp.localworks with no port number, because the proxy listens on 80 and 443. - Any target. Forward a domain to any host and port, even another device, for example
https://myapp.localtohttp://192.168.50.5:3000. - Automatic HTTPS. The proxy terminates TLS with an auto-generated certificate. See Certificates.
- Traffic inspection. Watch requests between the browser and your app. See Inspect traffic.
- Host header rewrites. Present a production hostname to your app. See Headers.
- Basic auth. Put a password on a local domain during development. See Basic auth.
You can also skip the proxy and have LocalCan advertise the name only. The two setups follow.
Domain with proxy
With a proxy, LocalCan terminates HTTPS and forwards requests to the target IP or hostname you specify, even on a different port. This is the flexible default for local development.
To set one up in the desktop app:
- Click Add domain in the sidebar.
- Select Domain with proxy and click Continue.
- Set the target IP or hostname and the port.
- Click Add domain.
- If you chose HTTPS, trust the root certificate so the browser doesn't warn that the connection is not private.
LocalCan 3.0 Beta
YAML project files and the localcan CLI are new in 3.0. See Installation to install the beta.
The same setup as a project file:
services:
web:
target: http://localhost:3000
endpoints:
- url: my-app.local
scheme: https
Run localcan reload after dropping the file into ~/.localcan/projects/. See Configuration → Projects.
Domain only
Without a proxy, LocalCan only advertises the mDNS name, so you reach the app at its original port. A server on localhost:3000 answers at my-app.local:3000. Set proxy: false and requests skip the LocalCan proxy entirely.
To set one up in the desktop app:
- Click Add domain in the sidebar.
- Select Domain only and click Continue.
- Enter the domain name, type, and port.
- Click Add domain.
- If you chose HTTPS, trust the root certificate to avoid the "connection is not private" warning.
services:
web:
target: http://localhost:3000
endpoints:
- url: my-app.local
proxy: false
Run localcan reload to pick up the file. See Configuration → Projects.
© 2026 LocalCan™. All rights reserved.