FAQ

What you need before you share a URL.

Names, limits, and what the tunnel will not carry.

What is liveapps.dev?

A free localhost tunnel from one port on your computer to an HTTPS address on liveapps.dev. The app keeps running on your machine. The public URL only relays HTTP to it.

Do I need an account?

No. There is no signup, email, or API key. Run the CLI and the tunnel opens.

What do I need installed?

Node.js 22 or newer. The usual command is: npx liveapps tunnel --port 3000

Does the laptop have to stay on?

Yes. Closing the CLI, sleeping the machine, or losing the network takes the URL offline. This is not a host you deploy to.

How long does a tunnel last?

An open tunnel lasts up to 24 hours. If the CLI goes quiet, the name is released after about five minutes. Ctrl-C closes it immediately.

Can I pick the name?

Yes. liveapps tunnel --port 3000 --name myapp gives https://myapp.liveapps.dev while you are connected. The name has to be free and not reserved. Leave --name off for a random one.

Will a frontend and a backend both work?

Yes, when the browser only talks to one local port. Next.js, Express, and a Vite app that proxies /api all fit. Tunnel that port. Visitors get the pages and the API through the same public URL. If the page hardcodes http://localhost:… the tunnel rewrites those URLs to the public origin so the visitor’s browser does not hit their own machine.

What if the frontend and API are on different ports?

One tunnel exposes one port. A page that calls localhost:4000 from the visitor’s browser would hit their computer, not yours — so the tunnel rewrites http://localhost and 127.0.0.1 URLs in HTML, JS, and JSON to the public https origin. That only works if the port you tunneled already serves those API paths (a Vite/Next/Express proxy, or a combined server). If the API is on another port with no local proxy, point the tunnel at the port the browser already uses, or put both behind one reverse proxy, then tunnel that.

Is the URL private?

No. Anyone with the link can open it unless you set a password. There is no account on the address. Pass --unlisted if you do not want the name on the public live apps page. The URL still works for anyone who has it.

Can I put a password on the URL?

Yes. liveapps tunnel --port 3000 --basic-auth user:pass prompts visitors for HTTP basic auth. LIVEAPPS_BASIC_AUTH is the same value if you do not want the password in the command line. The password is hashed on the relay; it is not stored in plaintext.

What shows up on the live apps page?

Connected tunnels, by default. Each row is a link. The row leaves when the CLI disconnects. --unlisted keeps that tunnel off https://liveapps.dev/apps.

What does not pass through?

A WebSocket from the visitor to your app, and streamed responses such as server-sent events. Each HTTP response is sent after it finishes, and it has to stay under 512KB. Hot reload sockets and large downloads will not behave like they do on localhost.

My app expects a specific Host header. What then?

Add --http-host example.com. The CLI still connects to localhost, but it sends that host to your server.

Can I use this from a script?

Yes. --json prints one line with the subdomain and URL when the tunnel is ready. --print-requests logs each hit. --no-reconnect exits instead of retrying if the socket drops.

Someone is abusing a tunnel. What do I do?

Stop the CLI. The URL dies with it. For a name you do not control, open https://liveapps.dev/report or email abuse@liveapps.dev.

Can the tunnel reach other machines on my LAN?

Only if you ask. --local-host defaults to localhost. Other hosts need --allow-lan. Do not point that at an admin UI, a database, or a cloud metadata address.

Why does a name say reserved?

Names such as www, api, apps, faq, and connect belong to the product. The CLI rejects them. Opening https://faq.liveapps.dev shows a reserved page, not a tunnel.