Tunr Documentation

Tunr exposes your local development server to the internet in < 3 seconds with automatic HTTPS, WebSocket support, and zero configuration. It's a developer-first alternative to ngrok and Cloudflare Tunnel.

💡

Note: tunr is a single static Go binary. It doesn't rely on Node.js or Python to run, and the CLI is fully open-source.

Quickstart

Install via Homebrew or curl, then start sharing immediately.

brew install ahmetvural79/tap/tunr
tunr share --port 3000

CLI Reference

❄️ Freeze / Snapshot Mode

If your app crashes (e.g., Node throws an exception, Database disconnects) while demoing to a client, the freeze mode will intercept the 500 error and serve the last working HTML/CSS/JS response from memory.

tunr share --port 3000 --freeze

🛡️ Read-Only Demo Mode

Prevents destructive actions. Whenever a client submits a form (POST) or clicks a delete button (DELETE), the tunr proxy safely intercepts the request, blocks it from hitting your actual local backend, and returns a simulated success response.

tunr share --port 3000 --demo

💬 Feedback Widget Injection

Every HTML page that passes through the tunnel gets a transparent feedback widget injected via proxy middleware (no code changes required on your end). Both visual UI feedback and background JavaScript exceptions are captured.

tunr share --port 3000 --inject-widget

🔒 Password Protection

Add Basic Authentication to your public URL instantly without writing any code. Keep your development environments secure from unauthorized access while sharing with clients or third parties.

tunr share -p 8080 --password "secret"

⏳ Auto-Expiring Tunnels

Forget to stop a tunnel exposing your local machine? Use a Time-To-Live (TTL). Once the duration expires, the tunnel daemon safely terminates the connection and shuts down the proxy.

tunr share -p 3000 --ttl 1h30m

🔀 Path Routing

Map different incoming URL paths to different upstream ports on your machine. This is perfect for testing microservices or serving your frontend and API from a single public proxy domain.

tunr share --route /=3000 --route /api=8080

🤖 Model Context Protocol

Tunr supports MCP out of the box. Add it to Claude Desktop or Cursor so your AI can manage tunnels locally.

// .cursor/mcp.json
{
  "mcpServers": {
    "tunr": {
      "command": "tunr",
      "args": ["mcp"]
    }
  }
}