viaduct.sh logo

Your localhost, at a public URL

Give a web app running on your machine a public HTTPS URL, for demos, webhooks, or sharing work in progress. Free to use on our hosted service, completely open source, and yours to self-host.

bash

One command. A live public URL in under a second. Read the docs →

How it works

Your machine dials out

  1. 1

    You dial out

    Your machine opens one outbound connection. No inbound ports.

  2. 2

    You get a URL

    The server hands back a public HTTPS address.

  3. 3

    Traffic flows back

    Visitors hit it and requests ride the tunnel to your localhost.

Inspect

Watch every request as it happens

Add --inspect and viaduct prints each request live: method, path, status, and timing. Ideal for debugging webhooks without leaving your terminal.

Open source

Built in the open

Completely open source: around 2,200 lines of Python, two dependencies, MIT licensed. The hosted service is free, with no accounts. Read it, fork it, send a patch.

$ git clone https://github.com/webmull/viaduct

Self-hosting

Easiest on a DigitalOcean droplet

viaduct.sh is free and hosted, but the whole thing is yours to run. One Ubuntu droplet and one script sets up Caddy, wildcard TLS, systemd, and the firewall for you. A 1 GB droplet is plenty, and the same script rehearses locally first.

Deployment guide

Install

Up and running in two commands

Requires Python 3.11+ and pipx.

$ pipx install git+https://github.com/webmull/viaduct
$ viaduct http 8080

That second command uses our free hosted service, no signup. Prefer your own? It is the same tool, self-hosted (below). Full usage lives in the README on GitHub.