From one-click sharing to full-stack routing

One URL.
Your Entire Stack.

Route /, /api, /admin to different ports. Add TCP and UDP. All on ONE hostname. Zero CORS issues.

myapp.stunl.io/ localhost:3000 (React)
myapp.stunl.io/api localhost:8080 (Go API)
myapp.stunl.io/admin localhost:3001 (Admin)
myapp.stunl.io:10042 localhost:5432 (Postgres TCP)
$ stunl -id myapp -ports 'web:3000,api:8080,admin:3001,db:5432:tcp'

Free tier available · Pro from $10/mo · No session limits

HTTP/HTTPS WebSocket TCP UDP Auto TLS

Don't need all that?

Just share what you built

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
✓ https://your-app.stunl.io
Share this link with anyone in the world

Works with everything you build

Streamlit Gradio Next.js React FastAPI Flask Django Jupyter Vite Express

Built with Cursor, Claude, Replit, or v0? This is for you.

Built for the agentic era

Talk to your AI agents from anywhere

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
✓ https://my-agent.stunl.io — reachable from anywhere

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.

── need to expose multiple services? keep scrolling ──

The Multi-Service Problem

Modern apps have multiple services. Traditional tunnels make you juggle multiple URLs.

Without stunl
frontend-abc123.ngrok.io
api-def456.ngrok.io
admin-ghi789.ngrok.io
db-jkl012.ngrok.io:12345

4 tunnels, 4 random URLs

CORS issues, config churn, URL management

With stunl
myapp.stunl.io/
myapp.stunl.io/api
myapp.stunl.io/admin
myapp.stunl.io:10042

1 tunnel, 1 URL, 1 TLS cert

Zero CORS, stable endpoints, simple config

1
Hostname
Paths
4
Protocols
0
CORS Issues

Config-as-code for tunnels

Your Entire Stack in One File

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.

Before: memorize the flags
$ 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.

After: two words
$ stunl up
✓ Loaded stunl.yaml (3 services)
✓ https://myapp.stunl.io → web, api, db

Config lives in git. New teammate? stunl up. Done.

stunl.yaml checked into git
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"

Auto-Detect

stunl init scans your ports and generates the config for you

👥

Team-Ready

Check into git. New hire clones, runs stunl up, gets the full stack

🎯

Environments

stunl up --env demo for client demos, --env staging for QA

Simple, Transparent Pricing

Start free, upgrade when you need more. Unlimited bandwidth on Team & Business plans.

No credit card required for free tier

Free

For hobbyists and learning

$0 /month
  • 2GB bandwidth/month
  • 1 tunnels
  • 1 hour sessions
  • HTTP/HTTPS, WebSocket tunneling
  • Multi-port tunnels
  • HTTP Inspector with webhook verification
Start Free
Most Popular

Pro

For professional developers

$10 /month
  • 50GB bandwidth/month
  • 5 tunnels
  • No session time limits
  • HTTP/HTTPS, WebSocket, TCP, UDP tunneling
  • Multi-port tunnels
  • Custom tunnel IDs
  • Many domains to choose from
  • 3 reserved TCP/UDP ports
  • 2 reserved subdomains
  • Password protection
  • File sharing
  • Terminal sharing
  • HTTP Inspector with webhook verification
  • No browser warnings
Start 3-Day Free Trial

Team

For small teams

$25 /month
  • Unlimited bandwidth/month
  • 15 tunnels
  • No session time limits
  • HTTP/HTTPS, WebSocket, TCP, UDP tunneling
  • Multi-port tunnels
  • Custom tunnel IDs
  • Bring your own domain
  • 5 reserved TCP/UDP ports
  • 5 reserved subdomains
  • Password protection
  • File sharing
  • Terminal sharing
  • HTTP Inspector with webhook verification
  • No browser warnings
Start Team

Business

For enterprises

$59 /month
  • Unlimited bandwidth/month
  • Unlimited tunnels
  • No session time limits
  • HTTP/HTTPS, WebSocket, TCP, UDP tunneling
  • Multi-port tunnels
  • Custom tunnel IDs
  • Bring your own domain
  • 20 reserved TCP/UDP ports
  • 20 reserved subdomains
  • Password protection
  • File sharing
  • Terminal sharing
  • HTTP Inspector with webhook verification
  • No browser warnings
