Skip to content

🚀 Open Source · Zero Signup · Single Binary

Expose Local → Internet

Share your localhost with the world in seconds. No account. No auth tokens. No nonsense.

Downloads Tests Go Report Card License: MIT

<10MB Binary Size
3 Providers
>80% Test Coverage
0 Signups Needed

Quick Start

curl -fsSL https://raw.githubusercontent.com/kernelshard/expose/main/install.sh | sh
expose init
expose tunnel
go install github.com/kernelshard/expose/cmd/expose@latest
expose init
expose tunnel

Download for your platform from the Releases page, then:

chmod +x expose
expose init
expose tunnel

git clone https://github.com/kernelshard/expose.git
cd expose
go build -o expose ./cmd/expose
./expose init && ./expose tunnel

Output when running expose tunnel:

✓ Tunnel (LocalTunnel) started for localhost:3000
✓ Public URL: https://quick-mammals-sing.loca.lt
✓ Forwarding to: http://localhost:3000
  Press Ctrl+C to stop

Override port on the fly

expose tunnel -p 8080           # LocalTunnel on port 8080
expose tunnel -P cloudflare     # Use Cloudflare instead
expose tunnel --server host:7890 -p 3000  # Self-hosted

Why Expose?

🌐

3 Providers, 1 Tool

LocalTunnel for quick tests, Cloudflare for reliability, or your own server for full control.

🏠

Self-Hosted Mode

Run expose server on any $5 VPS. Your traffic, your rules — no third-party inspection.

⚡

Zero Friction

No accounts, no API keys, no dashboards. Just install and run — three commands from zero to tunnel.

📦

Single Binary

One file under 10MB, statically compiled. Copy it anywhere, it just works. No runtime needed.

🔧

Developer First

Project-based config files, short flags, clean output, and >80% test coverage. Built by devs for devs.

🔓

Fully Open Source

MIT licensed. Audit the code, extend it, run it yourself. No proprietary lock-in.


Expose vs. Alternatives

Feature Expose ngrok Cloudflare Tunnel LocalTunnel (Node)
No Signup ✅ ❌ ❌ ✅
Single Binary ✅ ✅ ✅ ❌ Node.js
Open Source ✅ ❌ ✅ ✅
Self-Hosted Server ✅ ❌ ❌ ❌
Multiple Providers ✅ ❌ ❌ ❌
Free ✅ Free tier Free ✅
Custom Domains 🚧 Planned 💲 Paid ✅ ❌

Common Use Cases

# Start your webhook handler on port 4000
node webhook-server.js

# Expose it
expose tunnel -p 4000

# Paste the public URL into GitHub/Stripe/Twilio settings
# Start your dev server
npm run dev

# Expose it
expose tunnel

# Open the public URL on your phone or tablet
# Start your app
npm start

# Use Cloudflare for better reliability during demos
expose tunnel -P cloudflare -p 3000
# 1. One-time setup on your VPS
expose server --domain=tunnel.mysite.com \
              --control-port=7890 \
              --public-port=8080

# 2. Connect from anywhere
expose tunnel --server=tunnel.mysite.com:7890 -p 3000

Self-hosted advantage

With self-hosted mode, traffic stays entirely on your infrastructure — no rate limits, no third-party routing, no terms-of-service surprises.


Explore the Docs