Claimed Tunnel Domains
Free tunnel URLs change on every run. A claimed domain persists — the same URL keeps working as long as you hold the claim, and the next lpm tunnel <port> <domain> reuses it.
Claimed domains require a Pro or Org plan.
Per-plan limits
| Plan | Personal domains | Org domains |
|---|---|---|
| Free | 0 | — |
| Pro | 3 | — |
| Org | — | 10 |
Pro users get 3 personal claimed domains. Org plans get 10 claimed domains under the organization (claimable by anyone with the right role). A user on both a Pro plan and in an Org gets 3 personal + 10 org domains.
A free account that calls lpm tunnel claim gets 403 Custom tunnel domains require a Pro plan. A Pro account that exceeds 3 personal domains gets 429 Domain limit reached.
Claiming a domain
lpm tunnel domains # list available base domains
lpm tunnel claim acme-api.lpm.llc # claim a personal domain
lpm tunnel claim acme-api.lpm.llc --org acme # claim under an org
The subdomain part (acme-api) is the part you choose; the base domain (lpm.llc) is one of LPM's tunnel base domains. lpm tunnel domains prints the current set you can choose from.
Subdomain rules:
- Lowercase letters, digits, and hyphens only.
- 3-32 characters total.
- Must start and end with a letter or digit.
- First-come, first-served per base domain — names already in use return
409 already claimed.
Using a claimed domain
lpm tunnel 3000 acme-api.lpm.llc # bind this tunnel to the claimed domain
The URL prints as https://acme-api.lpm.llc → http://127.0.0.1:3000. Stop and restart any number of times — the URL doesn't change.
You can hand the same domain to different ports across runs (lpm tunnel 3000 acme-api.lpm.llc today, lpm tunnel 4500 acme-api.lpm.llc tomorrow). The claim is on the domain, not on a port binding.
Listing your claimed domains
lpm tunnel list # personal
lpm tunnel list --org acme # for an org
lpm tunnel list --json # machine-readable
Output includes the domain, who claimed it, when, and whether a tunnel is currently active on it.
Releasing a domain
lpm tunnel unclaim acme-api.lpm.llc # release a personal domain
lpm tunnel unclaim acme-api.lpm.llc --org acme # release an org domain
lpm tunnel release is an alias of unclaim. Released domains return to the pool — anyone (including someone else) can claim them next.
Org domain claims
Org plans get 10 claimed domains shared across the organization. Any member with the right role can claim under the org and the domain "belongs to" the org, not the individual:
lpm tunnel claim acme-api.lpm.llc --org acme
lpm tunnel 3000 acme-api.lpm.llc --org acme
lpm tunnel unclaim acme-api.lpm.llc --org acme
When a member leaves the org, their personal domains stay with them; org-claimed domains stay with the org. To rotate an org domain after an offboarding (so the leaver can no longer bind a tunnel to it from their machine), unclaim and re-claim under a different subdomain.
What you can't do (yet)
- Pick the base domain freely. The base domain is fixed to LPM's set. Custom DNS / bring-your-own-domain is an Enterprise ask.
- Per-domain auth that survives restarts.
--tunnel-authgenerates a fresh token each run. For "always-on, always-gated" you'd need to chain the tunnel behind a reverse proxy or an auth service, which is outsidelpm tunnel's scope. - Dashboard management. Domain claims are CLI-managed today. There's no
/dashboard/tunnelspage —lpm tunnel listis the source of truth.
Plan reminders
| Capability | Free | Pro | Org |
|---|---|---|---|
| Ephemeral tunnel URLs | ✓ | ✓ | ✓ |
| Claim a stable domain | — | 3 max | 10 max |
| Org-scoped claims | — | — | ✓ |
--tunnel-auth | — | ✓ | ✓ |
Next
- Getting Started — bind a tunnel to your claimed domain
- Webhook Inspector — inspect, filter, replay captured events