News
Welcome to viaduct.sh
Simple, open-source tunneling: one command gives a service on your machine a public HTTPS URL.
viaduct.sh is a free, open-source reverse tunnel. Run one command and a service on your laptop gets a public HTTPS URL, with no inbound ports, no port forwarding, and no NAT configuration to wrestle with.
$ pipx install viaduct-sh $ viaduct http 8080 Forwarding https://sunny-otter.viaduct.sh → http://127.0.0.1:8080
That prints a fresh URL and forwards traffic straight to your local port until you stop it. It is handy for sharing work in progress, testing a webhook, or showing something on a phone without deploying anything first.
Free to use, and yours to run
The hosted viaduct.sh service is free, with no accounts and no signup. It is also completely open source, so if you want full control you can spin up your own in a few minutes on one small VPS. The client points at the hosted server by default; a single flag points it at your own.
Small on purpose
viaduct is a deliberately small alternative to ngrok and frp: standard
library Python with only typer and rich as
runtime dependencies, no database, and no dashboards. The whole client and
server are plain asyncio you can read in an afternoon, so if it ever does
something surprising, you can go find out exactly why.
Pick a region
The hosted service runs nodes in five regions (London, New York, Singapore, Sydney,
and Bangalore). Add --region to run your tunnel through the one
nearest your traffic:
$ viaduct http 8080 --region nyc
Stable URLs and your own domain
Need the same URL every time, for a webhook or a long-lived demo? Add
--pin and the subdomain sticks across reconnects. Want your own
domain? Point a CNAME at your pinned tunnel and viaduct serves it with an
automatic certificate.
Coming from localtunnel?
localtunnel is a lovely, dead-simple way to grab a quick public URL, and viaduct owes a lot to that idea. viaduct aims a bit higher on features while staying just as quick to start:
- Self-host the whole thing. Run your own server on your own domain, or use the free hosted service. The code is the same either way, and open source.
- Stable URLs.
--pinkeeps the same subdomain across reconnects, and you can point your own custom domain at it. - Pick a region. The hosted service runs nodes in five regions, so you can route through the one nearest your traffic.
- Built to stay up. Automatic HTTPS, WebSocket support, a graceful drain on server restart, and automatic client reconnect with backoff.
- Read the whole thing. A couple thousand lines of standard-library
Python, on PyPI as
viaduct-sh, with no database or dashboards.
Try it
Install it, expose something, and send someone the link:
$ pipx install viaduct-sh $ python3 -m http.server 8080 $ viaduct http 8080
It is on PyPI as viaduct-sh, and the source is on
GitHub.
Read it, fork it, or run your own. Full setup is in the
docs.