Blog ·
You cannot send a localhost link. How to share an app that only opens on your computer
A localhost link only works on your own machine. Why, when a tunnel is enough, and how to deploy an app built with Claude Code so your team can open it anytime.
No. A link that starts with http://localhost or http://127.0.0.1 only works on the computer where the app is running. "localhost" is not a website, it is the name every computer gives to itself. When your boss opens it on their laptop, their browser looks for the app on their own machine, finds nothing, and shows an error. Nothing is broken; the link was never meant to travel.
This page explains why that happens, what the two real options are (a tunnel for a ten-minute demo, or a deployment for something people will keep using), and how to do the second one from Claude Code without learning the vocabulary.
Why the link does not work for anyone else
When Claude Code says "your app is running at http://localhost:3000", it means: a small server is running on this computer, on door number 3000. Two things follow from that:
- The address is relative to whoever reads it.
localhoston your machine is your machine.localhoston your coworker's machine is theirs. The same URL points to two different computers. - The app only exists while your computer runs it. Close the terminal, put the laptop to sleep, or lose Wi-Fi, and the app is gone even for you.
So the question is not "how do I send the link", it is "how do I put the app somewhere that is not my laptop". There are two ways to answer that, and they solve different problems.
Option 1: a tunnel, for a quick demo
Tools like ngrok, Cloudflare Tunnel or localtunnel open a temporary door from the public internet to the app on your computer, and give you a random URL such as https://a1b2-203-0-113-5.ngrok-free.app. That is the right tool when you want to show something for ten minutes on a call.
What it does not do:
- The link dies when your computer sleeps. The app is still running on your laptop; the tunnel only forwards traffic to it.
- The free URL changes every restart, so you re-send the link every time. A fixed address is a paid feature.
- Anyone with the URL gets in, and visitors on free tiers usually see a warning page before the app.
- It needs a terminal, an account, a token, and knowing which port your app uses.
If the goal is "my team uses this every day", a tunnel is the wrong shape. You would be running a server out of your laptop indefinitely.
Option 2: deploy it, so it lives on its own
"Deploying" means copying the app to a computer that is always on, in a data center, with a permanent public address. After that the app runs without you. This is what platforms like Vercel, Netlify, Railway or Render do, and each of them assumes you know Git, a terminal, build commands and environment variables. If you built the app by describing it to Claude Code, that vocabulary is exactly what you do not have.
White Ghost is a deployment platform built for that situation. Here is what the flow looks like when the person doing it is the same person who never wants to read a build log.
Step by step from Claude Code
- Create the app. In your terminal, in the folder Claude Code has been working in, run
ghosty init. It creates a repository in your own GitHub account and registers the app. You need a GitHub account for this (that is where your code lives, so it stays yours). - Let the assistant do the technical part. Every White Ghost app has "Open in Claude Code" and "Open in Codex" buttons, plus "Copy the instructions", which hands the assistant a ready-made prompt with the app URL and the repository URL. Paste it, and Claude Code moves your project into place and pushes it.
- Every push goes live. There is no separate publish step. Real builds on a full app with a frontend and a backend have taken 53 seconds and 1 minute 27 seconds. If a build breaks something,
ghosty rollbackor the Redeploy button on any earlier build puts the previous version back. - Share a permanent address. The app gets its own URL that does not change and does not depend on your computer. If you own a domain, you can point it at the app and the certificate is issued and renewed for you.
Decide who can open it
This is the part a tunnel never gives you. When you create the app you choose an access mode:
- Public: anyone with the link.
- A shared invite code: people need a code you hand them. It is one code for everyone, not a list of named guests, so treat it like a shared password.
- Your own sign-in: the app asks for a login you write into it, for example with Claude Code's help.
The mode is part of the app's code, so changing it later means editing and redeploying rather than flipping a switch.
What else comes with it
Most apps built with an assistant need more than a web page: somewhere to store data, a place for uploaded files, a secret API key or two. A White Ghost app includes a managed PostgreSQL database, file storage that is added when your code needs it, secrets you paste once in the console, and scheduled jobs. The console lists the nine pieces it manages for you, with the status of each, so you can see what you did not have to set up.
Honest limits
- White Ghost runs Node and Python apps. A plain HTML file is not an app by itself; Claude Code can wrap it into one in a few minutes.
- The app scales to zero when idle, so the first visit after a quiet period takes a moment to wake up.
- You need a GitHub account, because the code is stored in your account and you can download it as a zip whenever you want.
- Preview links for pull requests are public URLs; do not put production data behind a preview.
Which one should you pick
| You want to... | Use |
|---|---|
| Show it on a call in the next five minutes | A tunnel (ngrok, Cloudflare Tunnel) |
| Let your team open it tomorrow, from their phones, without you online | A deployment |
| Keep it inside the team, or behind a login | A deployment with a shared invite code or your own sign-in |
| Update it every time Claude Code changes something | A deployment, since each push goes live |
If you are on the second row or below, run ghosty init and hand the rest to Claude Code.
Frequently asked questions
I built something with Claude Code and it opens at localhost:3000. How do I send it to my boss?
You cannot send that link: localhost means "this computer", so it only opens on yours. For a quick demo, open a temporary tunnel with a tool like ngrok and send the URL it gives you. For something your boss will keep using, deploy the app: with White Ghost you run ghosty init in the project folder, let Claude Code push it, and share the permanent URL the app gets.
Can I send my localhost link over WhatsApp so my team can open it?
You can send it, but nobody will be able to open it. A localhost address points to whoever's phone or laptop is reading it, not to your computer. Send a public URL instead: a tunnel URL for a short demo, or the app's own address once it is deployed.
Why can't my coworker open the http://localhost:5173 link that Claude Code gave me?
Because port 5173 is a door on your computer, not on theirs. Their browser looked for the app on their own machine and found nothing. To share it you either tunnel it (temporary, tied to your laptop) or deploy it to a platform so it gets a public, permanent address.
Claude Code made me a little web tool on my laptop. What is the easiest way to put it online so other people can use it? I am not a developer.
Deploy it instead of tunneling it. On White Ghost: run ghosty init in the folder, click Open in Claude Code on the app page so the assistant moves the code and pushes it, and every push goes live at a permanent URL. You choose whether the link is public, needs a shared invite code, or requires a sign-in you build into the app.
Is ngrok a good way to share my localhost app with my team permanently?
Not for permanent sharing. ngrok forwards traffic to the app running on your computer, so the link stops working when the laptop sleeps, and on the free tier the URL changes every restart. It is good for a demo. For a team tool that has to be up every day, deploy the app to a platform with a fixed address and an access mode.
Do I need to understand Git or a terminal to deploy with White Ghost?
You type one command, ghosty init, and the rest can be done by the assistant. The app page has Open in Claude Code and Open in Codex buttons and a Copy the instructions option that gives the assistant a ready prompt with the app and repository URLs. You do need a GitHub account, because the code is stored there and stays yours.