Start Business

Why Not ngrok?

The honest comparison

Free Tier

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

Paid Plans

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.

What You Can Actually Do

Real features, available today, not "coming soon"

🔗

Multi-Port Tunnels

Expose your frontend, backend, and database through a single tunnel. Path-based routing, subdomain routing, or round-robin load balancing.

Use case: Demo your full-stack app to clients with one command. Frontend on /, API on /api, admin on /admin.
📜

Project Config

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.

Use case: New teammate clones the repo, runs stunl up, and gets the full stack — frontend, API, database — instantly.
🔒

Reserved Ports

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.

Use case: Run a Minecraft server from home. Share stunl.io:10042 with friends - it never changes.
📁

File Sharing

Share files with a single command. Password protection, expiration dates, one-time downloads. No signup needed for recipients.

Use case: Send a 2GB build artifact to a colleague without uploading to Dropbox or dealing with email limits.
🖥

Terminal Sharing

Share your terminal session for pair programming. Multiple viewers, read-only mode, session recording. Access via web or SSH.

Use case: Debug a production issue with your teammate who's on the other side of the world.
🔍

HTTP Inspector & Debugger

More than request logging. Full debugging toolkit in the TUI and web portal.

  • Replay - Resend any request instantly
  • Edit & Replay - Modify method, headers, body first
  • Diff View - Compare two requests side-by-side
  • Webhook Verification - Stripe, GitHub, Slack, Twilio, Shopify, Linear, Discord
  • Export - cURL, HTTPie, fetch, HAR formats
  • Share - Generate a public link to share any captured request
  • Mock Responses - Return fake responses without hitting your server
  • Chaos Testing - Inject latency and random errors to test resilience
  • Breakpoints - Pause, inspect, and modify requests mid-flight
Use case: Test Stripe webhooks - verify signatures, edit amounts, replay failed payments.
🛡

OAuth Protection

Protect tunnels with GitHub or Google login. Restrict by email domain, specific users, GitHub org, or GitHub team.

Use case: Share a staging environment that only your team can access. Anyone else gets redirected to login.

WebSocket Support

Full WebSocket support out of the box. Subprotocols, custom headers, ping/pong. Works with Streamlit, Jupyter, Socket.io, anything.

Use case: Share a Streamlit dashboard with your team. Real-time updates just work.
💻

TUI Client

A beautiful terminal UI for managing tunnels. See stats in real-time, inspect requests, manage files - all without leaving your terminal.

Use case: Monitor bandwidth, active connections, and request logs while you develop. Keyboard-driven, mouse-supported.
👥

Team Collaboration

Invite teammates, share tunnel configs, reserve subdomains together. Slack/Discord webhooks, shared inspector rules, encrypted secrets, activity feeds, and team custom domains.

Use case: Your team shares a test environment. Inspector rules catch regressions, Slack alerts on team changes, secrets stay encrypted at rest.

Built For Real Work

What developers actually use tunnels for

🤖 AI Agents & Demos

Give your AI agents a permanent URL. Share Streamlit dashboards, Gradio UIs, or talk to your MCP servers from anywhere.

⚡ Skip Deployment

Don't want to learn Vercel or AWS? Run from your laptop, share the link. Done.

📱 Test on Real Devices

See your app on your phone or tablet. Real HTTPS URL, not localhost hacks.

🛠 Local Development

Test webhooks, share WIP with clients, access your dev server from mobile.

🏠 Home Lab

Expose services without port forwarding. Plex, Home Assistant, game servers.

🚀 Demos & Presentations

Show your work to clients without deploying. Multi-port for full stack demos.

🔧 Debugging Production

Tunnel into production databases or services for debugging. TCP tunnels + SSH.

🤝 Pair Programming

Share your terminal session. They can watch or type. No VS Code Live Share needed.

📦 File Transfer

Send large files without uploading to the cloud. Password protect, set expiry.

🔔 Webhook Development

Test Stripe, GitHub, Slack webhooks. Verify signatures, replay failures, compare payloads.

🎮 Game Servers

Host Minecraft, Valheim, or any game server from home with reserved UDP ports.

🔐 Security Testing

pentest.run domain for professional engagements. TCP/UDP for any protocol.