Tunnel to your localhost

Get a public HTTPS URL for your local dev server in seconds. Test webhooks, share demos, debug integrations.

$curl -fsSL https://taupi.dev/install.sh | bash
$taupi tunnel 3000

No account required. Works immediately.

terminal
$ taupi tunnel 3000
Status connected
URL https://bafoli.taupi.dev
Target localhost:3000
14:32:01 POST /api/webhooks 200 12ms
14:32:05 POST /api/webhooks 200 8ms
14:32:09 GET /api/health 200 2ms

What you can do

Pick a use case. See how it works.

Test webhooks without deploying

Stripe sends a checkout event. GitHub pushes a commit hook. Slack delivers an interaction payload. They all need a public URL — and you're on localhost. Start a tunnel, paste the URL into your provider's dashboard, and receive every event on your machine. Use --inspect to see full request bodies and headers in your terminal.

Read the guide
taupi --inspect
URL https://myapp.taupi.dev
14:32:01 POST /api/webhooks/stripe 200 12ms
14:32:03 POST /api/webhooks/stripe 200 9ms
14:32:05 POST /api/webhooks/github 200 3ms
14:32:08 POST /api/webhooks/slack 200 6ms
14:32:12 POST /api/webhooks/polar 201 14ms

Works with everything you use

Any service that sends HTTP requests to your app works through a Taupi tunnel.

S

Stripe

Payment webhooks

G

GitHub

Push & PR hooks

S

Slack

Bot interactions

T

Twilio

SMS & voice callbacks

R

Resend

Email event hooks

P

Polar

Subscription events

V

Vercel

Deploy hooks

L

Linear

Issue webhooks

S

Supabase

Database triggers

A

Auth0

Auth callbacks

S

Shopify

Store webhooks

D

Discord

Bot & interaction hooks

Plus any tool that sends HTTP — your own microservices, CI pipelines, AI model callbacks, IoT devices.

Built for how you actually develop

One command to get a public URL. A few flags to make it fit your workflow.

Stable URLs with named subdomains

Pick a subdomain, register it, and it stays yours. Paste it into your Stripe dashboard, your OAuth config, your Slack app settings. It works tomorrow, next week, on your other machine.

$ taupi subdomain register myapp
registered myapp.taupi.dev
$ taupi tunnel -s myapp 3000
URL https://myapp.taupi.dev

Multiple services at once

Frontend on 3000, API on 8080, admin on 3001. Each gets its own tunnel, its own subdomain, its own public URL. Run them in separate terminals or background them.

$ taupi tunnel -s app 3000
$ taupi tunnel -s api 8080
$ taupi tunnel -s admin 3001
3 tunnels active

Inspect every request

Pass --inspect to see full headers, bodies, status codes, and timing for every request through your tunnel. No extra tools, no proxy setup.

$ taupi tunnel --inspect 3000
Headers stripe-signature: t=1716...
Body {"type":"checkout.session.completed"}
Status 200 in 14ms

Stays alive while you work

Auto-reconnect handles Wi-Fi drops and laptop sleep. The tunnel picks back up where it left off on the same subdomain. No manual restart, no lost webhook URL.

14:32 connected myapp.taupi.dev
15:47 reconnecting...
15:47 connected myapp.taupi.dev
18:03 still running, 847 requests served

Simple pricing

Start free. Upgrade when you need more.

MonthlyYearlysave 17%

Free

$0forever
  • +1 tunnel
  • +5-minute sessions
  • +Random subdomains
  • +HTTPS included
Get started

Pro

$50/year
  • +5 simultaneous tunnels
  • +Persistent tunnels
  • +Up to 20 custom subdomains
  • +Request inspector
  • +Priority support
Go Pro