Repolode
MuhammadHananAsghar

MuhammadHananAsghar/wormhole

Open-source ngrok alternative that exposes a local HTTP server at a public HTTPS URL with one command.

Open-source alternative to:ngrok

Stars
437
Forks
33
Open issues
2
Last commit
23 days ago

What is it?

Wormhole is a command-line tunnel for sharing a local development server over the internet. Running `wormhole http 3000` assigns a public HTTPS URL that forwards to localhost:3000, so you can share a dev server, receive webhooks, or open an app on another device. A tunnel starts without an account; signing in with GitHub enables custom subdomains.

The Go client connects over a WebSocket to a relay built on Cloudflare Workers and Durable Objects, which routes incoming requests to the right tunnel. Each tunnel also runs a local traffic inspector at localhost:4040 with a live request stream, request replay, and HAR export. Dot-segment paths such as /.env and /.git, along with node_modules paths, are blocked by default before they reach your server.

The client is MIT-licensed and installs via a shell script, Homebrew, or prebuilt release binaries. The roadmap lists a planned self-hosted Go relay, but the current version depends on the Cloudflare relay.

Key features

  • 01Creates a public HTTPS URL for a local HTTP server with one command.
  • 02Supports custom subdomains after GitHub sign-in.
  • 03Local traffic inspector with live request stream, replay, and HAR export.
  • 04Forwards WebSocket connections through the tunnel.
  • 05Reconnects with exponential backoff when the connection drops.
  • 06Blocks sensitive dot-segment and node_modules paths by default.

Use cases

  • Sharing a work-in-progress web app with a client or teammate.
  • Receiving webhooks from third-party services on a local machine.
  • Testing a local app on a phone or other device over HTTPS.
  • Inspecting and replaying HTTP traffic during API debugging.

Quick start

  1. 1

    Install with the quick install script (macOS / Linux)

    curl -fsSL https://wormhole.bar/install.sh | sh
  2. 2

    Start a tunnel to your local HTTP server on port 3000

    wormhole http 3000

Things to know

  • Relies on the project's hosted Cloudflare Workers relay, and self-hosted relay is not yet shipped.
  • Custom subdomains require signing in with GitHub.
  • Roadmap items such as self-hosted relay and P2P mode are not yet implemented.

Topics

FAQ

What is wormhole?
Open-source ngrok alternative that exposes a local HTTP server at a public HTTPS URL with one command. Wormhole is a command-line tunnel for sharing a local development server over the internet. Running `wormhole http 3000` assigns a public HTTPS URL that forwards to localhost:3000, so you can share a dev server, receive webhooks, or open an app on another device. A tunnel starts without an account; signing in with GitHub enables custom subdomains.
Is wormhole free to use? What license does it have?
wormhole is open source under the MIT license. Check the license terms before using it in commercial products.
Is wormhole still maintained?
Actively maintained. The last commit to wormhole was on Sep 27, 2026.
What can I use wormhole for?
Sharing a work-in-progress web app with a client or teammate. Receiving webhooks from third-party services on a local machine. Testing a local app on a phone or other device over HTTPS. Inspecting and replaying HTTP traffic during API debugging.
How do I install wormhole?
Install with the quick install script (macOS / Linux): curl -fsSL https://wormhole.bar/install.sh | sh Start a tunnel to your local HTTP server on port 3000: wormhole http 3000
Where can I get wormhole?
The source code and installation instructions are on GitHub: https://github.com/MuhammadHananAsghar/wormhole

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects