Documentation

How to share your localhost

Takes about two minutes the first time.

Before you start

Two things have to be true on the computer you want to share from:

  • Node.js 18 or newer is installed. Check with: node --version
  • Your project is already running locally — you can open it at http://localhost:3000 (or whatever port it uses) in a browser on that machine.

Where do I type these commands?

Both commands below go in a terminal on the computer running your project — not on this website, and not on your phone.

On Windows: press the Start button, type "PowerShell", and open it. On macOS: press Cmd+Space, type "Terminal", and open it. On Linux you already know.

If your editor has a built-in terminal (VS Code: Ctrl+` or View → Terminal), that works too and is usually easiest — it opens in your project folder already.

Step 1 — Sign in from that computer

Do this first. Signing in on this website signs in your browser, not your computer, and the two are separate. Run this once per machine and it remembers you afterwards:

npx busymote login

Step 2 — Share the port

Start your project the way you normally do (npm run dev, for example). Note the port number it prints — usually 3000 for Next.js, 5173 for Vite. Then, in a second terminal, point Busymote at that port:

  • Change 3000 to your port if it differs.
  • Leave this running. It is the tunnel — close it and the link stops working until you run it again.
npx busymote 3000

What you get

A link like https://beam.busymote.xyz appears in your terminal and on your dashboard. It belongs to that port and does not change: restart your computer, restart the command, and the same link still works. Send it to a client once.

Click the link on your dashboard to rename it — beam, acme-demo, whatever you like, as long as nobody has taken it.

Showing a client? Build it first

A dev server (npm run dev, or vite) is perfect for a quick look at your own work. But to show a client, or leave a link up for a while, build your project for production and share that instead — it is faster and far more stable over a public link.

In dev mode the framework keeps a hot-reload connection open to push your code changes into the browser. Over a tunnel that connection is unreliable, and when it drops the page can reload on its own or stop updating — which looks like the page is resetting or losing what someone just typed. A production build has none of that.

Or let Busymote do it in one command with --run: it builds and starts your project, waits for the port to come up, then shares it — npx busymote 3000 --run "npm run build && npm start". Ctrl-C stops both the tunnel and the command.

  • Next.js: run npm run build, then npm start — share the port it prints.
  • Vite: run npm run build, then npm run preview — share that port.
  • Point Busymote at the port the built app prints, not your dev port.

Lock the link with a password

By default, anyone who has the link can open your localhost — no sign-in, no barrier. On your dashboard, each live tunnel has a "Protect this link" button. Set a password and visitors have to type it before the page loads.

To change it later, hit "Change password" on that tunnel; to open the link back up, hit "Remove". The password is stored hashed, never in plain text, so we could not read it even if we wanted to.

Why a password matters

A tunnel is a live door into your own machine. While it is open, the link reaches whatever your local server is serving — a half-built admin panel, a client demo, an internal tool, a database UI. A password is the difference between "the people I sent this to" and "anyone the link reaches".

  • Links leak. They get pasted into chats, forwarded, and screenshotted. A password means a leaked link is still useless without the word that goes with it.
  • Search engines and scanners crawl. A public URL can be indexed or probed by bots within minutes. A password keeps them at the door.
  • You control who is looking. Sharing an unfinished build with one client should not mean the whole internet can watch you work.
  • It costs you nothing. One word, set once, and the link keeps the same address. Set it the moment the tunnel is more than a throwaway test.

Control it from your phone

Sign in to this site on any device to see everything you are sharing. You can copy the link, show a QR code, share another port, set or change a password, or stop a tunnel — the computer at home does what you tap, as long as the busymote command is still running there.

When you are done

Press Ctrl+C in the terminal, or hit Stop on the dashboard. The link stays reserved for you and starts working again the next time you share that port.

If something goes wrong

  • "Not logged in. Run: busymote login" — you skipped step 1, or you are on a different computer than the one you signed in from.
  • "Session expired" — run npx busymote login again. Sessions do not last forever.
  • The link shows "Nothing is being shared here right now" — the busymote command is not running on your computer, or it lost its connection. Start it again.
  • The link opens but the page is broken or blank — Busymote is showing exactly what your local server returns. Open http://localhost:3000 on that machine and check it works there first.
  • The page reloads on its own, keeps resetting, or loses what you typed — you are sharing a dev server, whose hot-reload connection is unreliable over a tunnel. Share a production build instead (see "Showing a client? Build it first").
  • cloudflared not found (macOS) — install it with: brew install cloudflared
  • Anything else: use the feedback box on your dashboard. It reaches us with your account attached, so we can actually look.

One thing to keep in mind

While a tunnel is live, anyone with the link can reach that port on your computer. Set a password on any link that is more than a throwaway test — see "Why a password matters" above — share it only with people you mean to, and stop the tunnel when you are finished.