From one-click sharing to full-stack routing
Route /, /api, /admin to different ports. Add TCP and UDP. All on ONE hostname. Zero CORS issues.
$ stunl -id myapp -ports 'web:3000,api:8080,admin:3001,db:5432:tcp'
Free tier available · Pro from $10/mo · No session limits
Don't need all that?
Built something cool? Share it with anyone, anywhere. No Vercel. No AWS. No deployment tutorials. Your laptop runs the app. We give you the link.
$ stunl -port 3000
Works with everything you build
Built with Cursor, Claude, Replit, or v0? This is for you.
Built for the agentic era
Designed from the ground up for AI agent integration. Give your agents a stable URL and communicate with them from any device, any network, at any time — whether they're running on your laptop, your home server, or a Raspberry Pi in the closet.
$ stunl -id my-agent -port 8000
MCP servers, LangChain agents, AutoGPT, CrewAI, custom agents — if it listens on a port, stunl can expose it. Persistent IDs mean your agent's URL never changes between restarts.
Modern apps have multiple services. Traditional tunnels make you juggle multiple URLs.
4 tunnels, 4 random URLs
CORS issues, config churn, URL management
1 tunnel, 1 URL, 1 TLS cert
Zero CORS, stable endpoints, simple config
Config-as-code for tunnels
Define services, routing, auth, and environments in stunl.yaml.
Check it into git. Everyone on your team gets the same tunnel setup.
Think of it as a compose file for your tunnels.
$ stunl \
-id myapp \
-ports 'web:3000,api:8080:/api,db:5432:tcp' \
-routing-strategy path \
-oauth github \
-oauth-github-org mycompany
Retype every time. Forget a flag? Good luck.
$ stunl up
Config lives in git. New teammate? stunl up. Done.
version: "1"
name: myapp
routing: path
services:
web:
port: 3000
api:
port: 8080
path: /api
db:
port: 5432
protocol: tcp
auth:
oauth:
provider: github
github_orgs: [mycompany]
environments:
demo:
services: [web, api]
auth:
password: "demo2026"
stunl init scans your ports and generates the config for you
Check into git. New hire clones, runs stunl up, gets the full stack
stunl up --env demo for client demos, --env staging for QA
# Simple: expose a web app
$ stunl -port 3000
https://nova-4823.stunl.io → localhost:3000
# TCP: database, SSH, game server
$ stunl -port 5432 -protocol tcp -id mydb
mydb.stunl.io:10042 → localhost:5432
# Protected: restrict to GitHub org
$ stunl -port 3000 -id staging -oauth github -oauth-github-org mycompany
https://staging.stunl.io → localhost:3000 (GitHub auth required)
Start free, upgrade when you need more. Unlimited bandwidth on Team & Business plans.
No credit card required for free tier
For hobbyists and learning
For professional developers
For small teams
For enterprises
The honest comparison
| Feature | stunl Free | ngrok Free |
|---|---|---|
| Monthly bandwidth | 2 GB | 1 GB |
| Concurrent tunnels | 1 (multiport) | 3 |
| Session duration | 1 hour | Limited |
| Custom tunnel IDs | ✗ | ✗ |
| WebSocket support | ✓ | ✓ |
| HTTP Inspector | ✓ | ✓ |
| Browser warning | Powered by stunl | Interstitial |
| Feature | stunl Pro $10/mo |
ngrok $8/mo |
|---|---|---|
| Multi-port tunnels | ✓ | ✗ |
| Project config (stunl.yaml) | ✓ | ✗ |
| TCP tunnels | ✓ | ✓ |
| UDP tunnels | ✓ | ✗ |
| Bandwidth included | 50 GB | 5 GB |
| Concurrent tunnels | 5 | 3 |
| Reserved TCP ports | 3 incl. | 1 |
| File sharing | ✓ | ✗ |
| Terminal sharing | ✓ | ✗ |
| Edit & replay requests | ✓ | ✗ |
| Request diff view | ✓ | ✗ |
| Webhook verification | 7 providers | Limited |
| Response mocking | ✓ | ✗ |
| Chaos/latency injection | ✓ | ✗ |
| Request breakpoints | ✓ | ✗ |
ngrok Hobbyist plan ($8/mo). Comparison based on publicly available pricing as of February 2026.
Real features, available today, not "coming soon"
Expose your frontend, backend, and database through a single tunnel. Path-based routing, subdomain routing, or round-robin load balancing.
Define your entire tunnel setup in stunl.yaml. Services, routing, auth, environment presets. Check into git, run stunl up. A compose file for your tunnels.
stunl up, and gets the full stack — frontend, API, database — instantly.
Get a permanent TCP/UDP port that's yours. Same address every time you connect. Perfect for game servers, SSH access, or any service that needs a stable endpoint.
Share files with a single command. Password protection, expiration dates, one-time downloads. No signup needed for recipients.
Share your terminal session for pair programming. Multiple viewers, read-only mode, session recording. Access via web or SSH.
More than request logging. Full debugging toolkit in the TUI and web portal.
Protect tunnels with GitHub or Google login. Restrict by email domain, specific users, GitHub org, or GitHub team.
Full WebSocket support out of the box. Subprotocols, custom headers, ping/pong. Works with Streamlit, Jupyter, Socket.io, anything.
A beautiful terminal UI for managing tunnels. See stats in real-time, inspect requests, manage files - all without leaving your terminal.
Invite teammates, share tunnel configs, reserve subdomains together. Slack/Discord webhooks, shared inspector rules, encrypted secrets, activity feeds, and team custom domains.
What developers actually use tunnels for
Give your AI agents a permanent URL. Share Streamlit dashboards, Gradio UIs, or talk to your MCP servers from anywhere.
Don't want to learn Vercel or AWS? Run from your laptop, share the link. Done.
See your app on your phone or tablet. Real HTTPS URL, not localhost hacks.
Test webhooks, share WIP with clients, access your dev server from mobile.
Expose services without port forwarding. Plex, Home Assistant, game servers.
Show your work to clients without deploying. Multi-port for full stack demos.
Tunnel into production databases or services for debugging. TCP tunnels + SSH.
Share your terminal session. They can watch or type. No VS Code Live Share needed.
Send large files without uploading to the cloud. Password protect, set expiry.
Test Stripe, GitHub, Slack webhooks. Verify signatures, replay failures, compare payloads.
Host Minecraft, Valheim, or any game server from home with reserved UDP ports.
pentest.run domain for professional engagements. TCP/UDP for any protocol.