One command. RevNet punches through NAT, firewalls, and routers — giving your localhost a permanent public URL. No accounts. No config. No nonsense.
Register a name, get a URL. Your local service is publicly reachable within seconds — no DNS changes, no port forwarding, no router config.
Forward full HTTP traffic with header passthrough, or tunnel raw TCP for databases, SSH, Redis, game servers, and anything that speaks TCP.
Watch every request hit your tunnel in real time. Method, path, status code, latency, and byte counts — all rendered in a rich terminal dashboard.
A long-lived WebSocket with ping/pong keepalive and exponential backoff reconnect logic. Your tunnel stays up even on flaky networks.
Need a tunnel that self-destructs? Pass --time 60 and the server closes it automatically after 60 minutes. Perfect for demos.
Pick a name with --name for a predictable, shareable URL — or let RevNet generate a random 8-character slug.
The rev binary opens a persistent WebSocket to the RevNet relay and registers your tunnel name, protocol, and target.
A visitor hits your public URL. The FastAPI relay serializes the full HTTP request and pushes it down the WebSocket to your waiting client.
The client forwards the request to your local service via loopback, captures the response, and sends it back through the tunnel in milliseconds.
Everything runs through a single command. No config files, no daemons, no installers — just rev tunnel and a target.
Download the binary for your platform, put it anywhere, open a terminal, and you're done. No install wizard. No account. No config file.
chmod +x rev before the first use.If you see the usage output, RevNet is ready. If Windows says it blocked the file, click "More info" then "Run anyway" — the binary is unsigned but safe.
Use this for anything that runs in a browser — websites, APIs, webhooks, dev servers. RevNet gives it a public URL instantly.
Replace 3000 with whatever port your app is running on. RevNet will print a public URL — share it with anyone and they'll hit your local app.
Use this for databases, SSH, or any non-HTTP service. The relay forwards raw data — RevNet doesn't inspect or modify it.
The other person connects to revnet.my.to on the port assigned by the relay — RevNet will show you that port in the terminal after connecting.
By default RevNet picks a random 8-character slug. Use --name to get a stable, readable URL instead.
| Command | Resulting URL |
|---|---|
| rev tunnel http localhost:3000 | revnet.my.to/x7k2mq9a |
| rev tunnel http localhost:3000 --name demo | revnet.my.to/demo |
Pass --time with a number of minutes to automatically kill the tunnel after that duration. Good for demos or sharing something temporarily.
When the time is up the relay sends an expiry signal and the tunnel closes cleanly. The URL stops working and the terminal exits. You don't need to manually stop it.
While a tunnel is open, RevNet shows a live terminal panel with every request that comes through — method, path, status code, latency, and byte count.
| Column | What it means |
|---|---|
| Time | When the request arrived (HH:MM:SS) |
| Method | HTTP method — GET, POST, DELETE, etc. |
| Path | The URL path the visitor requested |
| Status | Response code your app returned — 200 is good, 500 is a crash |
| Duration | How long your app took to respond |
| Bytes | Total data transferred for that request |
Press Ctrl+C at any time to close the tunnel and exit. The public URL stops working immediately.
If someone visits a RevNet URL and something goes wrong, they'll see one of these responses instead of your app.
| Status | When it shows | What to do |
|---|---|---|
| 404 | The tunnel name doesn't exist — either it was never opened or it already closed. | Make sure RevNet is running and the name in the URL matches what you used with --name. |
| 502 | The tunnel is connected but your local app isn't responding on that port. | Check that your local server is still running. Restart it if needed — RevNet will auto-reconnect. |
| 503 | The relay couldn't reach the rev client — connection dropped mid-request. | Usually temporary. RevNet reconnects automatically within a few seconds. |
No. Open the binary and run — nothing to sign up for.
No. Names are unique per relay session. If the name is taken, RevNet will refuse the connection and tell you.
The tunnel closes immediately. The public URL stops working. Open RevNet again with the same --name to restore it.
Yes. The relay runs over HTTPS and the WebSocket connection uses WSS (TLS). Traffic between the relay and your machine is encrypted in transit.
Press Ctrl+C in the terminal where RevNet is running. It shuts down cleanly.