llms.txt
# tunnl.gg
> tunnl.gg exposes a local web server to the internet with one SSH command: `ssh -t -R 80:localhost:PORT proxy.tunnl.gg`. It returns a public HTTPS URL on a subdomain of tunnl.gg: random by default, or the same on every connection with `stable@proxy.tunnl.gg`. Nothing to install, no account, free, and the server is open source (MIT). Paid Pro and Team plans add your own subdomain names.
Key facts:
- Requires only a standard SSH client (macOS, Linux, Windows 10+). The `-t` flag is required so the server can print the URL.
- Supports HTTP and WebSockets; every tunnel is served over HTTPS with a wildcard certificate.
- Limits: 3 concurrent tunnels per IP, 25 requests/s per visitor (burst 200), 128 MB bodies, tunnels close after 2 hours idle or 24 hours total.
- Browser visitors see a one-time phishing warning page; non-browser clients (curl, webhooks) are not affected.
- For scripts and AI agents: add `output=json` after the host (`ssh -n -T -R 80:localhost:3000 stable@proxy.tunnl.gg output=json`) and the session prints JSON lines instead of the banner: first `{"event":"tunnel","url":...}`, then one `{"event":"request",...}` per request. Works on free tunnels; no install, no MCP server needed. See the AI coding agents guide below.
- Stable URLs: connecting as `stable@proxy.tunnl.gg` gives a URL tied to your SSH key that stays the same across reconnects. Any key works, nothing to register, no account. The name is generated, not chosen.
- Pro ($6/month or $60/year) and Team ($5/seat/month, from 3 seats): reserve your own subdomain names (`ssh -t -R myapp:80:localhost:3000 pro@proxy.tunnl.gg` serves https://myapp.tunnl.gg), no time limits, no warning page, passwords, IP allowlists, CORS and a request inspector. Custom domains (outside tunnl.gg) are not available.
## Docs
- [Overview](https://tunnl.gg/index.md): what tunnl.gg is, how it works, use cases, limits, comparison and FAQ
- [Documentation](https://tunnl.gg/docs.md): the command explained, examples, the browser warning page, limits and troubleshooting
- [Stable URLs](https://tunnl.gg/stable-urls.md): keep the same URL every time with your SSH key; how it works, choosing a key, autossh
- [Pricing](https://tunnl.gg/pricing.md): Free, Pro and Team plans, what each includes, and billing questions
- [Using Pro](https://tunnl.gg/pro.md): adding and verifying SSH keys, reserving subdomains, connecting as pro@, passwords, IP allowlists, CORS, the request inspector and teams
- [Full content](https://tunnl.gg/llms-full.txt): every page in one file
## Guides
- [Test webhooks locally](https://tunnl.gg/guides/test-webhooks-locally.md): receive Stripe, GitHub and Slack webhooks on localhost
- [Share a local dev server](https://tunnl.gg/guides/share-localhost-dev-server.md): public links for Vite, Next.js, webpack, Rails and Django, and fixes for "blocked host" errors
- [Use tunnl.gg from AI coding agents](https://tunnl.gg/guides/ai-coding-agents.md): start a tunnel in the background with output=json, read the URL, watch requests, and instructions to paste into AGENTS.md or CLAUDE.md
- [Keep a tunnel running](https://tunnl.gg/guides/keep-a-tunnel-running.md): reconnect automatically with a shell loop, autossh, launchd or systemd, and keep the same URL
- [ngrok alternative](https://tunnl.gg/ngrok-alternative.md): honest comparison with ngrok, Cloudflare quick tunnels and localhost.run
## Source
- [GitHub repository](https://github.com/klipitkas/tunnl.gg): Go server source, self-hosting instructions and full limits table
## Optional
- [Terms of service](https://tunnl.gg/terms.md)
- [Privacy policy](https://tunnl.gg/privacy.md)