Instant localhost tunnels. Zero friction.

Get setup in seconds. Share your local dev server with the world — for demos, webhooks, and mobile testing.

Zero Config

No signups, no API keys. We literally don't want your data.

Smart Filtering

Allow only the paths and methods you want. Block everything else.

Sticky Tunnels

Same machine, same port, same URL. No more broken webhooks.

Multi-Tunnel

Run up to 5 concurrent tunnels per machine

zsh
$ expose -port 3000
🚀 Tunnel Established!
🌐 Public URL: https://a7k2p9.expose.host
📡 Local Port: 3000
✅ Allowed: *
❌ Denied: (none)
📡 Live Requests:
GET /api/v1/users 200 OK
POST /webhook/stripe 200 OK
GET /static/main.css 304
Quick Start
curl -sSL https://expose.host/install.sh | bash

PROUDLY SUPPORTED BY

Secure by Design

External User Expose Relay Local Machine TLS 1.3 TLS 1.3

End-to-End Encryption

Every byte of data — from the global internet to your local localhost — is strictly encrypted using industrial-grade TLS.

Zero Logs, Zero Data

We only process transient metadata at the edge for rate limiting. We never log or store the content of your traffic.

Edge Protection

Unauthorized paths and methods are instantly rejected by the relay, shielding your machine from bots and malicious probes.

Install & Update

Manage the expose CLI lifecycle with these commands:

Install (macOS / Linux)
curl -sSL https://expose.host/install.sh | bash
Install (Windows PowerShell)
iwr -useb https://expose.host/install.ps1 | iex

Verify Installation: After installation, check the version:

expose -version

Update: To update Expose to the latest version, run:

expose update

Uninstall: To uninstall Expose, run and confirm when prompted:

expose uninstall

Expose a port

Start a tunnel to expose a local port to a public URL instantly.

expose -port 3000

Sticky tunnels

Always get the same subdomain for your applications across restarts.

expose -port 3000 -sticky
✨ Highlight: When you use the -sticky flag, Expose ensures that the same port on the same machine always receives the same public URL. No more updating webhook URLs or sharing new links every time you restart your tunnel.

Allow certain path(s)

Whitelist specific URL paths or patterns using wildcards. You can specify the -allow flag multiple times to combine filters.

expose -port 3000 -allow "/api/*" -allow "/webhooks/*"
✨ Pro Tip: Wildcards ending in /* are inclusive. For example, /admin/* matches both the /admin path exactly and everything under it.

Deny certain path(s)

Block access to sensitive paths at the edge. Like allow rules, you can specify -deny multiple times.

Note: Deny rules are computed after allow rules. A request must pass the allow whitelist before being checked against the deny blacklist.

expose -port 3000 -allow "/api/*" -deny "/api/v1/internal/*"

Allow certain method(s)

Filter incoming traffic to permit only specific HTTP methods like POST or GET.

expose -port 3000 -allow "POST /*"

Deny certain method(s)

Reject requests that use unauthorized or unwanted HTTP methods at the edge.

expose -port 3000 -deny "DELETE /*"

Webhook Testing

Testing webhooks (GitHub, Stripe, Twilio) locally used to be a pain. With Expose, it's a 4-step process:

1
Start your Local Server: Make sure your application is running on a local port (e.g., 3000).
2
Expose it: Run expose -port 3000. Copy the public URL provided (e.g., https://abc12.expose.host).
3
Configure the Provider: Go to your GitHub or Stripe webhook settings and paste the Expose URL as the Payload URL.
4
Test & Debug: Trigger a test event from the provider. You'll see the request hit your local server instantly.

Shield your local server (Pro Tip)

To avoid exposing your entire local app, you can restrict access to just the webhook endpoint:

expose -port 3000 -allow "POST /api/webhooks/*"
Why this matters: Expose will instantly reject any request that isn't a POST or doesn't match your webhook path, blocking bots and unauthorized probes at the edge before they even reach your machine.

Service Limits

Expose is a completely free service. To ensure stability and reliability for everyone, fair-use limits apply.


Support & Feedback

Expose is community-focused, and we welcome your feedback. If you encounter any bugs or have ideas for new features, please reach out.

Community Support: The best way to get help or suggest improvements is to create an issue on our GitHub repository.

Terms & Privacy

By using Expose, you agree to these simple rules designed to keep the service fast and free for everyone.

Terms of Service

Privacy Policy


GitHub