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.local works 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.local to http://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:

  1. Click Add domain in the sidebar.
  2. Select Domain with proxy and click Continue.
  3. Set the target IP or hostname and the port.
  4. Click Add domain.
  5. 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:

YAML
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:

  1. Click Add domain in the sidebar.
  2. Select Domain only and click Continue.
  3. Enter the domain name, type, and port.
  4. Click Add domain.
  5. If you chose HTTPS, trust the root certificate to avoid the "connection is not private" warning.
YAML
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.