Start a Tunnel
Install LPM CLI and sign in to LPM.dev Registry:
lpm login
Tunnel creation and domain management require the browser-backed session created by lpm login.
Start with the Development Server
Use one command to start the project and expose its development server:
lpm dev --tunnel
LPM CLI waits for the local service to become ready, connects it to the tunnel relay, and prints both the public URL and local inspector URL.
Expose an Existing Server
If your server is already listening on a known port, pass it explicitly:
lpm tunnel 3000
lpm tunnel 4000
Free accounts receive a random 10-character *.lpm.fyi URL:
Tunnel ready
public URL https://k8f2m9x1ab.lpm.fyi
inspector http://127.0.0.1:54218
local http://127.0.0.1:3000
Stop the tunnel with q or Ctrl-C. A Free URL is released when the session ends.
You can also run the command without a port:
lpm tunnel
Bare lpm tunnel discovers the only active lpm dev endpoint. It returns an error if no endpoint is active or multiple endpoints are available, in which case you must pass the intended port.
Name the Session
lpm tunnel 3000 --session "stripe-test"
The name appears in the inspector's session list and stays attached to that session's captured requests.
Keep Webhook Endpoints Responsive
By default, a request fails if the tunnel cannot reach the local server. During webhook development, repeated failures can cause a provider to retry or disable an endpoint.
Use --auto-ack to return 200 OK when the local server is unavailable:
lpm tunnel 3000 --auto-ack
The inspector marks auto-acknowledged requests so they are not mistaken for requests handled by your application. You can replay them from the browser inspector after the server is available again.
Protect the Public URL
Pro and Organization accounts can require a per-session token:
lpm tunnel 3000 --tunnel-auth
LPM CLI prints the token and an authenticated browser URL. Programmable clients can send:
X-Tunnel-Auth: <token>
The relay also accepts __tunnel_auth=<token> as a query parameter. Browser visitors without a token see an authentication form; a successful form submission stores an HTTP-only cookie.
This is not Bearer authentication. Webhook providers that cannot set the supported header or query parameter cannot call a protected tunnel, so tunnel auth is usually better for previews and configurable integrations than for third-party webhooks.
The token is generated again every time the tunnel starts.
Open the Inspector
LPM CLI starts the local inspector server on an available port and prints its URL. With standalone lpm tunnel, press o to open it in your browser.
Choose an exact local inspector port or disable its web server:
lpm tunnel 3000 --inspect-port 4500
lpm tunnel 3000 --no-inspect
An automatically selected port avoids conflicts with development services. An explicit port is strict: the command fails if that port is already occupied.
lpm dev --tunnel accepts the same inspector flags and prints the inspector URL in its startup output.
Common Flags
| Flag | Effect |
|---|---|
<port> | Expose this local port; omit it only to discover one active lpm dev endpoint |
<domain> | Use a claimed domain for this session |
--tunnel-auth | Require the generated tunnel token (Pro or Organization) |
--auto-ack | Return 200 OK to webhooks when the local server is down |
--session <NAME> | Name this tunnel session in the inspector |
--no-inspect | Do not start the local inspector web server |
--inspect-port <N> | Bind the inspector to this exact local port |
For every command form, configuration field, and global flag, see the LPM CLI tunnel reference.
Continue
- Claimed Tunnel Domains — Reuse a stable URL across sessions.
- Request Inspector — Search, inspect, export, and replay captured requests.