Tunnels
lpm tunnel exposes a local port to the public internet through LPM's tunnel network. Free accounts get an ephemeral https:// URL on every run plus the full webhook capture and replay tooling. Pro accounts can claim up to 3 stable domains; Org accounts up to 10.
lpm tunnel # ephemeral tunnel on port 3000
lpm tunnel 4000 # tunnel for port 4000
lpm tunnel 3000 acme-api.lpm.llc # use a claimed stable domain (Pro/Org)
lpm tunnel claim acme-api.lpm.llc # claim a domain (Pro/Org)
lpm tunnel inspect --ui # browser inspector for captured webhooks
lpm tunnel replay 3 # re-deliver captured event #3
What you get per plan
| Capability | Free | Pro | Org |
|---|---|---|---|
| Ephemeral tunnel URLs | ✓ | ✓ | ✓ |
| Webhook capture | ✓ | ✓ | ✓ |
| Inspector UI | ✓ | ✓ | ✓ |
| Replay captured events | ✓ | ✓ | ✓ |
--auto-ack (keep webhook providers alive) | ✓ | ✓ | ✓ |
| Claimed stable domains | — | 3 max | 10 max |
--tunnel-auth (token-gate the public URL) | — | ✓ | ✓ |
| Org-scoped domain claims | — | — | ✓ |
The full capture/replay toolchain works on the free tier — the difference is whether your domain survives across runs.
When to use a tunnel
- Webhook development. Local Stripe, GitHub, Linear, Slack callbacks without ngrok-style separate tools.
- MCP servers. Expose a locally-running MCP server to a hosted AI agent.
- Preview sharing. Send a teammate a URL pointed at your laptop without deploying.
- Mobile testing. Reach your local dev server from a phone on a different network.
Where to go next
- Getting Started — first tunnel, options, auth, auto-ack
- Claimed Domains — claim/unclaim/list stable domains
- Webhook Inspector — inspect, filter, replay captured events
The architectural deep-dive (how the tunnel network actually routes packets, the capture pipeline, edge-PoP placement) lives at cli.lpm.dev/docs/infra/tunneling.