License


Activate, deactivate, and inspect your LocalCan license from the terminal. LocalCan also runs unlicensed (.local only).

Unlicensed vs activated

LocalCan starts without a key. Unlicensed, it serves .local domains over the HTTP/HTTPS proxy with full traffic inspection. Activating a license unlocks Public URLs and localcan tcp.

To try out all features, sign up for a 14-day trial on the LocalCan dashboard↗. No credit card required.

The first time you run LocalCan, it asks you to accept the Terms of Service↗. Review the Terms↗ and Privacy Policy↗, then answer y. Acceptance is recorded and you are not asked again until the Terms change.

Without a license the app never asks about usage data, it stays off until you opt in.

On a headless host or in a script (no terminal on stdin) the command exits with an error instead of prompting. Accept the Terms ahead of time:

Shell
localcan accept-terms

You can also pass --accept-terms to any engine command to accept non-interactively:

Shell
localcan start --accept-terms

Activate

Shell
localcan license activate localcan_xxxxxxxxxxxxx

The first activation runs an interactive flow: you'll be asked to accept the Terms of Service and to opt in or out of anonymous usage data. To skip both prompts, for CI, headless servers, or scripts, pass the answers as flags:

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

If the key is already activated on a different machine and you want to move it, add --reassign:

Shell
localcan license activate localcan_xxxxxxxxxxxxx --accept-terms --reassign

When --json is set, all prompts are suppressed and --accept-terms becomes mandatory.

Deactivate

Shell
localcan license deactivate

Frees the seat so you can activate the key on another machine. The daemon keeps running and drops to unlicensed, so .local and the HTTP/HTTPS proxy keep serving. Only Public URLs and TCP tunnels pause until a new key is activated. Run localcan stop if you want the daemon down too.

If your key stops working

If LocalCan stops accepting your key, for example because it was replaced in your team or your subscription ended, Public URLs pause. Your .local domains, the proxy and the inspector keep working, and the key stays in your config.

Run localcan license status to see the reason and what to do next. After fixing it, check again with localcan license status --refresh, or activate a new key with localcan license activate <key>.

Moving the license to this machine

A license runs Public URLs on one machine at a time. If localcan license status says the license is in use on another device, move it here with the key already configured on this machine:

Shell
localcan license activate --reassign

On a new machine or after a fresh install there is no key here yet, so pass it as well:

Shell
localcan license activate localcan_xxxxxxxxxxxxx --reassign

Usage data

Telemetry is opt-in and off by default. Turn anonymous usage data on or off at any time, with or without a license:

Shell
localcan license set-usage-data yes
localcan license set-usage-data no

Status

Shell
localcan license status

Reports the current mode (unlicensed or licensed), the license state, when LocalCan last checked the key, the masked key, device ID and name, platform, CLI and desktop versions, and your update window:

Text
Mode                   licensed
State                  valid
Last checked           Oct 8, 14:02
License key            localcan_xxxxxxxxxxxx****
Device ID              c5b1...
Device name            my-laptop
Platform               darwin/arm64
CLI version            1.0.0
Terms accepted         2026-05-20
Desktop version        3.0.0
Updates allowed until  Jan 1, 2027
Updates expired        no

The state is valid, unverified or blocked. A blocked key also shows the reason and the next step. Add --refresh to check with LocalCan first.

If Updates expired is yes, the line below tells you how many CLI releases you're behind and points to the dashboard to renew. Your existing license keeps working, only access to newer releases is gated.

Pass --json to consume the same data as a structured object.

© 2026 LocalCan™. All rights reserved.