Expose localhost to the internet

Cloudflare-native tunnels. Public HTTPS URLs in one command.

Terminal
pipe
> forwarding https://sunny-shoes.miso.ws -> http://localhost:5143
> connected ready for requests
> GET /api/users 200 45ms
> POST /api/users 201 120ms

Two modes, one tool

Public tunnels or local HTTPS. Whatever you need, Pipe has you covered.

Online Mode

Tunnel through the internet

Public HTTPS URL via Cloudflare's edge network. WebSocket passthrough, auto-reconnect, request logging.

terminal
$ pipe 5143

Local Mode

Local HTTPS proxy

Trusted certificates via mkcert. Zero DNS configuration, sub-10ms overhead.

terminal
$ sudo pipe local 5190 --name myapp

Built for developers

Everything you need to expose your local server, nothing you don't.

Public HTTPS URLs

Get a secure public URL for your local server instantly.

Stable subdomains

Cached per directory. Your URL stays the same across sessions.

WebSocket passthrough

Full duplex WebSocket connections through the tunnel.

Auto-reconnect

Automatic reconnection on network interruptions.

Request logging

See every request in your terminal with status and timing.

Headers & auth

Add custom headers or require basic auth on your tunnel.

How it works

The CLI establishes a WebSocket to a Cloudflare Durable Object. Requests are serialized with msgpack, proxied to your local server, and responses sent back.

Browser
HTTPS request
*.miso.ws
DNS lookup
CF Worker
Edge routing
Durable Object
WebSocket bridge
CLI
Local proxy
localhost:PORT
Your server

Up and running in 10 seconds

Install globally, run with your port. That's it.

terminal
$ npm i -g pipe-tunnel
$ pipe 5143

Ready to tunnel?

terminal
$ npm i -g pipe-tunnel
$ pipe 5143