Quick start


Get a Public URL pointing at your local app in three commands.

This guide assumes the localcan binary is on your PATH and the daemon is running. If localcan isn't on your PATH yet, see Installation. On macOS and Windows the desktop app starts the daemon for you. On Linux or a headless install, run localcan start --detach first.

1. Activate a license (or start a trial)

Shell
localcan license activate localcan_xxxxxxxxxxxxx

The first time you activate, LocalCan prompts you to accept the license agreement and asks whether to share anonymous usage data. To skip the prompts (CI, scripts, headless servers), pass the answers as flags:

Shell
localcan license activate localcan_xxxxxxxxxxxxx --accept-terms --no-usage-data

Don't have a key? Start a 7-day trial:

Shell
localcan license trial start

2. Open a tunnel

Point your local app at any port — here we'll use a Next.js dev server on :3000:

Shell
localcan http 3000

localcan auto-starts the daemon if it isn't running, then prints the local domain and the Public URL:

Text
Connecting tunnel to http://localhost:3000...
Forwarding swift-falcon.local → localhost:3000
Forwarding swift-falcon-12.localcan.dev → localhost:3000

Requests (Ctrl+C to stop):

15:04:21    GET 200  /
15:04:21    GET 200  /_next/static/css/app.css

While the command is running you'll see live request logs. Hit Ctrl+C to stop the tunnel — your saved projects (if any) are not affected.

3. Configure a permanent setup (optional)

Quick tunnels are designed for one-offs — they get a fresh URL every run, and Ctrl+C tears them down. For a stable URL, a custom domain, or any setup with extra config (multiple services, headers, basic auth), write your own project file:

YAML
name: My App
services:
  web:
    target: http://localhost:3000
    endpoints:
      - provider: localcan
      - url: my-app.local

The provider: localcan endpoint has no url: — the rule is to leave it empty and LocalCan fills it in. The first time you run localcan reload, the daemon registers the tunnel with the backend, gets back a URL like my-app-12.localcan.dev, and writes it into the file alongside the provider: line. To pin a specific subdomain instead, set url: yourself.

Then tell the running daemon to pick it up:

Shell
localcan reload
localcan tunnel ls

See Configuration → Projects for the full schema.

Next steps

© 2026 LocalCan™. All rights reserved.