GhostlyShare for localhost previews
GhostlyShare share localhost on Windows or Linux
GhostlyShare is a small desktop app and CLI for Windows and Linux that finds local web apps and turns them into public Cloudflare-powered links without deploys, DNS setup, or browser-tab chaos.

localhost:5173Product idea
A public link for the app already running on your machine
Start a dev server, a local dashboard, a webhook receiver, or a small API. GhostlyShare notices it, shows the port, and gives you a Start button. One click later you have a public URL you can open, copy, and share.
Supported frameworks
If it runs as a local web app, GhostlyShare can usually share it
GhostlyShare does not need framework plugins. It discovers and forwards local HTTP, HTTPS, WebSocket, long-polling, streaming, and API traffic, so the common development stacks fit the same simple Start button workflow.
React, Vite, Next.js
Share hot-reload previews and frontend dev servers on ports like 3000, 5173, or similar local development ports.
ASP.NET Core, Blazor Server, Blazor WebAssembly
Forward framework assets, SignalR-style traffic, long polling, redirects, cookies, and local HTTPS development endpoints.
Vue, Nuxt, Angular, SvelteKit
Expose browser apps that run on a local HTTP or HTTPS server, including dev-server routes and WebSocket updates.
Node.js, Express, Fastify, ASP.NET APIs
Share JSON APIs, webhook receivers, Swagger or OpenAPI surfaces, health endpoints, and normal POST requests.
WordPress, PHP, static HTML
Preview local CMS, static sites, and content-heavy pages when GhostlyShare can identify a stable browser-facing endpoint.
WebSockets, SSE, streaming responses
Keep modern realtime previews usable through the public route with WebSocket proxying and streaming-aware timeouts.
Features
Everything needed for a clean local-to-public workflow
Automatic local app discovery
GhostlyShare scans local listening ports, probes HTTP and HTTPS endpoints, reads page titles, and can recognize API surfaces through OpenAPI, Swagger, docs, and health endpoints.
Temporary links first, custom domains optional
No login, no account, no paid plan, and no custom domain are needed for the quick path. When a branded URL matters, use the optional Cloudflare custom domain flow.
HTTP and WebSocket proxying
Modern apps keep working because GhostlyShare forwards normal HTTP traffic and WebSocket connections through the active public route.
Copy, open, stop, repeat
Every live app gets a compact action strip: open the public URL, copy it with confirmation, or stop the public preview when the session is over.
Desktop app and ghs CLI
Use the desktop app for a visual Start and Stop workflow, or install the ghs CLI on Windows and Linux for terminal, server, and script workflows.
Password-protected public links
Add a password before or while a random link or custom domain is live. Visitors must unlock the link first, failed attempts can be locked out, and visitor sessions can expire automatically.
Auto-expiring public links
Set a link lifetime so a demo, review, webhook test, or client preview goes offline automatically after minutes, hours, today, or a custom duration while your local app keeps running.
Rate-limit aware sessions
GhostlyShare limits simultaneous public apps to three, tracks Cloudflare quick-tunnel cooldowns, and separates live links from warm tunnel processes so status is clearer.
Live traffic statistics
See simple local counters for the current public-link session: requests, approximate visitors, and recently active users. They are quick feedback, not full analytics.
Safe lifecycle behavior
When a local app closes, the network changes, or the public URL becomes unreachable, GhostlyShare stops sharing and returns the app card to Local Only.
Flow
From localhost to public URL in four quiet steps
- 1
Run your local app
Start Vite, ASP.NET Core, a dashboard, a webhook receiver, or any local web service as usual.
- 2
Press Start in GhostlyShare
The app finds the port, prepares the secure public route, waits for the URL, and shows a Live state when it is ready.
- 3
Choose access and lifetime rules
Before going public, optionally set a password, failed-attempt limit, password session length, and an automatic expiration time for the public link.
- 4
Share the URL
Copy the link, open it in the browser, send it to a client, or use it from another device for quick testing.
Video demo
Watch GhostlyShare in action
A short YouTube demo shows how GhostlyShare turns a local app into a public preview URL.
Why it feels fast
The app does the boring parts before you have to think about them
GhostlyShare keeps watching local ports, remembers live previews, reconciles routes when apps appear or disappear, and gives every visible action clear feedback on Windows and Linux. If you prefer terminals or scripts, the ghs CLI shares the same local-to-public workflow from the command line.
Custom Domains
Use a branded Cloudflare URL when the temporary link is not enough
The fast path still works without DNS, but GhostlyShare also has an optional custom URL flow for Cloudflare zones. Add a token, choose the zone, pick a hostname, and GhostlyShare creates the managed tunnel and DNS record for that local app.
preview.your-domain.com
Custom URLs are built for demos that should look stable and recognizable. GhostlyShare can reuse saved assignments, refresh the route, and stop the managed tunnel from the same app flow.
- 1
Connect Cloudflare
Paste a Cloudflare API token once, then GhostlyShare validates it and stores the credential in secure user storage for later custom URL sessions.
- 2
Choose zone and hostname
Pick the Cloudflare zone, enter the hostname label, and let GhostlyShare check that the full hostname is available.
- 3
Publish the managed route
GhostlyShare creates the Cloudflare tunnel, configures ingress, writes the DNS record, and starts the secure route to your local port.
Use cases
Built for the moments when localhost is not enough
Client and teammate previews
Send a working link before deploying a branch or publishing a temporary build.
Webhook testing
Point external services at a local receiver while keeping your development loop on your machine.
Mobile device checks
Open your local site from another phone, tablet, or test machine without joining the same network.
API demos
Expose a local API for a quick integration conversation, then stop it when the session is done.
Compared with ngrok
A simpler path when you only need to share what is running locally
If you usually reach for ngrok, GhostlyShare aims at a more direct local-preview flow: open the desktop app, pick the detected service, press Start, and send the link. Temporary links stay setup-light, while custom domains are there when you want a branded Cloudflare URL.
Desktop-first and visual
Best when you want to see detected local apps, start sharing with one click, copy the URL, and stop the preview from a compact desktop window.
Free temporary links first
Great for quick previews because there is no login, no account, and no subscription step before you can share. Custom domains are an optional upgrade path for Cloudflare users.
Powerful, but more manual
Terminal-first sharing tools are excellent for advanced routing workflows. GhostlyShare focuses on the everyday preview moment where speed and simplicity matter most.
Download
Download GhostlyShare for Windows or Linux
Choose the desktop app or the ghs CLI from the dedicated GhostlyShare download page. Windows and Linux builds are separated clearly, with direct GitHub downloads for setup ZIPs, CLI ZIPs, DEB, Arch, and RPM packages.
Desktop and CLI downloads
Open the dedicated download page to choose between Windows setup, Windows CLI, Linux desktop, and Linux CLI packages.
Open download pageCommand-line workflow
The GhostlyShare CLI is named ghs. Use it for terminal, server, and script workflows such as scanning local apps, sharing a port, checking doctor output, or using a custom Cloudflare hostname.
Read CLI docsMicrosoft Store
For the Windows desktop app, the Microsoft Store remains the signed install flow. Use the GitHub setup ZIP when you explicitly want the direct release package.
Open Microsoft StoreDocumentation
Read the GhostlyShare documentation
The GitHub wiki explains installation, app detection, link readiness, traffic statistics, password protection, link lifetime, rate limits, custom domains, Windows and Linux differences, and the checks to run when a local app does not appear.
Getting Started
Run a test app, open GhostlyShare, create a public URL, and stop sharing cleanly.
Open guideInstallation and Updates
Use the Microsoft Store on Windows, or install the Linux package that fits your distribution.
Open guideApp detection
See which local ports, frameworks, titles, APIs, and development processes are strong detection signals.
Open guideCommand Line Interface
Install ghs on Windows or Linux, scan local apps, share a port, use JSON output, and run doctor checks.
Open guideWindows and Linux
Compare packaging, secure token storage, tray behavior, desktop differences, and the supported sharing flow.
Open guideGoing Public
Understand random Cloudflare URLs, custom URLs, link readiness delays, and what happens when sharing stops.
Open guidePassword Protection
Protect random links and custom domains with a visitor password, failed-attempt lockout, and expiring browser sessions.
Open guideLink Lifetime
Set public links to go offline automatically after a preset, today, or a custom duration.
Open guideRate Limits and Sessions
Understand active public app limits, warm tunnel slots, Cloudflare quick-tunnel cooldowns, and password visitor sessions.
Open guideTraffic Statistics
Read what requests, approximate visitors, and active users mean during the current public-link session.
Open guideSecurity and Privacy
Review what not to expose, how password protection helps, and why link lifetime is not access control.
Open guideTroubleshooting
Check why an app is hidden, why a link looks offline, or why Linux desktop integration behaves differently.
Open guideSupport
Report bugs or request GhostlyShare features
Open the GitHub issue forms for bugs and feature ideas. Before posting, remove tokens, passwords, private URLs, and customer data.
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.

Bottom line
GhostlyShare turns a local build into something people can actually try
It is intentionally small, direct, and practical on Windows and Linux: start the app you are building, press Start in GhostlyShare, send the link, and keep working.
Choose your download