GhostlyShare for local app previews
GhostlyShare localhost sharing across Windows and Linux
GhostlyShare is a small desktop app and CLI for Windows and Linux. It finds local web apps and turns them into public Cloudflare links without deployment, DNS work, or messy browser tabs.

localhost:5173Product concept
A public link for the app currently running on your device
Launch a dev server, dashboard, webhook receiver, or small API. GhostlyShare detects it, shows the port, and offers a Start button. One click creates a public URL to open, copy, and share.
Supported web stacks
If your app runs locally as a web app, GhostlyShare can generally share it
GhostlyShare requires no framework plugins. It detects and forwards local HTTP, HTTPS, WebSocket, long-polling, streaming, and API traffic, allowing common development stacks to use the same straightforward Start button process.
React, Vite, Next.js
Share hot-reload previews and front-end dev servers on ports such as 3000, 5173, or similar local development ports.
ASP.NET Core, Blazor Server, Blazor WebAssembly
Forward framework assets, SignalR-like traffic, long polling, redirects, cookies, and local HTTPS development endpoints.
Vue, Nuxt, Angular, SvelteKit
Expose browser apps running on local HTTP or HTTPS servers, including development server routes and WebSocket updates.
Node.js, Express, Fastify, ASP.NET APIs
Share JSON APIs, webhook receivers, Swagger or OpenAPI endpoints, health checks, and standard POST requests.
WordPress, PHP, static HTML
Preview local CMS, static sites, and content-rich pages when GhostlyShare detects a stable browser-facing endpoint.
WebSockets, SSE, streaming responses
Maintain modern real-time previews via the public route using WebSocket proxying and streaming-aware timeouts.
Highlights
The essentials for a polished local-to-public workflow
Automatic detection of local applications
GhostlyShare scans local ports, probes HTTP/HTTPS endpoints, reads page titles, and identifies API surfaces via OpenAPI, Swagger, documentation, and health checks.
Temporary links by default, custom domains when needed
No login, account, subscription, or custom domain is required for the quick option. For a branded URL, use the optional Cloudflare custom domain setup.
HTTP and WebSocket forwarding
Modern apps continue functioning as GhostlyShare forwards standard HTTP traffic and WebSocket connections via the active public route.
Copy, launch, stop, repeat
Each active app features a compact action bar: open the public URL, copy it with confirmation, or end the preview when finished.
Desktop app and ghs CLI
Use the desktop app when you want simple start and stop controls. Use ghs when you prefer the terminal, servers, or scripts.
Password-protected public links
Add a password before or while a random link or custom domain is live. Visitors unlock the link first, failed attempts can lock 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 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 keeps live links separate from warm tunnel processes so status stays 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 management
If the local app closes, the network changes, or the public URL stops responding, GhostlyShare ends sharing and moves the app card back to Local Only.
Workflow
From localhost to a public URL in four quiet steps
- 1
Launch your local app
Start Vite, ASP.NET Core, a dashboard, webhook receiver, or any local web service as normal.
- 2
Click Start in GhostlyShare
The app locates the port, sets up a secure public route, waits for the URL, and displays a Live status when ready.
- 3
Choose access and lifetime rules
Before publishing, you can set a password, failed-attempt limit, password session length and automatic expiry time for the public link.
- 4
Share the preview URL
Copy the link, open it in a browser, share with a client, or test from another device instantly.
Short video demo
See GhostlyShare in action
A brief YouTube demonstration reveals how GhostlyShare converts a local app into a publicly accessible preview URL.
Why it feels responsive
The app handles the tedious tasks before you need to consider them
GhostlyShare continuously monitors local ports, retains live previews, manages routes as apps start or stop, and provides clear feedback on Windows and Linux. For those favouring terminals or scripts, the ghs CLI offers the same local-to-public workflow via the command line.
Custom domain previews
Use a branded Cloudflare URL when a temporary link won’t suffice
The quick method works without DNS, but GhostlyShare also offers an optional custom URL process for Cloudflare zones. Add a token, select the zone, choose a hostname, and GhostlyShare sets up the managed tunnel and DNS record for your local app.
preview.your-domain.com
Custom URLs are designed for demos that need to appear stable and familiar. GhostlyShare can reuse saved assignments, refresh the route, and halt the managed tunnel within the same app workflow.
- 1
Link Cloudflare
Enter a Cloudflare API token once; GhostlyShare then validates and securely stores it for future custom URL sessions.
- 2
Choose a zone and host name
Select the Cloudflare zone, input the hostname label, and GhostlyShare will confirm the full hostname’s availability.
- 3
Publish the Cloudflare route
GhostlyShare establishes the Cloudflare tunnel, configures ingress, writes the DNS record, and initiates the secure route to your local port.
Where it helps
Designed for when localhost alone won’t suffice
Previews for clients and colleagues
Share a working link before deploying a branch or releasing a temporary build.
Webhook testing
Direct external services to a local receiver while maintaining your development loop on your device.
Mobile device compatibility checks
Access your local site from another phone, tablet, or test device without connecting to the same network.
API demonstrations
Expose a local API for swift integration discussions, then stop it once complete.
Comparison with ngrok
A straightforward way to share only your local running app
If you typically use ngrok, GhostlyShare offers a more straightforward local preview process: open the desktop app, select the detected service, click Start, and share the link. Temporary links remain lightweight, with custom domains available for branded Cloudflare URLs.
Desktop-focused and visual
Ideal for viewing detected local apps, sharing with a single click, copying the URL, and stopping the preview via a compact desktop window.
Start with free temporary links
Ideal for quick previews as no login, account, or subscription is required before sharing. Custom domains offer an optional upgrade for Cloudflare users.
Powerful but requires more manual setup
Terminal-first sharing tools suit advanced routing workflows. GhostlyShare targets everyday previews where speed and simplicity are key.
Download
Get GhostlyShare for Windows or Linux
Download the desktop app or the ghs CLI from the GhostlyShare downloads page. Windows and Linux packages are listed separately, with direct GitHub links for ZIP, DEB, Arch, and RPM builds.
Desktop and CLI downloads
Visit the dedicated download page to select Windows setup, Windows CLI, Linux desktop, or Linux CLI packages.
Open download pageCommand-line workflow
The GhostlyShare CLI, called ghs, is designed for terminal, server, and script workflows like scanning local apps, sharing ports, checking doctor output, or using custom Cloudflare hostnames.
View CLI documentationMicrosoft Store
For the Windows desktop app, the Microsoft Store remains the signed installation method. Use the GitHub setup ZIP if you prefer the direct release package.
Open the StoreDocs
Browse the GhostlyShare docs
The GitHub wiki explains installation, app detection, link readiness, traffic statistics, password protection, link lifetime, rate limits, custom domains, Windows and Linux differences, and checks for missing local apps.
First steps
Run a test app, launch GhostlyShare, generate a public URL, and stop sharing cleanly.
Open guideInstall and update
On Windows, use the Microsoft Store. On Linux, choose the package that matches your distribution.
Open guideApp detection
Discover which local ports, frameworks, titles, APIs, and development processes provide strong detection signals.
Open guideCommand Line Interface
Install ghs on Windows or Linux, scan local apps, share a port, output JSON, and perform doctor checks.
Open guideWindows and Linux
Compare packaging, secure token storage, tray functionality, desktop variations, and supported sharing workflows.
Open guideShare online
Understand random Cloudflare URLs, custom URLs, link readiness delays, and what occurs when sharing ends.
Open guidePassword Protection
Protect random URLs and custom domains with a visitor password, failed-attempt lockout and browser sessions that expire.
Open guideLink Lifetime
Make public links go offline automatically after a preset, by the end of today or after a custom duration.
Open guideRate Limits and Sessions
Understand public-app limits, warm tunnel slots, Cloudflare quick-tunnel cooldowns and visitor password sessions.
Open guideTraffic statistics
Read what requests, approximate visitors and active users mean during the current public-link session.
Open guideSecurity and Privacy
See what not to expose, where password protection helps and why link lifetime is not the same as access control.
Open guideTroubleshooting
Investigate why an app is hidden, a link appears offline, or Linux desktop integration acts differently.
Open guideSupport
Send GhostlyShare bug reports or feature requests
Access the GitHub issue forms for bugs and feature requests. Before submitting, remove tokens, passwords, private URLs, and customer data.
Frequently Asked Questions
Quick answers before sharing a local app
Is an account required to use GhostlyShare?
No. GhostlyShare is designed for rapid local previews without login, account creation, or subscription.
Is a personal domain necessary?
No. You can share a temporary public preview link without purchasing a domain, altering DNS, or deploying a test build. If you use Cloudflare, GhostlyShare can generate a custom URL for a branded preview.
Which web frameworks work with GhostlyShare?
GhostlyShare is framework agnostic, compatible with local HTTP and HTTPS apps from stacks like React, Vite, Next.js, Vue, Angular, SvelteKit, ASP.NET Core, Blazor, Node APIs, WordPress, static HTML, Swagger or OpenAPI services, and webhook receivers.
Can GhostlyShare run on Linux?
Yes. Linux builds are available as DEB, Arch, and RPM packages on GitHub. On Windows, the Microsoft Store app is the easiest option.
Is there a CLI for GhostlyShare?
Yes. The CLI is called ghs and runs on Windows and Linux. Use it for terminals, servers, and scripts; use the desktop app when you want a visual workflow.
Can I password-protect a public GhostlyShare link?
Yes. Password protection is enabled per public link for random URLs and custom domains. Visitors enter the password before GhostlyShare sends 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, while the GhostlyShare public URL goes offline at 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 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 once. Random Cloudflare quick tunnels can also enter a local cooldown when Cloudflare reports rate limiting.
How do custom domains operate?
Custom domains utilise Cloudflare. Once you add a valid token, GhostlyShare loads your zones, verifies the hostname, creates the tunnel and DNS record, and directs the public hostname to the chosen local app. Windows stores the token with DPAPI; Linux uses Secret Service via libsecret.
Where can I find 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 intended to replace ngrok?
It depends on your workflow. Tools like ngrok excel at advanced routing, whereas GhostlyShare prioritises quick desktop previews for local apps, APIs, webhooks, and demos on Windows and Linux.

Bottom line
GhostlyShare transforms a local build into a shareable experience
It is deliberately compact, straightforward, and practical on Windows and Linux: launch your app, press Start in GhostlyShare, share the link, and continue working.
Select your download