Self-hosted reverse tunnels · ngrok-class, but yours

Own your origin.

Expose any local service — a dev server, an on-device LLM, a database — at a public URL on a domain you control. One command, every OS.

$curl -fsSL https://osmrouter.com/install.sh | sh

macOS & Linux · on Windows use irm https://osmrouter.com/install.ps1 | iex

osmrouter
$ osmrouter http 8080
→ Forwarding https://happy-tiger.osmrouter.com
Requests
12:04:19  200  GET  /api/users  14ms

macOS · Linux · Windows  •  HTTP & TCP  •  CLI · SDK · Desktop

Tunnel anything you run locally

PostgresOllamaNext.jsStripe webhooksSSHvLLMRedisGame servers

Everything ngrok does, on your terms.

Your domain, your brand, your infrastructure — hosted, or self-hosted on a single box.

Your domain, your origin

Random URLs are free; bring a custom domain on any plan. No shared third-party host, no vendor banner, no “powered by” in front of your service — ever.

OSM_DOMAIN=acme.com OSM_SUBDOMAIN=api osmrouter http 8080
→ https://api.acme.com

HTTP and raw TCP

Web apps over HTTPS, or databases, SSH, and game servers over raw TCP — one CLI.

Built for streaming

WebSockets, SSE, and long-running inference survive the tunnel with no timeout.

Secure by default

Protect any endpoint with Basic Auth. No warning interstitial.

Traffic inspector

Every request in real time — method, path, status, latency, size, IP.

Behind any firewall

Your machine dials out — no open ports, works behind NAT and CGNAT.

Live in under a minute.

01

Install

curl -fsSL https://osmrouter.com/install.sh | sh

One static binary — macOS, Linux & Windows. Nothing else to set up.

02

Authenticate

export OSM_TOKEN=osm_…

Create a free agent token in the dashboard and export it once.

03

Tunnel

osmrouter http 8080

Your local port is live at a public https:// URL on your domain.

Why teams switch

The expose-localhost workflow you know — with ownership you don't get elsewhere.

osmRouterngrok
Your own domain & brand
No interstitial warning page
Raw TCP (databases, SSH)
Self-host the entire stack
Streaming / LLMs, no timeout
Free custom domains

Self-host the whole stack

Relay, control plane, Postgres, Redis, and TLS ship as one Docker Compose deployment you run on a single box. No Cloudflare, no third-party dependency. SSO, audit logs, and an SLA for enterprise.

# bring up the entire platform
$ docker compose up -d
relay · api · postgres · redis · caddy
→ tunnels.yourcompany.com is live

Generous free tier. No warning pages.

2 domains, 10 tunnels, every feature — free. Upgrade only when you outgrow the limits.

curl -fsSL https://osmrouter.com/install.sh | sh