GhostlyShare · Windows & Linux

Share localhost. In one click.

Built locally. Shared with the world. GhostlyShare finds your web app — you share it in one click.

Quick start

Open GhostlyShare. Your apps are already there.

  1. 01

    Start your local app

    Start your website, development server or API as usual. GhostlyShare checks local ports and detects reachable web apps automatically.

  2. 02

    Select it in GhostlyShare

    Choose a detected app and click Go Public once. GhostlyShare creates the public link through Cloudflare. No deployment, router configuration or manual tunnel command is needed.

  3. 03

    Copy the link or scan the QR code

    Send the public URL to your reviewer or open it on your phone. Keep your computer, local app, and GhostlyShare running.

GhostlyShare desktop app with a detected website, live link and sharing controls
Your apps and sharing controls in one place. Screenshot of a running preview.

See the desktop app in action

Watch how a local app becomes a public link

See the workflow before you install: find a running app, start sharing, and open the public preview.

Watch directly on YouTube ↗

The video connects to YouTube only when you press play.

What do you want to share?

A preview for the next step

Website previews

Let clients and teammates try your latest changes in their browser, without a test deployment.

Local webhook tests

Give an external service a public callback URL that forwards to your local API. Check its authentication requirements before enabling a preview password.

Checks on real devices

Open the preview on a phone or tablet, even outside your Wi-Fi network. A QR code makes the handoff easier.

Inside GhostlyShare

More than a link: control your preview

Open these controls from the app card. The screenshots show the actual desktop interface; the values are examples, not recommended settings.

Decide who can open your link

Protect a preview with a temporary password. Visitors enter it before they can reach your local app.

Set a limit for failed attempts and choose how long an unlocked visitor session lasts. Available for temporary links and custom domains.

Password settings with failed-attempt and session-duration controls

Works with your stack

A local web app is all you need

GhostlyShare works with reachable local HTTP and HTTPS apps. No framework plugin is required. It also forwards WebSocket connections for supported app workflows.

  • React · Vite · Next.js
  • ASP.NET Core · Blazor
  • Vue · Angular · SvelteKit
  • Node.js · APIs · WordPress
App not detected? Check the troubleshooting guide. ↗

From your computer to your phone

Open the QR code and scan it with your phone or tablet. The public preview opens in the device’s browser without typing a long URL.

Check touch controls, responsive layouts and real-device behavior, including outside your local Wi-Fi network.

Example QR-code dialog for opening a shared app on a phone

Optional custom domains

Use an address people recognize

Temporary public links work without a Cloudflare account or your own domain. For a branded address, connect a Cloudflare-managed domain with your API token and select a hostname.

GhostlyShare sets up the managed tunnel and DNS entry for your selected app. Password protection and link lifetime remain available.

Set up a custom domain ↗

CLI · Windows & Linux

Share from your terminal. Automate repeat tasks.

Build sharing into your development workflow with the optional ghs CLI for Windows and Linux. Start previews from scripts, test webhooks, and pass the public URL to your own tools.

  1. Find running apps with ghs scan --json and process the results in your scripts.
  2. Use --url-only to output the public link, or --json for structured status events.
  3. Set a time limit with --expires-after so sharing ends automatically after your demo or test.

Try a 15-minute preview

ghs share 5173 --expires-after 15m

After installing the CLI, replace 5173 with your app port. Keep the command running while you share; Ctrl+C ends the preview early.

CLI installation and commands ↗
Let the link expire automatically
Link lifetime dialog with open-ended and expiring sharing options

See whether your preview is being used

View requests, approximate visitors and active users during the current sharing session.

These counters give quick feedback during a demo. They are session statistics, not a full analytics or security audit.

The traffic counters stay local to your current sharing session; they are not sent to GhostlyInc.

Live traffic counters showing requests, visitors and active users

Keep building

Get GhostlyShare and try your first link

No account. No email. No subscription.

Share temporary links without signing up or logging in. GhostlyShare is free, and we do not collect usage analytics from the app.

Choose the Windows or Linux package on the download page. Desktop and CLI downloads are listed separately.

Download GhostlyShare ↗

GhostlyShare FAQ

Do I need an account to use GhostlyShare?

No. GhostlyShare is built for quick local previews without login, account creation, or a subscription step.

Do I need my own domain?

No. You can share a temporary public preview link without buying a domain, changing DNS, or publishing a test deployment. If you already use Cloudflare, GhostlyShare can also create a custom URL for a branded preview.

Which frameworks does GhostlyShare support?

GhostlyShare is framework agnostic. It works with local HTTP and HTTPS apps from stacks such as React, Vite, Next.js, Vue, Angular, SvelteKit, ASP.NET Core, Blazor, Node APIs, WordPress, static HTML, Swagger or OpenAPI services, and webhook receivers.

Can I use GhostlyShare on Linux?

Yes. GhostlyShare ships Linux desktop packages as DEB, Arch, and RPM assets from the GitHub release repository, while Windows remains available through the Microsoft Store.

Does GhostlyShare have a CLI?

Yes. The command-line tool is named ghs and is available for Windows and Linux. It is meant for terminal, server, and script workflows while the desktop app remains the visual workflow.

Can I password-protect a public GhostlyShare link?

Yes. Password protection can be enabled per public link for random URLs and custom domains. Visitors must enter the password before GhostlyShare forwards traffic to the local app.

Can a public link go offline automatically?

Yes. Link lifetime lets you choose when a public link stops sharing. The local app keeps running, but the GhostlyShare public URL goes offline after the selected time.

Can I see traffic statistics for a public link?

Yes. While a desktop link is live, GhostlyShare can show simple counters for requests, approximate visitors, and active users in the current sharing session. These numbers are meant for quick feedback, not full analytics or security auditing.

How many public apps can I share at once?

GhostlyShare allows up to three active public apps at the same time. Random Cloudflare quick tunnels can also enter a local cooldown if Cloudflare reports rate limiting.

How do custom domains work?

Custom domains use Cloudflare. After you add a valid token, GhostlyShare loads your zones, checks the hostname, creates the tunnel and DNS record, and routes the public hostname to the selected local app. Windows stores the token with DPAPI, while Linux uses Secret Service through libsecret.

Where is the GhostlyShare documentation?

The GitHub wiki covers installation, app detection, going public, password protection, link lifetime, traffic statistics, custom domains, Windows and Linux differences, troubleshooting, bug reports, and feature requests.

Is GhostlyShare meant to replace ngrok?

It depends on the workflow. ngrok-style tools are powerful for advanced routing, while GhostlyShare focuses on fast desktop previews for local apps, APIs, webhooks, and demos on Windows and Linux.